Sari la conținut
ELFORUM - Forumul electronistilor

De ce nu intarzie cat trebuie codul asta? (16F84)


Vizitator alex

Postări Recomandate

Vizitator alex

In continuarea topicului cum se calculeaza timpul de intarziere la PIC16F84A am si eu o problema. Inspirandu-ma de acolo am facut scris urmatorul cod:

ORG     0	GOTO INIT	ORG     4	GOTO BREAK	#include "bank.inc"	#include "lcd.inc"BREAK    decfsz COUNT1,1	GOTO BREAK	CALL    CLOCK	CALL    DISPLAY	movlw .244	movwf COUNT1 		RETFIEINIT    	LCDinit	BANK1	movlw b'00000111'	movwf OPTION_REG	BANK0	clrf TMR0	movlw b'10100000'	movwf INTCON	movlw .244	movwf COUNT1 	MAIN    	GOTO    MAIN

Intrebarea este de ce codul nu intarzie cu o secunda (e un ceas si o ia razna)? E ca si cum nu ar tine cont de decfsz COUNT1,1.

 

P.S. Quartz de 4MHZ, PIC16F84.

Link spre comentariu
  • Răspunsuri 2
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Zile populare

Top autori în acest subiect

Salut alex,Asa la o prima vedere am impresia ca nu numeri intreruperile. Din ceea ce citesc eu, codul tau face asa.-initializeaza intreruperile de la T0 si asteapta.-cand primeste prima intrerupere, numara repede-repede pana la zero, chiar in rutina de intrerupere, apoi iese.Intreruperile le primesti la 1/(1e6/256)=0.2ms. Nu e de mirare ca (probabil) ca o ia inainte bezmetic.Ca sa faci intarziere trebuie sa numeri intreruperile. Adica la fiecare intrerupere, decrementezi contorul si iesi din int.Chiar si asa, daca ai numara intreruperi, tot nu pare sa iasa o secunda. Ar iesi (1/(1e6/256))*244=62ms.Ca sa obtii o secunda, tinand cont ca pleci de la 1MHz, ar trebui ca dupa prescaler sa mai divizezi cu ceva de ordinul 1M/256=3906=0xF42, adica mai ai nevoie de 12 biti. 8 biti nu sunt suficienti. Dezvoltarea in factori ptr intarzierea exacta o faci tu. Eu am calculat numai un ordin de marime ptr ratele de divizare.Cirip

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări