Forum: Compiler & IDEs Eclipse+Interrupt


von Benedikt L. (Gast)


Lesenswert?

Hallo zusammen,

ich verzweifle gleich.

Ich bin im Moment dabei von AVR-Studio auf Eclipse umzusteigen.
Im Moment löst mir bei folgendem Programm der TIMER1_OVF Vector nicht 
aus, obwohl das Flag im TIFR gesetzt wird. Nun hab ich gelesen das  bei 
früheren Versionen ( heute auch noch?) ein Problem mit dem Linker 
besteht.
Ich verwende das AVR-Plugin Version: 2.3.4.20100807PRD
Wenn ich mit der Maus auf ISR(TIMER1_OVF_vect) zeige zeigt er mir an das 
das durch __vector_8 ersetzt wird. Im Datenblatt des Mega16 ist der 
gewünschte Interrupt jedoch die Nummer 10?

#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>


ISR(TIMER1_OVF_vect) // Timer 1 Overflow Interrupt
{
TCNT1=32000 ;
}


int main (void)
{
  LED_DDR = 0x0F;
  TASTER_DDR =0x00;//Tasterport als Input anwählen
  TASTER_PORT = 0xFF; // PULL-UP an

  TCNT1=32000;
  TCCR1B |=(1<<CS12);
  TIMSK |=(TOIE1);
  sei();
  while(1);

  return 0;
}

Kann jemand dazu eine aussage machen?

mfg Benedikt

von Uhu U. (uhu)


Lesenswert?

Ich weiß jetzt nicht, was du für einen Modus eingestellt hast - etwas 
auführlichere Kommentierung stünde deinem Programmierstil ganz gut an -, 
aber ich hab das mit TIMER1_COMPA_vect und CTC mode mit Eclipse gemacht 
- allerdings mit ASM.

Mit Eclipse hat das sicherlich nichts zu tun, das ist Sache des gcc, den 
du verwendest und mit einem Linkerfehler hat es sicherlich nichts zu 
tun.

von ... (Gast)


Lesenswert?

Benedikt Lippert schrieb:
> Wenn ich mit der Maus auf ISR(TIMER1_OVF_vect) zeige zeigt er mir an das
> das durch __vector_8 ersetzt wird. Im Datenblatt des Mega16 ist der
> gewünschte Interrupt jedoch die Nummer 10?

Dann hast Du das Datenblatt falsch gelesen oder Du hast das falsche 
Datenblatt. Beim Mega16 hat laut Seite 45 der TIMER1_OVF_vect die 
Vectornummer 9. Da das DB mit 1 anfängt zu zählen, bei der avr-libc aber 
mit 0 angefangen wird, ist __vector_8 völlig korrekt.

von Benedikt L. (Gast)


Lesenswert?

Hi, sorry mir ist der Fehler selbst aufgefallen, nachdem ich noch eine 
Stunde rumprobiert habe....

oben fehlt beim TIMSK zwei mal das <<

Und im Datenblatt hab ich mich auch noch verlesen.
Heut war einfach nicht mein Tag:-)



Entschuldigt  die Aufregung!



mfg Benedikt

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.