Guten Tag in die Runde. Ich erzeuge mir über zwei 8-Bit Timer vier PWM-Signale, die eine Vollbrücke ansteuern sollen. Hierfür verwende ich zwei "antiparallele" Look-up-Tabellen mit den Comparewerten. Aktuell "synchroniesiere" ich die beiden Timer über die Voreinstellung des einen Timers auf einen Zahlenwert. Ich habe es noch nicht getestet, aber ich denke der Zahlenwert muss bei jeder Taktfrequenzänderung angepasst werden. Im Forum habe ich einen anderen Beitrag gefunden, indem bei der Erzeugung einer Totzeit zwischen den jeweiligen Schaltsignalen die Anpassung der Comparewerte angeraten wird. Gibt es hier softwareseitig eine "elegantere" Lösung, um Timer- und Totzeitproblem zu lösen? Anbei die Schaltsignale am uC: Kanal1 schaltet HSS links Kanal2 schaltet LSS rechts Kanal3 schaltet LSS links Kanal4 schaltet HSS rechts Habe ich überhaupt Probleme mit der Totzeit? Ich verwende logic-level P und N-Kanal MOSFETs mit einer maximalen delay+rise time von 100ns.
> TCNT0=6; // Timerwert setzen zum synchronen zählen > TCNT1=0; Warum setzt du einen Wert auf 0 und den anderen Wert auf 6? Ist schon klar warum. Aber wenn du synchrone Timer brauchst, dann synchronisiere sie mit dem, was der Controller dazu anbietet:
1 | |
2 | |
3 | |
4 | |
mfg.
Thomas Eckmann schrieb: >
1 | |
2 | |
3 | |
4 | |
5 | |
> > mfg. Ich werde das mal austesten. Ich dachte die Funktion ist nur mit einem externen Takt möglich. Danke für die Antwort.
Gast
#3399902
Hi Warum nimmst du nicht einen passenden Controller. ATTiny261..861 haben einen eingebauten Deadtime Generator und invertierte Timerausgänge. Genau für deine Anwendung gemacht. MfG Spess
Ich würde einfach nen AVR nehmen, der für sowas gedacht ist, z.B. ATtiny861.
Das liegt daran, dass ich mir für den Einstieg in Atmel Controller eine Programmierplatine gekauft habe und diese gerne weiterverwenden würde. Mit der Platine bin ich auf Atmega8/48/88/168/328 beschränkt.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
