Prescaler von 32 oder 128 bei mega644p möglich?

Gast #2530340
Ü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
Gast #2530368
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?
Gast #2530380
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.
Gast #2530413
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
#2530448
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.
Moderator Persönliche Seite #2531268
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.