Vizitator Georgecpr Postat Noiembrie 11, 2005 Partajează Postat Noiembrie 11, 2005 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
sofian Postat Noiembrie 11, 2005 Partajează Postat Noiembrie 11, 2005 trebuie sa meargace ai setat este corecteu am pus quartz de 32kHz cu condensatori de 27p la masa Link spre comentariu
Vizitator Georgecpr Postat Noiembrie 11, 2005 Partajează Postat Noiembrie 11, 2005 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
Vizitator alex Postat Noiembrie 11, 2005 Partajează Postat Noiembrie 11, 2005 Foloseste mai bine quartz de 3,2768MHz in combinatie cu TMR0. Asa o sa ai o intrerupere la secunda, nu la doua. Link spre comentariu
sofian Postat Noiembrie 12, 2005 Partajează Postat Noiembrie 12, 2005 uite schema ce o folosesc eu Link spre comentariu
bogdanovich Postat Noiembrie 24, 2005 Partajează Postat Noiembrie 24, 2005 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
Cristiano Postat Noiembrie 24, 2005 Partajează Postat Noiembrie 24, 2005 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? merciCea 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
bogdanovich Postat Noiembrie 25, 2005 Partajează Postat Noiembrie 25, 2005 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
bogdanovich Postat Noiembrie 25, 2005 Partajează Postat Noiembrie 25, 2005 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
cirip Postat Noiembrie 25, 2005 Partajează Postat Noiembrie 25, 2005 in cat timp executa operatziileFoloseste 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
bogdanovich Postat Noiembrie 25, 2005 Partajează Postat Noiembrie 25, 2005 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
cirip Postat Noiembrie 25, 2005 Partajează Postat Noiembrie 25, 2005 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
bogdanovich Postat Noiembrie 26, 2005 Partajează Postat Noiembrie 26, 2005 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 .microcontrolerul este un PIC 16F87XA. Cu watch dog-ul ala nu prea am inteles. Cum fac sa-l opresc? merci Link spre comentariu
Cristiano Postat Noiembrie 26, 2005 Partajează Postat Noiembrie 26, 2005 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
cirip Postat Noiembrie 27, 2005 Partajează Postat Noiembrie 27, 2005 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
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum