Vai al contenuto
PLC Forum


At90s2313 & Clock Cycle Counter - Dove sbaglio o come faccio?


eeprom

Messaggi consigliati

Ciao ragazzi,

ho un quesito posto da un mio professore di assembler per AVR che non riesco a risolvere, in pratica mi è stato chiesto di misurare i cicli di clock che impiega una comunicazione con la seriale tramite microcontroller AT90S2313. Allora mi son detto nulla di più semplice, allora quando do il via alla seriale per trasmettermi il byte attivo il contatore e poi quando la seriale mi dice che ha finito io lo spengo il contatore e gli faccio sputare il valore nella seriale. Il problema in parte è stato risolto, nel senso che sono riuscito a fare questo ma il mio professore mi ha chiesto di ottimizzare il codice, perchè dice che non è preciso. Noi stiamo studiano il "Timig Analysis" e la precisione è tutto. Alego di seguito i vari pezzi di code che fanno questo:

Setto_ModeCounter:

ldi r17, 0x82 ; 10xx 0x0x: enb Timer1

out TIMSK, r17

ldi r17, 0x00

out TCCR1A, r17

ldi r17, 0x00

out TCCR1B, r17

rjmp insLoop

Setto_StartCounter:

ldi r17, 0x00 ; / Stop

out TCCR1B, r17 ; | and

out TCNT1H, r17 ; | clear

out TCNT1L, r17 ; \ Timer1

ldi r17, 0x01 ; / Restart

out TCCR1B, r17 ; \ Timer 1

clr r12 ; / Restart

rjmp insLoop

Setto_EndCount:

ldi r17, 0x00 ; / Stop

out TCCR1B, r17 ; \ Timer1

rjmp insLoop

GetTimer:

ldi YL, 0x60

clr r15

in r25, TCNT1L

st Y+, r25

inc r15

in r25, TCNT1H

st Y+, r25

inc r15

mov r25, r12

st Y+, r25

inc r15

rjmp MainTRxRoutine

Io non so più dove mettere le mani, come posso fare a far contate proprio in cicli di clock l'AVR senza troppe istruzioni? dice che le istruzioni alterano il conteggio cosa che invece non deve verificarsi.

Sapreste consigliarmi un codice che faccio quello che ho postato sopra? cioè initializza il counter fa lo start e lo stop poi quella che li sputa fuori posso utilizzzare anche la mia!

Vi ringrazio a tutti anticipatamente per l'aiuto che potete darmi ma veramente io certe cose non le capisco.

Ciauz

Link al commento
Condividi su altri siti


Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...