Timer Interrupt(gcctest2.c)

Gast #236938
Lesenswert?

Tach :)

Ich sitze nun seit etwa zwei Stunden an meinem Interrupt Problem...
Auf Suche hab ich mich auch schon begeben, hier im Forum, google und
altavista. Rausgekommen ist nur, das in gcctest2.c anscheinend
eine led mithilfe des timerinterupts zum blinken gebracht wird.
Nun wäre diese Datei warscheinlich eine riesige Hilfe, da mein
Programm
ziemlich ähnlich funktionieren soll. Ich hab mir mittlereweilen schon
zwei alte WinAvr installationen gesaugt und nirgends ist die Datei
enthalten-hat die vielleicht noch jemand?

Falls das nicht der Fall ist, hier mal ein ausschnitt aus meinem
Programm..

#include <sig-avr.h>

SIGNAL(SIG_OVERFLOW1)
{
  PRINT("N");
  outp(0, TCNT1H);// Reset Timer
  outp(0, TCNT1L);
}
//..
main()
{
//------------------------
// Timer 1 init
//-----------------------

  outp(0, TCCR1A);
  outp(4, TCCR1B);// Prescaler /256
  outp(0, TCNT1H);
  outp(0, TCNT1L);

  sbi(TIMSK, TOIE1);//enable timer
  //.......
}

Das ist eigentlich alles, was mit dem Timer zu tun hat, und ich sollte
doch eigentlich immer mal wieder ein N über den uart bekommen-es tut
sich aber rein gar nichts. An der Funktion PRINT liegts nicht, die
läuft einwandfrei...Im Moment ist mir auch noch egal wieviele Male
ich den Interrupt bekomme, es soll sich einfach mal etwas tun...
Gast #236943
Lesenswert?

Hallo,

schreib statt
#include <sig-avr.h>
erst mal
#include <avr/signal.h>
#include <avr/interrupt.h>

und probiers noch mal.

Bei sei() gibts deshalb eine Fehlermeldung weil sei() in interrupt.h
definiert ist.

Und:
Um mit Interrupts arbeiten zu können muss immer das Globale Interrupt
Flag gesetzt sein.

Gruß
Christian
Gast #236945
Lesenswert?

ok, hab nun die interrupt.h auch noch eingebunden, hab die wohl
übersehen :S

Mein gcc ist aber wirklich ein antikes Stück, avr/interrupt.h
gibts noch gar nicht. Welche Version es ist kann ich nicht wirklich
sagen, ich hab den sicher vor nem Jahr gedownloaded, dann ein Programm
angefangen und nun fertig geschrieben, desshalb verwende ich auch
keine
neuere Version. Nicht mal beim compilieren gibt der gcc seine version
bekannt :(

Wie auch immer das Problem mit dem Interrupt besteht immer noch,
obwohl
ich nun auch sei(); verwende...

>Viele Fragen würden sich nach Lesen des Tutorials erledigen ...

Kenne ich sehr wohl nur habe ich da anscheinend nicht alles gelesen,
sondern nur ab den verschiedenen Registern, um die Timer zu setzen,
dass da oben noch #include <avr/interrupt.h> stand sah ich leider nicht
...
Gast #236948
Lesenswert?

AAAAAARRGG ich vollidiot lol :D

Ich hab sei(); erst nach meinem üblichen ata init eingefügt.
Naja und zu meinen Tests hab ich die hdd eben nicht immer
angeschlossen,
folglich auch kein erfolgreicher init damit auch kein sei();
Naja jedefall gehts jetzt suppi, muchas gracias ;)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren