Sari la conținut
ELFORUM - Forumul electronistilor

PIC16F628 - TMR1


Vizitator Georgecpr

Postări Recomandate

Vizitator Georgecpr

Salut!Vreau sa realizez un ceas digital folosind um pic16f628.M-am hotarat sa folosesc un cuartz la 32,768KHz si Timer1(pe 16 biti).Astfel as obtine o intrerupere la fiecare 2 secunde, iar la 30 de intreruperi se obtine un minut intreg.Am legat cuartzul la piniiRB6,RB7,iar in T1CON am setat(am pus 1):prescale 1:1,TMR1ON,TMR1CS(counter,osc extern),T1SYNC(nu se face sincronizarea) si T1OSCEN =>[0001111],dar NU MERGE! In datasheet spune ca intrerea este pt un oscilator extern:"A crystal oscillator circuit is built in between pins T1OSI (input) and T1OSO (amplifier output). It is enabled bysetting control bit T1OSCEN (T1CON<3>). The oscillator is a low power oscillator rated up to 200 kHz. It willcontinue to run during SLEEP. It is primarily intended for a 32 kHz crystal."dar se comporta de parca ar fi un oscilator ER(care foloseste o rezistenta externa pt a seta frecventa) pt k daca pun in scurt RB6 si RB7 incepe sa oscileze cu aproape 32KHz(pt k obtin intreruperi la o secunda si ceva).Intrebarea mea este: Se poate monta un oscilator extern(cuartz)la pinii RB6,RB7 sau am interpretat eu aiurea datasheetul? Ce pot face sa obtin intreruperi(la 1-2 secunde)? Asta e singurul lucru care mai e de realizat si termin(aparent). PS: ma gandeam sa folosesc oscilatorul intern de 4MHz cu TMR1 in timer mode, dar am inteles ca frecventa lui nu e chiar la valoarea aia.

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

Top autori în acest subiect

  • bogdanovich

    10

  • Cristiano

    6

  • cirip

    5

  • sofian

    2

Top autori în acest subiect

Vizitator Georgecpr

Poti sa-mi trimiti p mail o schema(pe cele d p forum nu le pot vedea k imi trebuie un activex)? Poate e ceva ce nu e legat bine. Nu inteleg de ce tocmai eu! Am sa mai cumpar un pic k poate l-am prajit p asta...s vad dak asa merge.

Link spre comentariu
  • 2 săptămâni mai târziu...

referitor la microcontrolerul PIC 16F87** spunetzi-mi si mie va rog unde pot gasi o documentatie solida despre timere si modurile de functionare ale acestora. Si inca o intrebare: un simulator cat de cat bunishor si gratis pe deasupra pentru pic-uri pot gasi sau cer prea mult? merci

Link spre comentariu

referitor la microcontrolerul PIC 16F87** spunetzi-mi si mie va rog unde pot gasi o documentatie solida despre timere si modurile de functionare ale acestora. Si inca o intrebare: un simulator cat de cat bunishor si gratis pe deasupra pentru pic-uri pot gasi sau cer prea mult? merci

Cea mai buna documentatie este foaia de catalog (datasheet):http://ww1.microchip.com/downloads/en/D ... 39582b.pdfUn simulator f. bun (si gratuit) e deja incorporat in mediul de dezvoltare oferit de Microchip: http://ww1.microchip.com/downloads/en/D ... 22full.ZIP
Link spre comentariu

merci ptr informatii. Am gasit simulatorul respectiv shi chiar e bun. Spune-mi te rog daca pot cumva sa-l fac sa-mi arate si in cat timp executa operatziile, de exemplu cat sta intr-o functie, in program. merci mult

Link spre comentariu

explicati-mi si mie ce e cu prescale ala va rog frumos la timere ca n-am gasit nici o documentatie care sa-mi explice :((. Din cate "deduc", prin bitii respectivi din registru T1CON pot sa maresc perioada clock-ului (adica sa micsorez frecventza cu alte cuvinte). Spunetzi-mi va rog daca gresesc.merci mult.Si inca ceva, folosind oscilatorul intern la 20 MHz care este intervalul de timp maxim (cu aproximatie) pe care pot sa-l obtzin intre doua intreruperi consecutiv activate ale timerului 1. N-am nevoie sa se activeze prea repede intreruperea respectiva pentru ca apar intarzieri mari in program.Cu scuze pentru doua posturi consecutiv, sunt nou pe forumuri si nu mi-am dat seama ca pot sa reeditez un post anterior.

Link spre comentariu

in cat timp executa operatziile

Foloseste functia Stopwatch a simulatoruluiInterpretarea ta despre prescale este corecta.In figura 6-2 din foaia de catalog este data schema timerului 1. De acolo se deduce ca:Frecventa de atac a prescalerului este Fosc/4=20/4=5MHz. perioada corespunzatoare frecventei de 5MHz este de 200ns.Rata maxima de divizare a prescalerului este de 8.TMR1 are 16 biti, deci rata lui maxima de divizare este 2^16=65536In consecinta, perioada maxima a intreruperilor, daca folosesti osc de 20MHz, va fi Tmax=200ns*8*65536=0.104 secunde, respectiv frecventa de 9.5HzCirip
Link spre comentariu

da merci mult. Adevarul e ca nu credeam ca exista si oamenii care intradevar vor sa te ajute, asha ca tot respectul pentru voi. Pai cu forumul asta ma gandesc sa ma las de facultate!!!!acuma inca doua probleme: 1)cum fac sa scriu, in cod C, o anumita data la o anumita adresa din memorie. Chestia care ma intereseaza e sa opresc WDT-ul, dar nu stiu cum sa scriu la adresa 2007 un cuvant, vad ca acest registru nu e un SFR. pls2) ma pot folosi de portul serial prin care programez microcontrolerul ca sa comunic inapoi cu calc? Ideea e ca vreau sa afisez pe un terminal niste variabile din program, sa vad daca se modifica cum trebuie sau nu. multumesc mult

Link spre comentariu

cu forumul asta ma gandesc sa ma las de facultate!!!!

Probabil ca glumesti...1)Adresa 2007 nu este accesibila la run time. Acolo este cuvantul de configurare la care ai acces numai in timpul programarii. Cel putin asa imi amintesc eu ca e la 87x.2)Poate ca e posibil, dar nu cred ca e cea mai fericita alegere. Ce programator ai? Folosesti seriala sau paralela? Sunt o gramada de programatoare. E greu de spus daca merge. Posteaza schema si discutam la concret.Pe de alta parte, de ce sa trimiti la un terminal cand simulatorul ala merge la fixulescu. Poti creea stimuli si analiza fiecare variabila pe care o creezi.Cirip
Link spre comentariu

Eu vreau sa fac un regulator PID. De fapt vreau sa reglez temperatura apei dintr-un anumit volum. Temperatura o citesc printr-un traductor PT100, iar comanda regulatorului o dau unui fierbator electric(elementul de executzie) printr-un releu modulat in timp.Problema e ca vreau sa vizualizez (grafic) evolutzia comenzii in timp si evolutzia iesirii, sa vad daca intradevar algoritmul meu de reglare se comporta ca un PID sau nu, in fine ideea e ca am nevoie de niste date din proces la anumite perioade de esantionare( 5-10 s), pentru ca apoi sa desenez grafic si sa ma laud dupa aia :d.microcontrolerul este un PIC 16F87XA. Cu watch dog-ul ala nu prea am inteles. Cum fac sa-l opresc? merci

Link spre comentariu

Din schema aia banuiesc ca folosesti un bootloader. In acest caz poti folosi interfata seriala si pentru programare, si pentru debug.WDT se poate opri doar prin programare (in cuvantul de configurare, care nu poate fi accesat de programului din PIC). In cazul in care ai un bootloader, nu cred ca poti schimba acest cuvant.PS: desenul ala din poza mi se pare cunoscut, unde faci facultatea?

Link spre comentariu

Corect. Daca lucrezi cu bootloader, nu ai acces la locatia 2007.Daca folosesti ptr programare schema postata, aia nu e programare cinstita. E o varianta simplificata, care foloseste un softuletz deja existent in procesor: bootloaderul. Exista programatoare "adevarate" care merg pe portul serial sau pe paralel. In sensul asta am pus intrebarea din postul anterior. Nu stiu ce este acela "releu modulat in timp". Eu am facut un regulator PID pentru termostatul meu de bors sau pentru crescut aluatul de paine si cozonaci (Nu radeti, ca e chestie serioasa! :supz: :rolleyes: ), dar folosesc comanda in faza cu triac ptr reglajul puterii in rezistentele de incalzire si un termometru digital de tip DS1620 pentru masurarea temperaturii.Simularea initiala am facut-o in Matlab (merge foarte bine si in Excel), apoi in simulatorul MPLABului. Am poze, daca intereseaza pe cineva. Afisez temperatura masurata, temperatura programata (referinta) si procentul din puterea maxima necesar ptr mentinerea temperaturii. Cand ridic capacul la cutia termostatului, creste putin procentul ca sa compenseze pierderea de caldura. :supz: , dar temperatura sta beton.Spor!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