Forum: Mikrocontroller und Digitale Elektronik ATmega328p - Problem mit Prescaler von Timer 1 und 2


von Marcus W. (fallenangel3k)


Lesenswert?

Hallo Leute!

ich habe ein problem mit dem timern 1 und 2 in einem programm von mir. 
ich betreibe damit einen motorsteller mit 500 Hz, was auch sehr gut 
funktioniert, solange ich bei 8Mhz taktfrequenz für den AVR bleibe 
(egal, ob intern oder ext. kristall). Aber ich will das programm mit 16 
oder gar 20Mhz betreiben!

das eigentliche problem ist, dass ich bei 8Mhz einen prescaler von 64 
verwende, um auf meine 500Hz zu kommen:
=> 8000000/64/250 = 500

Aber bei 16Mhz gibt es keinen prescaler von 128 bei einem timer!

Kann ich also einfach folgendes machen:
=> 16000000/64/500 = 500     !??

Oder welche möglichkeiten habe ich noch?



Liebe Grüße,

Marcus

von Hc Z. (mizch)


Lesenswert?

> Kann ich also einfach folgendes machen:
> => 16000000/64/500 = 500     !??

Ja, sicher, bei einem 16-Bit-Timer (Timer 1).  Und beim 2er hast Du -- 
soweit ich sehe -- die bei Timer1 fehlernde Prescaler-Stufe, die für 16 
MHz passt.

von Marcus W. (fallenangel3k)


Lesenswert?

Hallo!

danke, für die schnelle antwort!!!

das nächste problem ist, dass ich nicht timer1 und timer2 verwenden 
will, sondern timer0 und timer2, da der 16bit timer schon für eine 
andere funktion vorgesehen ist!

wie kann ich beim 8bit timer mein ergebnis durch 500 teilen, da dies ja 
größer als der maximale wert von 255 ist!?

also timer0 --> 16000000/64/500 = 500

mit 8 bit geht das nicht, oder doch!?


LG,

Marcus

von Karl H. (kbuchegg)


Lesenswert?

Ich denke es wird Zeit, dass du mal etwas Code zeigst.

Was machst du eigentlich mit den 500? Inwiefern gehen die Limitierungen 
der Timer in dein Gesamtkonzept ein? In welcher Form setzt du die Timer 
ein?

Es gibt meistens immer einen Timer-Modus, bei dem sich durch Kombination 
von Top-Wert und Prescaler eine gewünschte Frequenz von (ja was 
eigentlich: ISR Aufrufe, Output Toggeln, ...) ergibt.

von Marcus W. (fallenangel3k)


Lesenswert?

okay, hast mich erwischt.... es geht nicht um meinen persönlichen code, 
sondern um ein generelles problem eines recht bekannten quadro-copter 
projektes, bei dem ich gehofft habe, auf diese weise dem erfinder etwas 
unter die arme greifen zu können... aber er meint, er habe sich damit 
schon eingehend beschäftigt und sieht keine andere möglichkeit, ausser 
bei 8Mhz zu bleiben...
Ich denke zwar, daß alles möglich ist, wenn man nur weiß, wie man es 
anstellen (coden) muss, aber da es nicht mein code ist, kann ich leider 
auch nicht näher drauf eingehen, ausser den namen vom projekt zu sagen 
und zu sagen, dass man die firmware für den controller frei 
herunterladen kann, inkl. quellcode... aber eben nicht weitergeben 
darf.. will ja schließlich seine rechte bewahren..

http://www.qc-copter.de/wiki/index.php?title=Hauptseite

dann einfach unter download..

die diskussion in unserem forum bzgl der 8 od. 16Mhz ist hier:
http://www.qc-copter.de/forum/viewtopic.php?f=19&t=702&start=60#p8870

Das PPM signal für die speziellen brushless-regler kommt mit 500Hz 
daher, das ganze für 4 Motoren, unabhängig... es geht im prinzip um die 
umsetzung der werte von beschleunigungssensoren und gyroskopen, die 
zusammen mit einem PID wert dann im uC das nötige PPM signal ergeben.

bin leider ein neuling, was AVR's betrifft, habe bisher nur mit PIC's 
gearbeitet.. sonst hätte ich das problem selber in die hand genommen, so 
muss ich erstmal selber den code lernen und verstehen, wenn es wirklich 
so komplex ist, wie er sagt, bevor ich genauer drauf eingehen kann, was 
das problem ist, ohne den code hier "veröffentlichen" zu müssen.. vllt. 
kann ihn sich einfach jmd. mal runterladen und sagen, wo das problem 
ist... (z.zt. gibt es öffentlich nur eine leicht veraltete version, die 
mit dem internen oszillator arbeitet, aber der code ist im prinzip 
gleich, in der neuen version wird einfach ein externer quarz benutzt... 
jedoch wünschen wir uns damit dann auch auf mindest 16Mhz aufsteigen zu 
können, anstatt "nur" zumindest quarzstabiele 8Mhz zu haben, im 
vergleich zu der alten version..)

ich hoffe, das erklärt einiges/alles...



LG,

Marcus

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.