Na gut, die Delays scheinen tatsächlich ziemlich buggy zu sein, dann schmeiß ich die gerne raus (das Buch behalte ich noch ein paar Tage....
Den Quelltext habe ich jetzt schon ein wenig reduzieren können, die aktuelle Version werde ich jetzt hier posten und weiterhin um Hilfe mit den Interrupts bitten - denn das klappt alles noch nicht....
Weiterhin vielen Dank für eure Hilfe,Code:#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/sleep.h> #include <inttypes.h> #include <avr/signal.h> #include <inttypes.h> #include "main.h" #include "lcd_functions.h" #include "lcd_driver.h" #include <avr/delay.h> #define pLCDREG_test (*(char *)(0xEC)) volatile PGM_P statetext; void PinChangeInterrupt(void) { statetext = PSTR("wand"); LCD_puts_f(statetext, 1); LCD_Colon(0); } SIGNAL(SIG_PIN_CHANGE0) { PinChangeInterrupt(); } SIGNAL(SIG_PIN_CHANGE1) { PinChangeInterrupt(); } /***************************************************************************** * * Function name : main * * Returns : None * * Parameters : None * * Purpose : Contains the main loop of the program * *****************************************************************************/ int main(void) { LCD_Init(); DDRB = 0x00; // set Port B for input PORTB = 0xFF; // Enable pin change interrupt on PORTB PCMSK1 = (1<<PCINT12)|(1<<PCINT11)|(1<<PCINT10)|(1<<PCINT9); EIMSK = (1<<PCINT1); statetext = PSTR("1"); // Program initalization sei(); while (1) // Main loop { statetext = PSTR("1"); LCD_puts_f(statetext, 1); LCD_Colon(0); } //End Main loop return 0; }
cheers,
Flo.







Zitieren
Lesezeichen