N
nigelmercier
Guest
Es vēlos izmantot TIMER0 kā skaitītājs, vēlams 16-bit, skaitot ārējie impulsi uz PIC18F2550 T0CKI pin.
Man ir noteikti T0CON = 0b10101000;
Kā es varu izlasīt counter vērtības?Vai man ir jāizmanto skaits = ((256 * TMR0H) TMR0L), vai ir veids, kā lasīt 16-bitu vērtības tieši?
Un ko par atgriezi taimeri?
Tas ir kods, es esmu manā pārtraukt radošas.Ideja ir tāda, ka es izlasīju TIMER0 ik pēc sešām sekundēm, uz tachRead (skatīt pēdējo bloku kods):Kods:
par spēkā neesošu pārtraukt ()
(/ / ISR Fosc / 4 = 2MHz (periods 0.5uS), prescaler 16, pārtraukt @ 256 x 16 x 0,5
ja (TMR2IF_bit)
(
intCount ; / / pieauguma pārtraukt counter
PORTA.F2 =! PORTA.F2; / / DEBUG pārslēgtos uz tach testiem (saistīti ar T0CKI pin)ja (intCount> = (488)) / / 256 x 16 x 0.5uS x 488 ir apmēram 1 sekunde @ 8MHz
(
IntLED = 1; / / ieslēgt pārtraukt darbību, LED
oddEven = oddEven;! / / toggle nepāra / pat otro karogu uz mirgojošs displejs
intCount = 0; / / reset pārtraukt countertime6s ;
ja (time6s> = 6) / / lasīt TMR0 counter & update taimeri ik pēc 6 sekundēm
(
time6s = 0;
tachRead = ((256 * TMR0H) TMR0L); / / tach lasījums no TIMER0 par TOCKI tapas
TMR0H = 0;
TMR0L = 0;
[Drēbnieks]
Man ir noteikti T0CON = 0b10101000;
Kā es varu izlasīt counter vērtības?Vai man ir jāizmanto skaits = ((256 * TMR0H) TMR0L), vai ir veids, kā lasīt 16-bitu vērtības tieši?
Un ko par atgriezi taimeri?
Tas ir kods, es esmu manā pārtraukt radošas.Ideja ir tāda, ka es izlasīju TIMER0 ik pēc sešām sekundēm, uz tachRead (skatīt pēdējo bloku kods):Kods:
par spēkā neesošu pārtraukt ()
(/ / ISR Fosc / 4 = 2MHz (periods 0.5uS), prescaler 16, pārtraukt @ 256 x 16 x 0,5
ja (TMR2IF_bit)
(
intCount ; / / pieauguma pārtraukt counter
PORTA.F2 =! PORTA.F2; / / DEBUG pārslēgtos uz tach testiem (saistīti ar T0CKI pin)ja (intCount> = (488)) / / 256 x 16 x 0.5uS x 488 ir apmēram 1 sekunde @ 8MHz
(
IntLED = 1; / / ieslēgt pārtraukt darbību, LED
oddEven = oddEven;! / / toggle nepāra / pat otro karogu uz mirgojošs displejs
intCount = 0; / / reset pārtraukt countertime6s ;
ja (time6s> = 6) / / lasīt TMR0 counter & update taimeri ik pēc 6 sekundēm
(
time6s = 0;
tachRead = ((256 * TMR0H) TMR0L); / / tach lasījums no TIMER0 par TOCKI tapas
TMR0H = 0;
TMR0L = 0;
[Drēbnieks]