Hallo,
danke für eure Antworten...
@Hubert.G
Hast du schon mit einem von diesen Compiler Erfahrungen gesammelt und welchen könntest du weiter empfehlen?
@Felix G
ICh habe so einige Schwierigkeiten beim Compilieren, vielleicht liegt es auch an mir, aber wenn die Optimierung der Compilierung z.B.: auf Os, aber eigentlich funktioniert es nur mit O0, eingestellt ist funktioniert der Code nicht mehr richtig.
aktuelles Probelm:
Mittels einem Interrupt ein zyklisches Blinken "Heart Beat".
main.c:
isr.c:Code:#include <avr/io.h> #include "common.h" #include "isr.h" int main(void) { init_ISR(); DDRD = 0x10; PORTD = 0x10; // HeartLed DDRC = 0x1C; PORTC = 0x10; while(1) { if (Counter_X_20ms > 0x03) { if ( (PIND & 0x10) != 1 ) { PORTD |= 0x10; } } if (Counter_X_20ms < 0x02){ if ( (PIND & 0x10) != 1 ) { PORTD &= 0xEF; } } } return 0; }
Counter_X_20ms ist in der common.h als uint8_t definiert....Code:#include <avr/interrupt.h> #include <inttypes.h> #include <stdio.h> #include "common.h" void init_ISR(void) { sei(); TIMSK |= ( 0x01 << TOIE0 ) ; TCCR0 |= ( 0x01 << CS02 | 0x00 << CS01 | 0x01 << CS00 ) ; TCNT0 = 0x64; Counter_X_20ms = 0x00; } ISR(TIMER0_OVF_vect) { if ( Counter_X_20ms == 0x32 ) { // 1 sek Counter_X_20ms = 0x00; } else { Counter_X_20ms++; } TCNT0 = 0x64; TIFR |= ( 0x01 << TOV0 ) ; }
Dieser Code funktioniert eiwandfrei mit der CompilerStufe O0, aber mit allen anderen nicht mehr?
Vielleicht habe ich auch nur eine falsche Einstellung?
Danke
mfg Michael







Zitieren
Lesezeichen