Re: Gleichzeitige Erzeugung von Frequenz und PWM Kategorie: CC-Pro Unit & Appl.Board (von PeterS - 11.03.2009 12:36) | |
Als Antwort auf Gleichzeitige Erzeugung von Frequenz und PWM von Johannes Fan - 11.03.2009 10:15
| |
> Hallo Zusammen, > > ich versuche momentan ein Programm zu erstellen, das mit Timer 1 (Frequenzerzeugung) und Timer 3 (PWM) > realisiert wird. Das Programm habe ich zuerst mit Beispielprogramm zusammen aufgebaut und die erzeugten > Signale werden mit HIlfe von Oszi dargestellt. Es funktioniert bei Frequenzerzeugung aber nicht bei PWM. > > Das Programm von Frequenzerzeugung : > > // FRQ1: Frequenzerzeugung (16 Bit) > // �ber den Ausgang wird eine Signal mit einer entsprechend eingestellter > // Frequenz ausgegeben. > // �ber den Timer Prescaler wird das Teilungsverhältnis (Oszillatorfrequenz/ps/2) > // festgelegt.(14,7456MHz/ps/2) > /* > Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) > PS_1 (1) 136 ns > PS_8 (2) 1,085 µs > PS_64 (3) 8,681 µs > PS_256 (4) 34,72 µs > PS_1024 (5) 138,9 µs > */ > void Frequenzerzeugung(void) > { > Timer_T1FRQ(10,PS_1024); // Der Timer erzeugt ein Signal mit > // Periode=34,72 µs*1=34,7 µs, Frequenz= 28,8kHz > while (1); > } > > Das Programm von PWM: > > // PWM3: Pulsweitenmodulation > // Berechnung der Pulsweitenmodulation > // Timer_T3PWM(Par1,Par2,PS); > // Periode=Par1*PS/FOSC (100*64/14,7456MHz=434 µs) > // Pulsweite=Par2*PS/FOSC (25*64/14,7456MHz=108 µs) > // �ber den Timer Prescaler wird das Teilungsverhältnis (Oszillatorfrequenz/ps) > // festgelegt. (14,7456MHz/ps) > /* > Vorteiler (prescaler) Zeitbasis (Dauer eines Ticks) > PS_1 (1) 67,8 ns > PS_8 (2) 542,5 ns > PS_64 (3) 4,34 µs > PS_256 (4) 17,36 µs > PS_1024 (5) 69,4 µs > */ > > // Dieses Demo Programm ist nur für Mega128 > #ifdef MEGA32 > #pragma Error "Timer3 nur für Mega128" > #endif > > void PWM(void) > { > Timer_T3PWM(100,20,PS_256); // Berechnung siehe oben > while (1); > } > > und das Hauptprogramm: > > void main(void) > { > Frequenzerzeugung (); > PWM (); > } > > oder sollte ich mit Multithreading realsieren? �hh, Du bist Dir schon im Klaren, das "while(1);" eine Endlosschleife ist, und deshalb Frequenzerzeugung() niemals verlassen wird? Einfach das "while(1);" rausnehmen. Gruss Peter > > vielen Dank im Voraus. | |
Antwort schreiben Antworten: Re: Gleichzeitige Erzeugung von Frequenz und PWM (von Johannes Fan - 11.03.2009 13:34) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum