Hallo,
Bin grade dabei einen Würfel mit einem Attiny 2313 zu programmieren.
Dabei soll Zuerst ein taster gedrückt, --> Loswürfeln.
Wird der Taster losgelassen, so bleibt der Würfel langsam stehen.
Wenn er steht, binkt das Ergebniss.
Nach einiger zeit soll er sich selbts wieder abschalten.
Diese zeit soll durch einen Timer eingestellt werden.
Beim 1. Würfeln beim anlegen der Spannung würfelt er richtig, danach
hört er nicht mehr auf zu blinken.
--> ISR Wird nicht mehr aufgerufen.
Nun muss es einen bedeutenden Unterschied zwischen der ersten
Initialisierung:
1 | TCCR1A &= (0<<COM1A0)|(0<<COM1A1); // CTC Modus
|
2 | TCCR1B &= (0<<ICNC1)|(0<<ICES1)|(0<<CS11); // Prescaler 1024
|
3 | TCCR1B |= (1<<WGM12)|(1<<CS10)|(1<<CS12);
|
4 | OCR1A = 0x0020;
|
5 | TIMSK |= (1<<OCIE1A); //Compare Interrupt Enable
|
6 | sei(); //Globale Interrupts ein
|
Und allen weiteren Initialisierungen geben:
1 | TCCR1A &= (0<<COM1A0)|(0<<COM1A1); // CTC Modus
|
2 | TCCR1B &= (0<<ICNC1)|(0<<ICES1);
|
3 | TCCR1B |= (1<<WGM12);
|
4 | TCNT1=0x0000; //Zähler rücksetzen
|
5 | OCR1A = 0x0020;
|
6 | TIMSK |= (1<<OCIE1A); //Compare Interrupt Enable
|
7 | sei(); //Globale Interrupts ein
|
8 | TCCR1B |= (1<<CS10)|(1<<CS12); // Timer Starten
|
9 | TCCR1B &= (0<<CS11);
|
Ich finde ihn nicht.
Muss ich eventuell irgendein Bit, das bei jedem das bein Aufruf der ISR
gesetzt wird immer wieder zurücksetzen? oder Ähnliches?
Grüße
Matze