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(); }
Ohne das ganze Programm zu sehen, ist es schwiering, etwas zu sagen, aber diese Zeile hier:
1 | TCNT1<=3600; // Solange Das Register bis 3600 gezählt hat. |
verwirrt doch etwas. Oliver
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
Wie wärs mal mit Rechtschreibung? Und Groß- und Kleinschreibung? Und Satzzeichen? Oliver schrieb: > TCNT1<=3600; // Solange Das Register bis 3600 gezählt hat. Dabei dürfte der Compiler eine Warnung ala "Statement without effect" oder so ähnlich ausgeben. Wie wärs denn mal mit einem C-Buch? Und dem AVR-GCC-Tutorial?
c kann ich rechtschreibung auch es kommt keine warnung und satzzeichen konnte ich noch nie leiden
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!
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
steve schrieb: > TCNT1 ein 16-bit > register ist Ich weiß wie viel Bit das Register hat. Aber in C ist es bei einer Zuweisung sowas von Egal, wieviele Bits man gerade zuweist...
steve schrieb: > also mein kopiler sagt das das so funktioniert Der Duden sagt auch, das "Die Banane schwamm über die Brücke." ein einwandfreier deutscher Satz ist. Trotzdem ist er unsinnig. Der Compiler kümmert sich nur um die Grammatik. Die Logik die in deinem Programm steckt, ist dein Bier. Und deine Logik ist einfach nur falsch.
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.
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?
ich habs hinbekommen auch ohne hilfe und es funkztioniert ohne weiteres mit TCNT1 aber egal
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.