Hallo zusammen, ich arbeite gerade im Datenblatt zum ATtiny13 das Kapitel " 8-bit Timer/Counter0 with PWM " durch. Dort taucht folgender Text auf Seite 72 zu den Clock Select Bits auf ( unterhalb der Tabelle 33 ). If external pin modes are used for the Timer/Counter0, transitions on the T0 pin will clock the counter even if the pin is configured as an output. This feature allows software control of the counting. Die Schaltbilder bzw. Blockschaltbilder im Datenblatt machen mir es nicht verständlich was damit gemeint sein könnte. Wie kann das Programm bzw. Software das takten kontrollieren, wenn das Programm nur abgearbeitet werden kann, wenn es erst durch eine Taktschaltung zu Leben gebracht wird ? Und wie kann ich eine externe Taktquelle benutzen, wenn der PIN als Ausgang konfiguriert ist ? Gibt es dazu irgendwelche Detailbilder ? Kann leider den Dataianhang nicht mehr löschen. Hätte wahrscheinlich das Datenblatt als Link hingerlegen sollen. Bernd_Stein
Bernd Stein schrieb: > Wie kann das Programm bzw. Software das takten kontrollieren, wenn das > Programm nur abgearbeitet werden kann, wenn es erst durch eine > Taktschaltung zu Leben gebracht wird ? Der Takt an T0 taktet nicht die CPU des Controllers, sondern wird vom Timer0 "gezählt". T0 ist also ein Zähleingang zur Nutzung des Timers als Zähler. ...
Hannes Lux schrieb: > > Der Takt an T0 taktet nicht die CPU des Controllers, sondern wird vom > Timer0 "gezählt". T0 ist also ein Zähleingang zur Nutzung des Timers als > Zähler. > Oh, ja, klar, Danke. Da hab ich es wieder T0 ist ein Zähleingang, das macht ja auch Sinn. If external pin modes are used for the Timer/Counter0, transitions on the T0 pin will clock the counter even if the pin is configured as an output. " This feature allows software control of the counting. " Der letzte Satz macht mich jedoch kirre. Softwaremäßig kann ich doch immer darauf zugreifen. Es wird doch nur ein internes Register hochgezählt das man unter anderem auch auslesen kann. Das man mit dem als Augang geschalteten Pin immernoch die Eingangsimpulse zählt, geht irgendwie nicht in meinem Kopf. Und schon gar nicht wozu das Gut sein soll. Was fange ich mit solch einem " Feature " an ? Bernd_Stein
Bernd Stein schrieb: > T0 ist ein Zähleingang, das > macht ja auch Sinn. Richtig, man kann Dinge zählen, ohne das laufende Programm unterbrechen zu müssen. Und man kann Interrupts nutzen, um auf bestimmte Zählerstände zu reagieren. > > If external pin modes are used for the Timer/Counter0, transitions on > the T0 pin will clock the counter even if the pin is configured as an > output. Man kann nicht nur externe Impulse zählen, sondern auch die Impulse, die das Programm an diesem (als Ausgang geschalteten) Portpin ausgibt. > > " This feature allows software control of the counting. " Dies erlaubt das Zählen von per (im AVR laufender) Software erzeugten Ereignissen. > > Der letzte Satz macht mich jedoch kirre. > Softwaremäßig kann ich doch immer darauf zugreifen. Es wird doch nur ein > internes Register hochgezählt das man unter anderem auch auslesen kann. Und das Interrupts auslösen kann, das damit allerhand Unsinn im Hintergrund erledigen kann, ohne dass das Programm da ständig nachschaun muss. > > Das man mit dem als Augang geschalteten Pin immernoch die > Eingangsimpulse zählt, geht irgendwie nicht in meinem Kopf. Es zählt dann halt die selbst erzeugten Ausgangsimpulse... > Und schon gar nicht wozu das Gut sein soll. Es kann ja auch sein, dass man hier eine Gegebenheit als "Feature" verkauft. Man informiert uns darüber, dass der Timer nicht nur externe Impulse zählt, sondern auch intern erzeugte Impulse, also dass man den Zähleingang vom Timer nicht vom I/O-Pin T0 trennt, wenn der I/O-Pin als Ausgang konfiguriert wird. > > Was fange ich mit solch einem " Feature " an ? Sieh es nicht als "Feature", für das Du Aufpreis bezahlt hast, sondern einfach nur als die Erklärung einer Eigenschaft. Das Ding zählt die Flanken am Portpin, egal woher sie kommen. ...
Hannes Lux schrieb: >> >> If external pin modes are used for the Timer/Counter0, transitions on >> the T0 pin will clock the counter even if the pin is configured as an >> output. > > Man kann nicht nur externe Impulse zählen, sondern auch die Impulse, die > das Programm an diesem (als Ausgang geschalteten) Portpin ausgibt. > >> >> " This feature allows software control of the counting. " > > Dies erlaubt das Zählen von per (im AVR laufender) Software erzeugten > Ereignissen. > .... > > Es zählt dann halt die selbst erzeugten Ausgangsimpulse... > .... >> >> Was fange ich mit solch einem " Feature " an ? > > Sieh es nicht als "Feature", für das Du Aufpreis bezahlt hast, sondern > einfach nur als die Erklärung einer Eigenschaft. Das Ding zählt die > Flanken am Portpin, egal woher sie kommen. > > ... > Vielen Dank für Deine umfassende Erklärung Hannes Lux. Was ich jetzt frage könnte ich auch praktisch erproben, aber habt bitte Nachsicht, denn wenn man nicht so die Ahnung hat, kann man im praktischen Teil - nur weil irgendein Bit falsch gesetzt ist - ziemlich lange einen Fehler suchen den man eingebaut hat ohne dies zu bemerken. Deshalb frage ich um die Zeit effektiver zu nutzen. Wenn der T0-Pin als Ausgang konfiguriert ist, dann kann ich doch bestimmt keine externen Impulse zählen oder ? Ich mein die Erklärung vom Hannes weisst ja schon darauf hin das die das mit dem "...even if the pin is configured as an output. " nicht so wörtlich meinen, aber wenn man keine Ahnung hat, weiß man ja nie. Bernd_Stein
Bernd Stein schrieb: > Wenn der T0-Pin als Ausgang konfiguriert ist, dann kann ich doch > bestimmt keine externen Impulse zählen oder ? Wenn Du an einen als Ausgang geschalteten Portpin externe Signale anlegst, dann baust Du einen Kurzschluss, der über kurz oder lang den Ausgangstreiber Deiner Signalquelle oder Deines AVRs beschädigen kann. Diese "Betriebsart" ist also tunlichst zu vermeiden, unabhängig vom Einsatz des Timers. Fast alle meiner Programme nutzen einen Timer. Meist wird er benutzt, um mittels Compare-Interrupt einen AVR-internen Takt zu generieren, der von den Jobs des Hauptprogramms als Zeitscheibe bzw. zum Abzählen von Verzögerungen genutzt wird. Gelegentlich nutze ich einen Timer auch zur Impulsmessung, also für ICP in Hardware oder Software. In all diesen Fällen zählt der Timer (über Vorteiler) CPU-Takte. Externe Takte musste ich noch nie zählen, für dessen Notwendigkeit fällt mir erstmal nur der Frequenzzähler ein, den ich aber mangels Bedarf (noch) nicht mit einem AVR gebaut habe. Der Tiny13 hat nur den einen Timer. Den braucht man meist für einen oder beide Compare-Interrupts und/oder Impulsmessung per (Software-) ICP. Sind beide Compare-Interrupts variabel, dann kann noch mittels Überlauf-Interrupt (ohne Reload!) ein fester Takt zum Abzählen von Verzögerungen realisiert werden. Dabei zählt der Timer CPU-Takte und steht nicht mehr zum Zählen von externen Ereignissen zur Verfügung. Also gibt es eigentlich kaum einen Grund, über die Features beim Zählen externer Ereignisse nachzudenken. ...
Hannes Lux schrieb: > Bernd Stein schrieb: >> Wenn der T0-Pin als Ausgang konfiguriert ist, dann kann ich doch >> bestimmt keine externen Impulse zählen oder ? > > Wenn Du an einen als Ausgang geschalteten Portpin externe Signale > anlegst, dann baust Du einen Kurzschluss, der über kurz oder lang den > Ausgangstreiber Deiner Signalquelle oder Deines AVRs beschädigen kann. > Diese "Betriebsart" ist also tunlichst zu vermeiden, unabhängig vom > Einsatz des Timers. > ... Nochmals Danke Hannes Lux. Damit wären erstmal die Fragen zum Input-Capture-Mode diesbezüglich geklärt. Bernd_Stein
Bernd Stein schrieb: > Damit wären erstmal die Fragen zum Input-Capture-Mode diesbezüglich > geklärt. Was hat der ICP-Mode (den der Timer des Tiny13 übrigens gar nicht unterstützt) mit dem T0-Pin zu tun? ...
Hannes Lux schrieb: > Bernd Stein schrieb: >> Damit wären erstmal die Fragen zum Input-Capture-Mode diesbezüglich >> geklärt. > > Was hat der ICP-Mode (den der Timer des Tiny13 übrigens gar nicht > unterstützt) mit dem T0-Pin zu tun? > > ... > Ich lese parallel zu dem Datenblatt auch in Büchern und so. Habe wahrscheinlich etwas durcheinander gebracht. Trotzdem sollte ich wahrscheinlich in der Lage sein zu wissen, was der Input Capture Mode bedeutet. Danke für den Anstoß, so weiß ich wenigstens das der ICP-Mode noch nicht ganz richtig von mit verstanden worden ist. Bernd_Stein
Bernd Stein schrieb: > so weiß ich wenigstens das der ICP-Mode noch nicht > ganz richtig von mit verstanden worden ist. Sieh's ganz locker: Der ICP-Interrupt ist erstmal ein stinknormaler externer Interrupt, der von einer Flanke eines extern anliegenden Impulses am ICP-Pin ausgelöst wird. Im Gegensatz zum Int0 oder Int1 wird dabei der "Zeitstempel genommen", also der Zählerstand des Timer1 in das ICP-Register (ICR1H:ICR1L) kopiert. Und das bereits in dem Takt, in dem die Flanke erkannt wurde und nicht erst beim Aufruf der ISR. Dies ermöglicht extrem genaue Zeitmessungen, da die Interrupt-Aufrufzeit nicht mit in die Rechnung eingeht. Dieses Feature hat der Tiny13 allerdings nicht. Die 16-Bit-Timer der meisten aktuellen AVRs können das aber. Interessant dabei ist auch, dass man den Input-Capture auch vom Analog-Comparator auslösen kann. Wenn man dem Analog-Comparator nun noch die interne Bandgap-Spannung als Referenz gibt, dann reagiert ICP bereits bei kleineren Pegeln am AIN1-Pin. Auf diese Art gelang es mir, mit dem Tiny2313 die per Dioden zusammengefassten Servokanäle einer Funkfernsteuerung zu detektieren. Es wurden Kanal 1, 3 und 5 mit Dioden zusammengefasst (OR-verknüpft) und ein Pull-Down-Widerstand für den L-Pegel eingesetzt. Der H-Pegel war dann für den ICP-Eingang zu schwach. Über den AIN1-Eingang konnte ich ihn aber sauber detektieren. So kann der Tiny2313 über nur einen Eingangspin alle 5 Kanäle der 2,4GHz-Funkfernsteuerung empfangen. (http://www.hanneslux.de/planet5b/) ...
Hannes Lux schrieb: > Bernd Stein schrieb: >> so weiß ich wenigstens das der ICP-Mode noch nicht >> ganz richtig von mit verstanden worden ist. > ... > Hallo und Danke Hannes Lux, wenn Du mir öfters so schöne Antworten presentierst, dann guck ich bald in kein Buch mehr sondern stelle die Fragen Dir. Nein im Ernst, danke für deine ausführlichen Antworten und den Bezug zur Praxis. Bernd_Stein
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.