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
> 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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.