• 27.04.2024, 23:13
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

atmel-controller: frage zur timer-programmierung

Mittwoch, 14. April 2004, 04:11

Ich möchte einen timer programmieren (einmal at90s1200 und einmal
attiny11).

dieser soll bei überlauf mir einen interrupt aktiveren, in dem ich eine
prozedur liegen habe.

die sache ist so:
der timer fängt bei 0 an zu zählen und zählt bis 255.
jetzt habe ich einen timer, der von 0-255 zählt.

problem jetzt:
was aber ist, wenn ich einen timer will, der mir beispielsweise genau
alle 57 ticks durch überlauf einen interrupt aktiviert?

muß ich dann das timer-zähl register auf den wert 198 vorbelegen?
ist das richtig so?

aber was ist, wenn der timer jetzt übergelaufen ist? fängt er dann
nicht jedes mal wieder an, bei null loszuzählen?

heißt das dann, daß ich den timer nach jedem überfluß wieder auf
beispielsweise 198 vorbesetzen muß ?

wenn ja, wie realisiere ich das dann? wie sorge ich dafür, daß der
timer auch genau auf den wert 198 vorbelegt wird, wenn er überläuft,
und nicht mal, wenn er gerade, je nachdem wieviele befehle vorher
abgearbeitet wurden, schon gerade auf dem wert 3 oder 7 statt 0 steht?

weiß jemand, wie man sowas macht?

wie kann ich mit dem timer das auslösen von interrupts nach anderen
zeiten als nur genau nach "255 ticks" oder so erreichen?
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: atmel-controller: frage zur timer-programmieru

Donnerstag, 15. April 2004, 00:12

Benutz das "Clear Timer/Counter on Compare Match"- Feature!

Und lies sorgfältig die Manuals, die meisten Deiner Fragen lassen sich eindeutig aus der Doku beantworten. Schau auch mal bei http://www.avrfreaks.org vorbei, dort gibt es neben einem guten Forum viele Programmbeispiele und Bibliotheken zum Download.

Grüße, jmaass

Re: atmel-controller: frage zur timer-programmieru

Donnerstag, 15. April 2004, 00:22

in welchem dokument steht diese feature beschrieben?
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

Re: atmel-controller: frage zur timer-programmieru

Donnerstag, 15. April 2004, 00:33

Oh, shit!

Ich habe in das Datenblatt vom tiny15 geschaut. Der 11er kann das leider nicht. Wenn Du ein präzises Timing brauchst, nimm entweder den 15er oder sorge dafür, dass keine Interruptquelle mit höherer Priorität existiert. In letzterem Fall kannst Du den Reload-Wert über die in der Doku zu dem AVR-Kern angegebenen CPI-Werte der Befehle in der ISR errechnen.

Grüsse, jmaass

Edit: :D s h i t -> n u t s :D

Re: atmel-controller: frage zur timer-programmieru

Donnerstag, 15. April 2004, 00:39

ok update:
also ich glaube, ich brauche diesen genauen timer doch nicht.

ich lasse den timer einfach so, wie er ist, komplett durchlaufen.

und immer, wenn er einmal durchgelaufen ist, soll ein interrupt aufgerufen werden.

zum gut stromsparen reicht das aus.

und den rest laß ich dann manuel pro interrupt um +1 hochzählen.
Dieses Youtube-Video ist aufgrund von Urheberrechtsbeschränkungen in deinem Land nicht verfügbar.

hus

Senior Member

Re: atmel-controller: frage zur timer-programmieru

Donnerstag, 15. April 2004, 13:20

Standard-8051-Timer, Modus "8-Bit Timer mit Auto-Reload", die Register TL und TH mit 198 vorbelegen, TR setzen, und los geht's...

Für längere Zyklen (> 8 Bit) müßte der Reload manuell erfolgen - dann mußt Du halt auszählen, wieviele Zyklen bis zum Neusetzen vergehen.
Real stupidity beats artificial intelligence every time. T. Pratchett, "Hogfather"