Forum: Mikrocontroller und Digitale Elektronik Atmega 328P synchrone Timer, Totzeit Vollbrücke


von Peter A. (elkopeter)



Lesenswert?

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.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

>  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
GTCCR |= (1 << TSM) | (1 << PSRSYNC);
2
TCNT0 = 0;
3
TCNT1 = 0;
4
GTCCR &= ~(1 << TSM);

mfg.

von Peter A. (elkopeter)


Lesenswert?

Thomas Eckmann schrieb:
>
1
> GTCCR |= (1 << TSM) | (1 << PSRSYNC);
2
> TCNT0 = 0;
3
> TCNT1 = 0;
4
> GTCCR &= ~(1 << TSM);
5
>
>
> mfg.

Ich werde das mal austesten. Ich dachte die Funktion ist nur mit einem 
externen Takt möglich. Danke für die Antwort.

von spess53 (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

Ich würde einfach nen AVR nehmen, der für sowas gedacht ist, z.B. 
ATtiny861.

von Peter A. (elkopeter)


Lesenswert?

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.

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.