PIC16F877A + RS232

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F877A + RS232

Inlägg av sodjan »

De som finns i INC filen är primärt för MPASM, Xelup kör någon C-variant
(det har inte framgått vilken) och då gäller de namn som den kompilatorn
använder. Sen så är det möjligt att den aktuella kompilatorn överför CONFIG
inställningarna till någon assembler (jag hittar inte fel 800 i MPASM manualen).

> men ja får fel när ja skriver de i koden..

Du visar enbart felen, inte vad du faktiskt skrev i koden.
Var det enligt dokumentationen ?
janno
Inlägg: 434
Blev medlem: 11 oktober 2009, 07:34:45
Ort: Västerås

Re: PIC16F877A + RS232

Inlägg av janno »

Med tanke på outputen, ser det ut som "HI-TECH C Compiler", men jag kan ha fel.
Hur är projektet skapat? Har du använt wizarden eller skapat ett tomt projekt? Är rätt processor vald?
Verkar vara något grundläggande fel eftersom symbolerna inte hittas, verkar inte sökvägarna vara riktiga?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46954
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC16F877A + RS232

Inlägg av TomasL »

Nja, det är väl felaktiga symboler, vill minnas att de är definierade som Icecap skrev i inc-filerna.
Följaktligen lär inte kompilatorn hitta dem.

Föreslår att TS går tillbaka och startar från noll igen, och använder enklast möjliga exempel, såsom det jag postade innan.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F877A + RS232

Inlägg av sodjan »

> Nja, det är väl felaktiga symboler, vill minnas att de är definierade som Icecap skrev i inc-filerna.

*VILKA* jäkla INC filer ? Är du helt 100% säker på att du inte blandar ihop de
som kommer med MPASM med de som kommer tillsammans med Hitech-C ?

Notera :
The assembler is called ASPIC and is available to run on...
Blanda inte ihop det med MPASM.

Lite andra småsaker...

> #include <pic.h>

Så vitt jag förstår så ska du göra include på htc.h, sedan
fixar det sig så att det blir rätt filer i fortsättningen.
I detta fall kommer htc.h att göra include på pic.h som kommer
att göra include på pic168xa.h, förutsatt att du har angivit rätt "device"
i kompilatorn.

Kod: Markera allt

#if defined(_16F873A)	|| defined(_16F874A)	||\
    defined(_16F876A)	|| defined(_16F877A)
	#include	<pic168xa.h>
#endif
Från pic168xa.h (slutet):

Kod: Markera allt

...
...
#define CONFIG_ADDR	0x2007

/*osc configurations*/
#define RC		0x3FFF	// resistor/capacitor
#define HS		0x3FFE	// high speed crystal/resonator
#define XT		0x3FFD	// crystal/resonator
#define LP		0x3FFC	// low power crystal/resonator

/*watchdog*/
#define WDTEN		0x3FFF	// enable watchdog timer
#define WDTDIS		0x3FFB	// disable watchdog timer

/*power up timer*/
#define PWRTEN		0x3FF7	// enable power up timer
#define PWRTDIS		0x3FFF	// disable power up timer

/*brown out reset*/
#define BOREN		0x3FFF	// enable brown out reset
#define BORDIS		0x3FBF	// disable brown out reset

/*Low Voltage Programmable*/
#define LVPEN		0x3FFF	// low voltage programming enabled
#define LVPDIS		0x3F7F	// low voltage programming disabled

/*data code protected*/
#define DP		0x3EFF	// protect data code
// alternately
#define DPROT		0x3EFF	// use DP
#define DUNPROT		0x3FFF	// use UNPROTECT

/* Flash memory write enable/protect */
#define WRTEN		0x3FFF	/* flash memory write enabled */
#define WP1		0x3DFF  /* protect 0000 - 00FF */
#define WP2		0x3BFF  /* protect 0000 - 07FF(76A/77A) / 03FF(73A/74A) */
#define WP3		0x39FF  /* protect 0000 - 1FFF(76A/77A) / 0FFF(73A/74A) */

/*debug option*/
#define DEBUGEN		0x37FF	// debugger enabled
#define DEBUGDIS	0x3FFF	// debugger disabled

/*code protection*/
#define PROTECT		0x1FFF	/* protect program code */
#define UNPROTECT	0x3FFF	/* do not protect the code */
Så din __CONFIG ser i och för sig OK ut. från exemplet i manualen :

Kod: Markera allt

#include <htc.h>
__CONFIG(WDTDIS & HS & UNPROTECT);
Så det är sannolikt viktigt att du gör include på htc.h innan du
försöker sätta __CONFIG(...).

Min tolkning av det hela är att inte rätt include filer inkluderas.
Kan kanske vara ett felsinställd "device" i HiTech...

Notera ckså att fel [800] är förklarat i *HiTech-C* manualen :
(800) undefined symbol "*" (Assembler)
The named symbol is not defined in this module, and has not been specified GLOBAL.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46954
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC16F877A + RS232

Inlägg av TomasL »

*VILKA* jäkla INC filer ? Är du helt 100% säker på att du inte blandar ihop de
som kommer med MPASM med de som kommer tillsammans med Hitech-C ?
Nu kan jag inte hitta nånstans att TS använder Hitec-C, enbart ett antagande från janno.
Sedan är det inte helt ovanligt att 3djeparts kompilatorer använder uChips include-filer (och dess syntax).
ghu
Inlägg: 701
Blev medlem: 6 juni 2010, 14:28:18

Re: PIC16F877A + RS232

Inlägg av ghu »

I senaste versionerna av Hitech har man bytt headerfilerna. I filen pic16f877a.h kan man läsa nedanstående:
(Om man vill använda de gamla namnen så får man definiera macrot _LEGACY_HEADERS)

Kod: Markera allt

// Config Register: CONFIG
#define CONFIG               0x2007
// Oscillator Selection bits
// RC oscillator
#define FOSC_EXTRC           0xFFFF
// HS oscillator
#define FOSC_HS              0xFFFE
// XT oscillator
#define FOSC_XT              0xFFFD
// LP oscillator
#define FOSC_LP              0xFFFC
// Watchdog Timer Enable bit
// WDT enabled
#define WDTE_ON              0xFFFF
// WDT disabled
#define WDTE_OFF             0xFFFB
// Power-up Timer Enable bit
// PWRT disabled
#define PWRTE_OFF            0xFFFF
// PWRT enabled
#define PWRTE_ON             0xFFF7
// Brown-out Reset Enable bit
// BOR enabled
#define BOREN_ON             0xFFFF
// BOR disabled
#define BOREN_OFF            0xFFBF
// Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
// RB3/PGM pin has PGM function; low-voltage programming enabled
#define LVP_ON               0xFFFF
// RB3 is digital I/O, HV on MCLR must be used for programming
#define LVP_OFF              0xFF7F
// Data EEPROM Memory Code Protection bit
// Data EEPROM code protection off
#define CPD_OFF              0xFFFF
// Data EEPROM code-protected
#define CPD_ON               0xFEFF
// Flash Program Memory Write Enable bits
// Write protection off; all program memory may be written to by EECON control
#define WRT_OFF              0xFFFF
// 0000h to 00FFh write-protected; 0100h to 1FFFh may be written to by EECON control
#define WRT_256              0xFDFF
// 0000h to 07FFh write-protected; 0800h to 1FFFh may be written to by EECON control
#define WRT_1FOURTH          0xFBFF
// 0000h to 0FFFh write-protected; 1000h to 1FFFh may be written to by EECON control
#define WRT_HALF             0xF9FF
// In-Circuit Debugger Mode bit
// In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins
#define DEBUG_OFF            0xFFFF
// In-Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger
#define DEBUG_ON             0xF7FF
// Flash Program Memory Code Protection bit
// Code protection off
#define CP_OFF               0xFFFF
// All program memory code-protected
#define CP_ON                0xDFFF
janno
Inlägg: 434
Blev medlem: 11 oktober 2009, 07:34:45
Ort: Västerås

Re: PIC16F877A + RS232

Inlägg av janno »

Det jag antog med är följande rad "(1273) Omniscient Code Generation not available in Lite mode (warning)" vilket min HI-TECH C meddelar varje gång jag bygger ett projekt så sannolikheten är ganska hög.
Jag försökte provocera fram felet genom att flytta runt på __CONFIG samt lägga till pic.h i ett projekt jag håller på med just nu men inget gav något annorlunda fel än:

Kod: Markera allt

Error   [194] C:\Users\jn\Documents\mplab\7seg16F886\main.c; 1.14 ")" expected
Warning [349] C:\Users\jn\Documents\mplab\7seg16F886\main.c; 1.53 non-prototyped function declaration for "__CONFIG"
Error   [313] C:\Users\jn\Documents\mplab\7seg16F886\main.c; 1.53 function body expected
pic.h gjorde varken till eller från på resultatet.

ghu hann före med ett ganska trolig anledning, jag har nog en gammal ouppdaterad version (V9.80).
ghu
Inlägg: 701
Blev medlem: 6 juni 2010, 14:28:18

Re: PIC16F877A + RS232

Inlägg av ghu »

Man började med de nya headerfilerna i V9.81
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: PIC16F877A + RS232

Inlägg av sodjan »

OK.
Det är ju självklart att man måste följa den aktuella versionen som man har.
Jag har också 9.80 installerat i december-2010. Det verkar alltså ha hänt
saker efter det. Eftersom det saknas mycket info om vilken miljö Xelup kör
i så är det nog ingen annan än Xelup som kan reda ut detta... :-)
Xelup
Inlägg: 13
Blev medlem: 22 juni 2011, 11:50:21

Re: PIC16F877A + RS232

Inlägg av Xelup »

HEJ alla

Ser att ni har skrivit mkt, vill bara säga att de var fel på pic:arna.
Alltså samma fel på båda två.

Tack alla för att ni har tagit er tid. ha en fin dag.

mvh xelup
Christian
Inlägg: 86
Blev medlem: 3 november 2003, 22:54:49

Re: PIC16F877A + RS232

Inlägg av Christian »

Har du löst problemet?
Maila mig så har jag fungerande kod för din processor med Hi-techs kompilator..
Skriv svar