Jump to content
ELFORUM - Forumul Electronistilor
Sign in to follow this  
Georgecpr

PIC16F628 - TMR1

Recommended Posts

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.

Share this post


Link to post
Share on other sites

trebuie sa meargace ai setat este corecteu am pus quartz de 32kHz cu condensatori de 27p la masa

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Guest alex

Foloseste mai bine quartz de 3,2768MHz in combinatie cu TMR0. Asa o sa ai o intrerupere la secunda, nu la doua.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.