PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Timer initialisierung



goobelz
27.01.2006, 15:29
Hi,

ich stecke gerade voll in den Klausurvorbereitungen. und seit ein paar Stunden beschäftige ich mit folgendem Problem :(

Ein Timer soll so initialisiert werden, damit er unten abgebildetes Signal erzeugt. Das System
wird mit 5MHz getaktet. Die Initialisierungsroutine ist bis auf die Werte für die Compare-
Register fertig.
Berechnen Sie die fehlenden Werte und tragen diese ins Listing ein. Dokumentieren Sie Ihren
Lösungsweg.


Der Code:

// Timer3 initialisieren
void Timer3_init( void )
{
StructTC* timerbase3 = TCB3_BASE; // Basisadressse TC Block 1
StructPIO* piobaseA = PIOA_BASE; // Basisadresse PIO B
timerbase3->TC_CCR = TC_CLKDIS; // Disable Clock

// Initialize the mode of the timer 3
timerbase3->TC_CMR =
TC_ACPC_CLEAR_OUTPUT | //ACPC : Register C clear TIOA
TC_ACPA_SET_OUTPUT | //ACPA : Register A set TIOA
TC_WAVE | //WAVE : Waveform mode
TC_CPCTRG | //CPCTRG : Register C compare trigger enable
TC_CLKS_MCK2; //TCCLKS : MCKI / 2

// Initialize the counter:
timerbase3->TC_RA = ; //__
timerbase3->TC_RC = ; //__

// Start the timer :
timerbase3->TC_CCR = TC_CLKEN ;
timerbase3->TC_CCR = TC_SWTRG ;
}

Signal:
low jeweils 4ms
high 10 ms

MCKI = 5MHz

ICh hoffe Jemand kann mir weiterhelfen

mfg
goob

SprinterSB
27.01.2006, 17:36
So wirklich wird dir da niemand helfen können, ausser ein ARM-Manual und die Dokumentation, was sich hinter den Makros und Strukturdefinitionen verbirgt.

Das ganze soll offenbar ne PWM werden. Wird der Zähler mit 2.5MHz getaktet, dann vergehen pro ms 2500 Takte/Zählerinkremente. Nach 10000 Takten sind 4ms voll und nach 35000 Takten sind die 14ms vorbei, nachdem wieder alles von neu beginnt.

28.01.2006, 17:05
HI,
danke für die Antwort.
Also ich kenne diese Formel: 2,5 MHz / N = Taktfrequenz des Timers
Wobei N in diesem Fall TC-RC ist.
Nur weiß ich leider nicht wie man von den Zeitangaben auf die gewünschte Frequenz des Timers kommt.

greetz
goob