ITG-ABI 17/18 |
16.04.2018 |
Korrekturhinweise / Lösungsvorschlag |
|---|
Verwendeter µC: ATMEL AVR 8 Bit RISC.
Die AVR-Controller verfügen über einen Vorteiler, daher ist ein Zähler in der ISR oft nicht notwendig.
Zählwert: 150000
Vorteiler: 150000/65536 = 2,23 gewählt 8
OCR1A: (150000/8)-1= 18749
Probe: (18749+1)*8*1us=150ms
void init(){
TCCR1B |= 1<<WGM12; // CTC-Mode
TCCR1B |= 2; // Phi/8
TIMSK |= 1<<OCIE1A; Interrupt einschalten
OCR1A = 18749; // Vergleichswert
//sei(); // Globale ISR-Freigabe
}
Zählwert: 150000
Vorteiler: 150000/256 = 585,9 gewählt 1024
Vorsteller: 256-(150000/1024)= 109,51 gewählt 110
Probe: (256-110)*1024*1us= 149,5ms
void init() TCCR0B |= 5; // Phi/1024 TIMSK |= 1<<TOIE0; Interrupt einschalten TCNT0 = 110; // Vorstellen //sei(); // Globale ISR-Freigabe }

void muster_ausgeben(){
static unsigned char muster[]={0x00,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01};
PORTC = muster[blink_zaehler--];
}
void warte150ms(){
TCNT1 = 0; // 16Bit-Zähler läuft mit /8 Systemtakt
while(TCNT1<18750);
}