timer 1 interrupt

Gast #1744612
Lesenswert?

ich weiß das es zu dem thema schon einige beiträge gibt aber ich bin 
einfach zu doof um meinen timer zum laufen zu bewegen bzw meine 
interruptroutine
ich verwende einen atmega8

währe nett wenn jemand sich mal mienen murx anschauen könnte



void ISR_TIMER1 ()
{
  TIMSK |= (1<<OCIE1A) | (1<<OCIE1B);  //Timer Itnerrupt enable
  TCNT1H=0;  //  Timer Register  High auf 0 Setzen
  TCNT1L=0;  //  Timer Register  Low auf 0 Setzen
  TCCR1B |= (1<<CS12)|(1<<CS10); // Timer Starten mit Vorteiler 1024
  TCNT1<=3600;  // Solange Das Register bis 3600 gezählt hat.

}
ISR (TIMER1_COMPA_vect)
{
  hauptprogramm();
  reti();
}
Gast #1744620
Lesenswert?

also mein kopiler sagt das das so funktioniert das is dan das
TCNT1H=0 &  TCNT1L=0 register zusemmen aber an meinem restlichen 
programm liegts nicht das funktioniert auserhalb des interrupt 
einwandfrei
Gast #1744660
Lesenswert?

steve schrieb:
> c kann ich rechtschreibung auch es kommt keine warnung und satzzeichen
> konnte ich noch nie leiden

Tja, komm wieder wenn du bereit bist, die beim Stellen der Frage 
wenigstens ein Funken Mühe zu geben!

Achja, und wenn du c könntest, würdest du weder das hier:

Oliver schrieb:
> TCNT1<=3600;

noch sowas hier:

steve schrieb:
> ISR (TIMER1_COMPA_vect)
> {
>   hauptprogramm();
>   reti();
> }

jemals schreiben!
#1744670
Lesenswert?

Klaus schrieb:

> Achja, und wenn du c könntest, würdest du weder das hier:
>
>> TCNT1<=3600;
>
> noch sowas hier:
>
>> ISR (TIMER1_COMPA_vect)
>> {
>>   hauptprogramm();
>>   reti();
>> }
>
> jemals schreiben!

Und das schon gleich gar nicht

void ISR_TIMER1 ()
{
  TIMSK |= (1<<OCIE1A) | (1<<OCIE1B);  //Timer Itnerrupt enable

....

ISR (TIMER1_COMPA_vect)

....


Compare für A und B freigeben, aber nur einen Handler für A haben. 
Klassischer Fall für einen Reset.
#1744673
Lesenswert?

steve schrieb:
> und wenn du das tutorial gelesen hättest wüstest du das TCNT1 ein 16-bit
> register ist  ich wär dir dankbar wenn du dich mit deinem
> unkwualifizierten senf mal da raushalten würdest

bild ich mir das ein, oder häufen sich hier in letzter Zeit solche 
netten arroganten Zeitgenossen? Die einfach nicht einsehen wollen, dass 
sie etwas falsch machen, und lieber gleich pampig werden?
Gast #1744681
Lesenswert?

Justus Skorps schrieb:
> bild ich mir das ein, oder häufen sich hier in letzter Zeit solche
> netten arroganten Zeitgenossen? Die einfach nicht einsehen wollen, dass
> sie etwas falsch machen, und lieber gleich pampig werden?

seuftz  Nein das bildest du dir leider nicht ein. Das beobachtet man 
hier immer öfters. Aber auch in anderen Teilen der Gesellschaft. Im 
Sportverein treffe ich auch immer öfters auf Leute, die nicht mehr daran 
interessiert sind Tipps auszutauschen und dazuzulernen, sondern nur noch 
den anderen Beweisen wollen, dass sie alles wissen. Traurig, das 
ganze...
#1744701
Lesenswert?

steve schrieb:
> ich habs hinbekommen auch ohne hilfe und es funkztioniert ohne weiteres
> mit
> TCNT1 aber egal

Das ist auch nicht der springende Punkt.
Der springende Punkt ist: Was erwartest du von
1
  TCNT1 <= 3600;  // Solange Das Register bis 3600 gezählt hat.

Diese Anweisung erfüllt keinen Zweck. Es wird verglichen ob TCNT1 
kleiner oder gleich 3600 ist. Schön. Aber was passiert mit dem Ergebnis 
dieses Vergleichs? Nichts, gar nichts. Diese Anweisung tut wortwörtlich 
nichts. Dein Kommentar suggeriert aber, dass du dir davon irgendetwas 
erhoffst.

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