Hallo,
nach einigen Arduino Experimenten habe ich mich nun mal an die
Programmierung mit einem Programmiergerät gewagt. Das ganze klappt auch
ganz gut. Ein Problem habe ich lediglich hinsichtlich der Interrupts.
Ich habe mein Programm nun schon so weit gekürzt, dass es ledglich
folgende Funktionalität erfüllen soll:
Am Datenausgang des Pins D2 liegt nach Initialisierung eine Spannung an,
eine LED wird somit zum leuchten gebracht.
Die ISR soll ca. alle 500ms Sekunden aufgerufen werden und die Spannung
vom o.g. Pin nehmen.
Problem ist nun, dass die Spannung leider bestehen bleibt, die ISR also
anscheinend nicht aufgerufen wird. Im Folgenden zeige ich noch kurz mein
Programm:
1 | int main(void)
|
2 | {
|
3 | cli();
|
4 | DDRD|=(1<<2); //Setze DD2 als Ausgang
|
5 | PORTD=0b00000100; //Setze Keinen Output-Pin auf High
|
6 | TCCR1B = (1<<CS02); //Prescaler auf 256 setzen
|
7 | TCNT1=15625; //Setze Timer auf 15625
|
8 | TIMSK = (1<<TOIE1); //Interrupt Aktivieren
|
9 | sei();
|
10 |
|
11 | while(1){
|
12 | asm ("nop");
|
13 | }
|
14 | return 0; /* never reached */
|
15 | }
|
16 |
|
17 | ISR(TIMER1_OVF_vect)
|
18 | {
|
19 | PORTD=0b00000000;
|
20 | TCNT1=15625;
|
21 | }
|
Ich hoffe jemand kann mir helfen, sitze schon viel länge dran als
notwendig :D
PS. Es handelt sich um einen Attiny 2313
Gruß
Dede