Hallo also ich habe mich soweit in die materie eingefunden, nur dass mir der befehl in assembler fehlt, mitdem ich den Timer auf 0 setzten kann(also er zählt wenn ich es will)! währe cool wenn ihr mir nochmal helfen könntet!!! mfg rugby4ever
du musst das entsprechende regisster auf 0 setzen. beim mega8 und timer 0 wäre es TCNT0
Da ich nicht weiß, welchen Mikrocontroller Du einsetzt, fällt die Antwort so allgemein aus wie Deine Frage: Nimm den Assemblerbefehl, mit dem Du die Register anderer Module setzt und ersetze die Registeradresse durch die des Zählerstandes. Welche Registeradresse dies ist findest Du im Datenblatt Deines Mikrocontrollers.
> nur dass mir der befehl in assembler fehlt Noch mal (nachdem Du es in Deinem anderen Thread unter Beitrag "Timer/Counter Setzen" anscheinend nicht verstanden hast): Es gibt weder in C noch in Assembler einen speziellen Befehl, um einen Timer irgendwie zu setzen (wohin auch immer). Du musst schauen, in welchem Steuerregister die entsprechenden Bits stehen, mit denen Du dem Timer sagen kannst, ob er laufen soll oder nicht (ich denke mal, das ist es was Du mit "er zählt, wenn ich es will" meinst). Dazu musst Du im Datenblatt des Controllers im Abschnitt, der sich mit dem Timer befasst, nachsehen und anschließend die entsprechenden Assembler-Befehle zusammensuchen, mit denen Du die Einstellungen am Steuerregister vornehmen kannst.
BTW: Wenn Du nicht für jede Frage einen neuen Thread aufmachst, wissen die Leute auch, wovon Du redest...
hi ich habe hier mal ein programm geschrieben, weiß aber net ob das so funktionert weil mein nächstes problem ist, wie ich den zählerstand angezeigt bekommen kann! .NOLIST .INCLUDE "8515def.inc" .LIST .DEF mp = R16 .def w1 = R1 .def w2 = R2 .def w3 = R3 .def z1 = R0 rjmp main main: ldi mp,LOW(RAMEND) out SPL,mp ldi mp,HIGH(RAMEND) out SPH,mp ldi mp,0x00 out DDRD,mp ldi mp,0xFF out PORTD,mp ldi mp,0xFF out DDRB,mp out PORTB,mp loop: clr w1 clr w2 clr w3 sbis Pina,1 rcall Signal sbic Pina,1 rcall Aus sbis Pinc,2 rcall LED sbic Pinc,2 rcall LEDaus endloop: rjmp loop Signal: cbi Portb,1 ldi mp,0 out TCCR0, mp ret Aus: sbi Portb,1 ret LED: cbi Portb,2 in mp, TCCR0 ret LEDaus: sbi Portb,2 ret
ich gebe jetzt einen puls an Pina,1 und lasse mir erstmal den zustand mit einer led an portb,1 anzeigen. wenn der erste puls kommt, soll der timer auf 0 gesetzt werden und ab dann zählen! wenn jetzt ein puls an portb,2 kommt, soll der timer seinen wert in das register mp schreiben! das was jetzt noch fehlt ist, dass er seinen wert mir ihrgenwie anzeigt!
Ich sehe nirgends wo du den Timer überhaupt einschaltest. Warum folgst du nicht unserem Rat und siehst dir mal die Tutorials etwas an? http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR Dafür wurden sie geschrieben (bzw. werden sie weiter geschrieben), damit Anfänger mal einen Einstiegspunkt haben. Auch das Datenblatt zu dienem µC wirst du brauchen. Das kriegst du bei Atmel http://www.atmel.com, denn naturgemäß enthalten Tutorials immer nur einen kleinen Auszug aus den Möglichkeiten. Im Datenblatt ist aber alles beschrieben. Nicht ganz so Benutzerfreundlich sondern mehr technisch. Da greifen dann wieder die Tutorials. Aus den Tutorials lernt man wie die Dinge grundsätzlich funktionieren und man beut ein Grundverständnis auf. Mit diesem Grundverständnis verlieren dann auch die Datenblätter ihren Schrecken, weil man bereits einen Einstieg hat.
Rugby4ever wrote: > ich gebe jetzt einen puls an Pina,1 und lasse mir erstmal den zustand > mit einer led an portb,1 anzeigen. wenn der erste puls kommt, soll der > timer auf 0 gesetzt werden und ab dann zählen! wenn jetzt ein puls an > portb,2 kommt, soll der timer seinen wert in das register mp schreiben! > das was jetzt noch fehlt ist, dass er seinen wert mir ihrgenwie anzeigt! Dann musst du dich entscheiden wie der Wert angezeigt werden soll. Das richtet sich aber mehr als alles andere nach den Möglichkeiten deiner Hardware: Welche Geräte hängen wo dran und welche kann man für Ausgaben benutzen. Das kann von simplen LED an einem Port bis hin zu einer Ausgabe auf einer Grossbildleinwand in einem Zahlensystem zur Basis 60 reichen.
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.