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:
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;
}
isr.c:
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 ) ;
}
Counter_X_20ms ist in der common.h als uint8_t definiert....
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
Lesezeichen