Hallo Zusammen,
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
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*10=347,2 µs
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?
vielen Dank im Voraus.
Hallo Johannes versuch es mal ohne die while(1) Schleifen in den Subroutinen! Gruß JJ
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.