PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega mit >3 Timer



manhunt
09.12.2008, 09:23
Hallo

Ich suche einen Atmega der bis zu 20mhz schaft bei mindestens 4Timern (mehr wären auch nicht schlecht wobei egal ob 8 oder 16bit).

Frage gibt es soetwas überhaupt?

lg manhunt

Morpheus2001
09.12.2008, 09:47
Hab mal geschaut auf der Atmel Seite, es gibt wohl nur entweder
3 Timer mit 20 MHz oder
>3 Timer mit 16 MHz...

Wozu brauchst du die ganzen Zeitgeber überhaupt?

Wenn wirklich mehr als 3 Zeitgeber verwendet werden müssen, könntest du dir auch so eine Art "Zeitgeber Modifier" schreiben

Gedachte Funktionsweise:
Die Lib stellt den Timer immer auf den nächtst kürzesten Wert und löst dann den Aufruf dieser Methode auf.
Dann stellt er den Timerwert auf den nächsten Timer Wert ein, usw usw...

manhunt
09.12.2008, 09:55
Hallo

Frage welche uC mit mehr als 3 Timern und 16 mhz hast du gefunden?

lg manhunt

oberallgeier
09.12.2008, 10:36
Atmel stellt da eine hübsche Parametertabelle bereit
http://atmel.com/dyn/products/param_table.asp?family_id=607&OrderBy=1250&Direction=ASC
die habe ich auch lokal bei mir in der "was-ist-interessant+wichtig"-Directory.


... mehr als 3 Timern und 16 mhz ...Mehr als 3 Timer haben diese hier: AT90CAN128 Automotive, AT90CAN32 Automotive, AT90CAN64 Automotive, ATmega128, ATmega162, ATmega64, ATmega1280, ATmega1281, ATmega128RZAV, ATmega128RZBV, ATmega2560, ATmega2561, ATmega256RZAV, ATmega256RZBV, ATmega640 - aber eben alle 16 MHz. Die höher getakteten kannst Du ja selber aus der Tabelle rausklabüsern.

manhunt
09.12.2008, 10:52
Hallo

Danke nach so einer Tabelle habe ich gesucht.

Um die Frage zu beantworten warum ich so viele Zeitnehmer brauche.

Also ich habe 2x Servo per Hardware PWM, 1xfür Messdaten Erfassen, 1xZeitmessung...

lg manhunt

MeckPommER
09.12.2008, 10:58
Hallo manhunt,

ich würde die Servos dann eher über einen Timer bzw. ISR steuern. Du brauchst nicht für jeden Servo je einen Timer.

Wenn du es aber so machen möchtest gibts vielleicht eine Möglichkeit die Zeitmessung mit der Messdatenerfassung zu koppeln? Dann machst du halt die Erfassung der Messdaten abhängig von der Zeitmessung.

Gruß MeckPommER

oberallgeier
09.12.2008, 11:01
... 2x Servo per Hardware PWM ...Dafür reicht 1 TImer. Die unterschiedlichen PwM-Rampen werden dann, beispielsweise mit OCR1A und OCR1B gemacht - so laufen auch meine Motoren mit EINEM TImer und trotzdem unterschiedlichen PwM-Rampen.


... 1xZeitmessung ...Ich hatte mir einen 50µs-Interrupt gemacht, der eine uint16_t-Variable hochzählt bis max. etwa 60000, das wären dann 3 sek. Diese Zeitmarke ist für allerlei nutzbar.


... 1xfür Messdaten Erfassen ...Zum Beispiel habe ich meine Encoder auf extINT0 und ~1 gelegt, lese dort die o.g. Zeitmarke aus und verarbeite auch den möglichen Überlauf.

Bei meinem Dottie (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196) habe ich aktuell 2 Motor-PWMs an Timer0 hängen, getrennt regelbar natürlich, das Signal nutze ich ausserdem für einen entsprechenden Takt für meine Entfernungsmessung, meine irLED mit 36 kH läuft auf Timer1, und Timer2 macht mir den erwähnten 50µs-Takt. Ausserdem bediene ich in der ISR vom Timer2 noch die Rampe für den 5ervo, auf dem mein Sharp hängt (am Strohhalm *ggggg*). Blos nicht die Übersicht verlieren *gggggggg*.

manhunt
09.12.2008, 11:26
Hallo

Ihr habt ja recht.

oberallgeier könnte ich dich später mal per icq oder sonstigem chat mal ein bischen was zum correct phase mod fragen?

lg manhunt

thewulf00
09.12.2008, 12:01
Du kannst doch auch hier fragen.

Es gibt schon Anwendungen auf einem AVR, wo 12 oder mehr Servos mit einem Timer gesteuert werden - dann eben in Software. Such mal im Forum danach.

oberallgeier
09.12.2008, 14:52
... oberallgeier könnte ich dich später mal per icq oder sonstigem chat mal ein bischen was zum correct phase mod fragen ...Im Prinzip ja, aber als alter Mann habe (brauche) ich doch kein icq *schnief* . Ich bin ja schon froh, dass bis zu mir an den Waldrand das DSL (noch) läuft - mit Datenraten die an frühere digitale Licht-Datenübertragungsstrecken (Rauchzeichen) erinnern. Deine Fragen sind sicher hier in aller Öffentlichkeit zu klären. Dein Vorteil ist ja, dass da auch geübtere PwMmer helfen können.

Ausserdem habe ich Dir doch in Deinem 5ervo-PwM-Thread (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=412101#412101) (m)eine komplette Codesammlung dazu gegeben. Meine Kommentare zusammen mit Seitenangaben vom ATmel-doc sollten doch reichen!?

Besserwessi
09.12.2008, 18:04
Wenn man Servos per Hardware PWM steuern will, sollte man schon den 16 Bit Timer nehmen. Aber ein Timer reicht da für 2 mal Hardware PWM, und für die Zeitmessung kann man den dann auch noch nutzen, vor allem wenn man es mit der 20 ms Widerhohlzeit für die Servos nicht so genau nimmt.

oberallgeier
09.12.2008, 18:24
... Servos per Hardware PWM ... sollte man schon den 16 Bit Timer ...Wem sagst Du das. Ich bin die letzten Tage dran gesessen, aber ich muss den 16bit-Tlmer (wieder) für meine irLEDs nehmen, anders bekomme ich mit meinem 20MHz Quarz die 36 kHz nicht genau genug. Es sind dann so etwa 40 kHz - da spricht der SFH5110-36 nicht mehr an. Und den 5110-40 gibts wohl nur im Datenblatt, jedenfalls nicht bei meinen üblichen Lieferanten. Dieser Versuch hatte mich schon etliche Stunden gekostet - weil ich die Hardware ziemlich umrüsten musste. Bei meinem etwas komplexen Spielzeug (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=411428#411428) glaube ich einem Test auf der Experimentierplatine nicht mehr - es ist das Folgeprojektchen (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=402226#402226) von meinem Dottie. Und nun lenke ich eben mit dem 5ervo von links-voll auf PwM=19 bis rechts-voll auf PwM=31 (so um die +/- 45°) - und das schon mit einem ganz kurzen Servohorn. Immerhin - bei mässigem Fahrtempo läuft es schon.

manhunt
14.12.2008, 14:10
Hallo

Danke für eure Hilfe leider war ich in den letzten Tagen leicht verhindert, aber werde heute mal deinen Quellcode abarbeiten danke.

lg manhunt