C code now doesnt seem right  on MPALB X IDE V3.61 - Page 1
Forum section: electronics / general

author: ocset
author_rank: Super Contributor
timestamp: March 08, 2018, 09:40:35 am
content: Hello,Please advise why this code is now full of "unable to reslove identifier LATA0" etc etc , error messages.This code was fine before.It was running fine on the microI am sure i did not get such errors before.Its XC8 C for PIC16F18856Code://pwm dimming//PIC16F18856//XC8 compiler//MPLAB X V3.61//date 10 oct 2017// PIC16F18856 Configuration Bit Settings//// 'C' source line config statements// CONFIG1#pragma config FEXTOSC = OFF // External Oscillator mode selection bits (Oscillator not enabled)#pragma config RSTOSC = HFINT1 // Power-up default value for COSC bits (HFINTOSC (1MHz))#pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2)#pragma config CSWEN = OFF // Clock Switch Enable bit (The NOSC and NDIV bits cannot be changed by user software)#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (FSCM timer disabled)// CONFIG2#pragma config MCLRE = OFF // Master Clear Enable bit (MCLR pin function is port defined function)#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)#pragma config LPBOREN = OFF // Low-Power BOR enable bit (ULPBOR disabled)#pragma config BOREN = ON // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN bit is ignored)#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR) set to 1.9V on LF, and 2.45V on F Devices)#pragma config ZCD = OFF // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR.)#pragma config PPS1WAY = OFF // Peripheral Pin Select one-way control (The PPSLOCK bit can be set and cleared repeatedly by software)#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will not cause a reset)// CONFIG3#pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS)#pragma config WDTE = OFF // WDT operating mode (WDT Disabled, SWDTEN is ignored)#pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%); software control; keyed access not required)#pragma config WDTCCS = SC // WDT input clock selector (Software Control)// CONFIG4#pragma config WRT = OFF // UserNVM self-write protection bits (Write protection off)#pragma config SCANE = not_available// Scanner Enable bit (Scanner module is not available for use)#pragma config LVP = OFF // Low Voltage Programming Enable bit (High Voltage on MCLR/Vpp must be used for programming)// CONFIG5#pragma config CP = OFF // UserNVM Program memory code protection bit (Program Memory code protection disabled)#pragma config CPD = OFF // DataNVM code protection bit (Data EEPROM code protection disabled)// #pragma config statements should precede project file includes.// Use project enums instead of #define for ON and OFF.#include <xc.h>#include <stdint.h>#define _XTAL_FREQ 4000000uint8_t count;uint8_t count1;uint8_t count2;void main(void) {//Setup portsTRISA = 0x30; //ADC INSTRISB = 0x08; //ZCD & DALIRX..really 0x09TRISC = 0x00; //SELECTANSELA = 0x00; //ADC INsANSELB = 0x00;ANSELC = 0x00;WPUA = 0x00;ODCONA = 0x00;SLRCONA = 0x00;INLVLA = 0x00; //ST?CCDPA = 0x00;CCDNA = 0x00;WPUB = 0x00;ODCONB = 0x00;SLRCONB = 0x00;INLVLB = 0x00; //ST?CCDPB = 0x00;CCDNB = 0x00;WPUC = 0x00;ODCONC = 0x00;SLRCONC = 0x00;INLVLC = 0x00; //ST?CCDPC = 0x00;CCDNC = 0x00;INTCON = 0x00;CM1CON0 = 0x00;CM1CON1 = 0x00;CM2CON0 = 0x00;CM2CON1 = 0x00;PWM6CON = 0x00;PWM7CON = 0x00;ZCDCON = 0x00;//Initialize portsLATAbits.LATA0 = 0;LATAbits.LATA1 = 0;LATAbits.LATA2 = 0;LATAbits.LATA3 = 0;//LATAbits.LATA4 = 0; temp sensor input//LATAbits.LATA5 = 0; light sensor inputLATAbits.LATA6 = 1; //vmf pin FETLATAbits.LATA7 = 0;//LATBbits.LATB0 = 0; zero crossing inputLATBbits.LATB1 = 0;LATBbits.LATB2 = 0; //dali TX pin//LATBbits.LATB3 = 0; dali RX pinLATBbits.LATB4 = 0;LATBbits.LATB5 = 0;LATBbits.LATB6 = 0;LATBbits.LATB7 = 0;LATCbits.LATC0 = 0;LATCbits.LATC1 = 0; //pwm dimLATCbits.LATC2 = 0; //pulldown resistor not fittedLATCbits.LATC3 = 0; //pulldown resistor not fittedLATCbits.LATC4 = 0;LATCbits.LATC5 = 0;LATCbits.LATC6 = 0;LATCbits.LATC7 = 0;//5 second delayfor (count=1;count<=10;count++) {__delay_ms(10);}LATCbits.LATC1 = 0;__delay_ms(30);LATAbits.LATA6 = 0;__delay_ms(30);while(1){LATCbits.LATC1 = 0;__delay_us(10);LATCbits.LATC1 = 1;__delay_us(20);}return;}

author: BNElecEng
author_rank: Regular Contributor
timestamp: March 08, 2018, 10:17:49 am
content: I've copied your code and compiled it without any issues.I'm using MPLAB X IDE 4.01 with XC8 compiler version 1.45I did not make any changes, just created a new project with your code as the main.c source file.

author: Wilksey
author_rank: Super Contributor
timestamp: March 08, 2018, 06:42:12 pm
content: Make sure you have the right chip selected, most 16F chips don't support the LAT part of the port, that is the only thing that I can think of that would cause that issue, looks like the xc.h file is included, I usually put it before all of the config defines, not that it should make a difference to finding the LAT definition.