Hi leute, ich bins mal wieder und habe ein PIC-problem:
ich hab die Lite-Version vom Hi-Tech C Compiler ( Microchp hat ja kein C16 Compiler). beutze einen PIC16F689
Der Compiler funktioniert gut, mein 16x2 LCD funktioniert wie es soll. sobald ich aber interrupts hinzufüge wie laut Handbuch angegeben, stürzt "cgpic.exe", ab und der build failed!
Bild hier
hier das Output-Window:hier der Quellcode:Code:Build D:\Robotik\Assembler\PIC16F689\UART_C for device 16F689 Using driver C:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe Make: The target "D:\Robotik\Assembler\PIC16F689\UART_C.p1" is out of date. Executing: "C:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe" --pass1 D:\Robotik\Assembler\PIC16F689\UART_C.c -q --chip=16F689 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" Executing: "C:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe" -oUART_C.cof -mUART_C.map --summary=default --output=default UART_C.p1 --chip=16F689 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s" (1273) Omniscient Code Generation ist in der Lite Version nicht verfügbar (warning) HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.70 Copyright (C) 2009 Microchip Technology Inc. ********** Build failed! ********** das "(1273) Omniscient Code Generation ist in der Lite Version nicht verfügbar (warning) " kommt jedesmal, auch bei erfolgreichem build. (wegen Lite-Version eben).im Handbuch für den C-Compiler steht folgendes Beispiel:Code:#include <htc.h> __CONFIG(WDTDIS & XT & UNPROTECT ); #define _E RC5 #define _RS RC4 #define _D PORTC void interrupt ISR(); void init(void); void lcd_init(); void lcd_out(char); void lcd_cmd(char); void lcd_char(char); void lcd_enter(); void UART_init(); void wait(int); void main(){ init(); lcd_init(); UART_init(); GIE=1; while(1){} } void interrupt ISR(void){ if (RCIE && RCIF) { lcd_char(RCREG); RCIF=0; } return; } void init(){ TRISC=0; ANSEL=0; ANSELH=0; } void UART_init(){ TXSTA=0x20; RCSTA=0x90; SPBRG=0x0C; RCIE=1; PEIE=1; } // -------------------------------------------------------------------- // ---------------------ab hier uninterressant---------------------- // -------------------------------------------------------------------- void lcd_init(){ _D=0; lcd_cmd(0x28); lcd_cmd(0x0F); lcd_cmd(0x01); wait(100); lcd_cmd(0x06); lcd_char('O'); lcd_char('K'); return; } void lcd_cmd(char Data){ _RS=0; lcd_out(Data); return; } void lcd_char(char Data){ _RS=1; lcd_out(Data); return; } void lcd_out(char Data){ char Data2=Data&0xF0; _D=_D&0xF0; Data2=Data2>>4; _D=_D=Data2|_D; lcd_enter(); _D=_D&0xF0; _D=_D|(Data&0x0F); lcd_enter(); return; } void lcd_enter(){ char pause=0x1F; _E=1; for(pause=0x1F;pause>0;pause--){ } _E=0; return; } void wait(int Zeit){ int i; for(i=0;i<Zeit;i++){ asm("nop"); } }hat jemand schonmal probleme bei Interrupts gehabt mit dem Hi-Tech C-compiler ?? bin für Ideen und Anregungen offen..Code:int tick_count; void interrupt tc_int(void) { if (T0IE && T0IF) { T0IF=0; ++tick_count; return; } // process other interrupt sources here }
Gruß Jango







 
			
			 
					
					
					
						 Zitieren
Zitieren

Lesezeichen