Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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)