Forum: Mikrocontroller und Digitale Elektronik Prescaler von 32 oder 128 bei mega644p möglich?


von Heinrich (Gast)


Lesenswert?

Hallo,

in den Datenblättern lese ich immer nur was von Prescaler, die den Takt 
durch 8, 64 oder 256 teilen. Ist es auch möglich, diesen durch 32 oder 
128 zu teilen?

Gruß Heinrich
von Krapao (Gast)


Lesenswert?

Die Prescaler Hardware im AVR hat nur die angegebenen Werte. Vielleicht 
kann man helfen, wenn du beschreibst, wieso du Prescaler 32 oder 128 
brauchst.
von Oliver (Gast)


Lesenswert?

Üblicherweise kann man davon ausgehen, daß alles, was im Datenblatt 
steht, auch geht (mit ein paar wenigen Ausnahmen), und alles, was da 
nicht steht, auch nicht geht.

Solltes du doch irgendwie einen Preoscaler von 32 oder 128 hinbekommen, 
dann informier bitte Atmel, damit die das ins Datenblatt aufnehmen ;)

Oliver
von Heinrich (Gast)


Lesenswert?

Ich wollt von nem 20 Mhz Takt einen 1ms Takt erzeugen.

Mit nem Prescaler von 8 gehts, mir wären halt 32 lieber gewesen.

Beansprucht der Timer dann jeden 8. Takt für sich alleine oder läuft das 
parallel zu anderen Sachen?
von Krapao (Gast)


Lesenswert?

Prescaler 8 ist dann vollkommen problemlos. Die Software merkt nicht, ob 
die Hardware mit Prescaler 8 oder mit den fiktiven 32 getaktet wird. Die 
Software merkt, wie oft deine ISR Rechenzeit braucht und das ist alle 1 
ms.
von Anon Y. (anonymous)


Lesenswert?

Was möchtest du tun?

Wenn "das" ein timer ist, dann läuft das parallel zu anderen Sachen. 
Wenn es ein interrupt ist, dann nicht.

Vielleicht suchst du den "Clear Timer on Compare Match"-modus?

Ein nützliches tool ist avrcalc.exe
von Heinrich (Gast)


Lesenswert?

ja, ich wollte es mit dem CTC Modus machen^^

Interrupt wird dabei natürlich jedes mal aufgerufen und erhöht mir 
meinen ms Zähler, die Zeit passt nur noch nicht ganz

Ich hab das Bits WGM12 (CTC1) gesetzt, genauso wie COM1A1 und COM1A0
von Karl H. (kbuchegg)


Lesenswert?

Heinrich schrieb:
> ja, ich wollte es mit dem CTC Modus machen^^

Wenn du es damit und mit einem Vorteiler von 8 auf 1ms schaffst, dann 
ist doch alles gut (hab nicht nachgerechnet).

Ganz im Gegenteil. Deine Granulierung ist doch mit einem kleineren 
Vorteiler viel besser, so dass du die 1ms mit einem kleinen Vorteiler 
viel genauer treffen kannst.
von Heinrich (Gast)


Lesenswert?

ich hab halt noch i2c interrupts und ähnliches^^, das stört doch dann, 
wenn man nur nen Teiler von 8 hat?
von Stefan E. (sternst)


Lesenswert?

Heinrich schrieb:
> ich hab halt noch i2c interrupts und ähnliches^^, das stört doch dann,
> wenn man nur nen Teiler von 8 hat?

Nein. 1000 Interrupts pro Sekunde sind 1000 Interrupts pro Sekunde. Über 
welche Hardware-Einstellungen diese zu Stande kommen, ist für die 
"Software-Last" irrelevant.
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Heinrich schrieb:
> ich hab halt noch i2c interrupts und ähnliches^^, das stört doch dann,
> wenn man nur nen Teiler von 8 hat?

Heinrich, das ist Hardware, keine Software.  Auch wenn die
"Programmierung" dieser Hardware (also das Erstellen der
Hardwarebeschreibung) fast aussieht wie Software-Programmierung
(erfolgt halt in Verilog oder VHDL, die C bzw. Ada recht ähnlich
sind), der wesentliche Unterschied ist: in der Hardware kannst du
(nahezu) beliebig viele Aktionen (die sich bei VHDL dann zur
Verwirrung der Softwerker auch noch "process" nennen) parallel
erledigen.  Mit einem Tick des jeweiligen Taktes werden eben parallel
die Flipflops deines Timers umgeschaltet auf den nächsten Wert (und
dabei der "compare match" ggf. ermittelt), gleichzeitig schalten
mit dem gleichen Tick die Flipflops der ALU, um das Ergebnis des
aktuellen Befehls in das Zielregister zu übernehmen oder was auch
immer gerade in der CPU dran ist.

Wenn der compare match noch so konfiguriert ist, dass er einen Ausgang
schalten soll, dann würde auch das völlig gleichzeitig erfolgen.  Das
ist ja gerade der nette Trick dabei: die Behandlung des Interrupts in
der Software kann sich hernach Zeit nehmen (so lange, bis der nächste
entsprechende Interrupt auflaufen würde), die Hardware dagegen schaltet
sofort.
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
Noch kein Account? Hier anmelden.