Gibt es einen ATMEGA mit schnellen PWM's und Totzeit? Ich habe ATTiny261/461/861 gefunden die das haben, sind das die einzigen mit so einer Funktion? In der Parametric Table ist diese Funktion leider nicht gelistet und bei allen Datenblättern die ich angesehen habe gibts so etwas nicht. Ich bräuchte einfach nen größeren Controller mit mindestens 32kB Flash, 20MHz und 44 oder mehr Pins.
Stephan S. wrote: > Gibt es einen ATMEGA mit schnellen PWM's und Totzeit? Ich habe > ATTiny261/461/861 gefunden die das haben, sind das die einzigen mit so > einer Funktion? ATtiny25/45/85. Bei den ganzen AT90PWMx bin ich mir nicht ganz sicher. > Ich bräuchte einfach nen größeren Controller mit mindestens > 32kB Flash, 20MHz und 44 oder mehr Pins. Ich weiß nicht, wie's beim Xmega aussieht, aber bei normalen ATmegas gibt's das nicht. Die Annahme ist sicher, dass man für derartige Aufgaben besser einen kompletten ATtiny abstellt, der sich dann um den ganzen Echtzeit-Krempel kümmern kann, während parallel ein fetter ATmega herumwerkelt und die Steuerung ringsrum übernimmt.
Für die Xmegas ist mir die Versorgungslage noch zu schlecht, könnte mir aber auch gut vorstellen dass da eher was ginge. Das mit der Steuerung durch großen ATMEGA und Echtzeit-Krempel in den Tinys sieht fast so aus. Aber eigentlich könnte man das auch locker mit dem Controller der die Steuerung macht mit übernhemen weil gerade sowas wie PWM ja selbständig läuft und nicht vom Programmablauf beeinflusst wird. Zumindest bei einfacheren Situationen. Wenn ich 2 Controller einsetze muss ich mich um ne Kommunikation zwischen den beiden bemühen was man sich eigentlich sparen könnte. Hab da noch keinen Überblick wie man so etwas am besten realisiert. UART? Wäre eh mal ein interessantes Thema, besonders auch wenn man mit einem Controller mehrere kleine ansteuert, die Problematik wird sich mir wohl noch öfters stellen. Aber dazu find ich bestimmt schon einiges im Forum, das will ich jetzt nich unbedingt hier nochmal aufziehen wo ich mich noch garnicht informiert habe.
Stephan S. wrote: > Das mit der Steuerung durch großen ATMEGA und Echtzeit-Krempel in den > Tinys sieht fast so aus. Aber eigentlich könnte man das auch locker mit > dem Controller der die Steuerung macht mit übernhemen weil gerade sowas > wie PWM ja selbständig läuft und nicht vom Programmablauf beeinflusst > wird. Zumindest bei einfacheren Situationen. Ich glaube, das ist eher eine Risikofrage: wenn die PWM unter keinen Umständen ,,fest gehen'' darf, dann kann man halt die Qualitäts- sicherung der Software für einen kleinen abgesetzten Controller viel besser beherrschen als für die eierlegende Wollmilchsau -- bis hin zu solchen Dingen, dass der PWM-Controller ggf. per Wachhund einen Tritt in den Hintern bekommen kann, während man das für den Hauptcontroller nicht möchte. > Wenn ich 2 Controller einsetze muss ich mich um ne Kommunikation > zwischen den beiden bemühen was man sich eigentlich sparen könnte. Hab > da noch keinen Überblick wie man so etwas am besten realisiert. UART? USART, auch im Synchronbetrieb möglich. SPI, ist allerdings als Slave ein wenig eklig. Wenn du aber beide Seiten in der Hand hast, kann man im Master ja einfach lange genug warten, bis man sich sicher ist, dass der Slave nach dem Ziehen des /SS jetzt bereit sein wird. TWI, aber da ist die Software doch relativ aufwändig. Dafür kann hier der Slave das Timing beeinflussen, wenn er noch nicht bereit ist für die Transaktion. Schließlich bliebe noch die Möglichkeit einer kompletten Parallel- Datenübertragung.
Stephan S. wrote:
> Gibt es einen ATMEGA mit schnellen PWM's und Totzeit?
Die großen (ATMega2560) haben bis zu 20 PWMs.
Die Totzeit machst Du, indem Du 2 PMW-Timer nimmst. Die eine Totzeit
machst Du durch Timerversatz und die andere durch den PWM-Versatz (fast
PWM mode).
Peter
Und dann die beiden PWM's UND-verknüpfen? Oder gibts da eine interne Lösung die ich bisher noch nicht erkannt habe?
Schau dir mal ATmega 16 M1 und Konsorten an. Da ist die Totzeit einstellbar. Und über PLL bis zu 64MHz. MW
Die Sache mit den 2 PWM's gibt mir noch mehr zu denken. Könnts mir prinzipiell schon vorstellen, stelle mir das aber recht schwierig vor dass ich die Timer genau so nacheinander starten lasse wie ich es gerne hätte. Kann mir kaum vorstellen wie ich die Totzeit dann zu 50 ns machen kann. Die Zeiten um die es bei mir geht sind sehr klein. Es ist wirklich nötig auf 1 CPU Cycle genau timen zu können. ATmega 16 M1 kann ich keinen finden. Nur ATmega32M1 Automotive und der geht nur bis 16 MHz.
Stephan S. wrote: > Die Sache mit den 2 PWM's gibt mir noch mehr zu denken. Könnts mir > prinzipiell schon vorstellen, stelle mir das aber recht schwierig vor > dass ich die Timer genau so nacheinander starten lasse wie ich es gerne > hätte. Kann mir kaum vorstellen wie ich die Totzeit dann zu 50 ns machen > kann. Es geht ganz einfach: Jeder Timer hat mindestens 2 PWMs. Da beide den selben Zähler verwenden, sind beide synchron. Da die OCR Register nahezu alle doppelt gepuffert sind, hat man mit dem Schreiben der beiden Werte 1 PWM Zyklus lang Zeit, das sollte reichen. Verwendet man jetzt den Frequency & Phase Correct Modus, invertiert z.B. den B Kanal, und stellt die beiden PWM Werte unterschiedlich ein, dann hat man die Differenz der beiden Werte an Totzeit. Möchte man also z.B. 4 Takte Totzeit dann stellt man das OCRxB Register auf 4 mehr ein, als das OCRxA Register. Dadurch ist der B Ausgang 4 Takte länger auf Low als A (weil B ja invertiert ist), wodurch eine Lücke zwischen dem Umschalten von A nach B bzw. umgekehrt entsteht. Das ganze habe ich schon mehrfach gemacht, funktioniert wunderbar. Man muss nur bei den Minimal und Maximalwerten aufpassen dass man da nicht über den maximalen Wert drüber rausläuft.
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.