PIC 16F84 obsluha EEPROM a Časovača

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
meno
Příspěvky: 930
Registrován: 04 říj 2004, 02:00
Bydliště: Czechoslovakia

PIC 16F84 obsluha EEPROM a Časovača

#1 Příspěvek od meno »

PIC 16F84 ma integrovanú malú pamäť EEPROM ktorej obsah sa zachová i po odpojení napájania zaujímalo by ma ako sa da do tejto pamäťe pristupovať (ukladať,čítať,mazať data). Takisto by ma zaujímalo akým spôsobom je možné obslužiť integrovaný časovač TMR0 napríklad chcem aby každu sekundu program vykonal istú operáciu napr. skok na nejaké navestie. Za odpoveďe vopred Ďakujem !!! :D

Uživatelský avatar
galjo
Příspěvky: 1352
Registrován: 15 črc 2005, 02:00
Bydliště: záp.slovensko

#2 Příspěvek od galjo »

K prístupu do pamate je zapotreby programátor. A k programovaniu PIC je program ktorý je vynikajúci, len je treba sa naučiť s ním programovat. :D

Uživatelský avatar
meno
Příspěvky: 930
Registrován: 04 říj 2004, 02:00
Bydliště: Czechoslovakia

#3 Příspěvek od meno »

Čítal som že do pamäťe EEPROM je možné pristupvať aj z programu POZOR nemyslým pamäť pre program !

Uživatelský avatar
galjo
Příspěvky: 1352
Registrován: 15 črc 2005, 02:00
Bydliště: záp.slovensko

#4 Příspěvek od galjo »

meno píše:Čítal som že do pamäťe EEPROM je možné pristupvať aj z programu POZOR nemyslým pamäť pre program !
Máš pravdu - ten program si treba vyrobiť, alebo kúpiť - (rozum nedáva nikto zadarmo.)

Uživatelský avatar
durmitor
Příspěvky: 199
Registrován: 02 lis 2005, 01:00
Bydliště: Pardubice
Kontaktovat uživatele:

#5 Příspěvek od durmitor »

Galjo, evidentne dela jen ze vi o cem mluvi. Nevim proc se vyjadruje, kdyz nechce poradit. Konkretni informace najdes na strane 33 (kapitola 7) v datasheetu
Podpis na houby

Jirka
Příspěvky: 2031
Registrován: 01 črc 2005, 02:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#6 Příspěvek od Jirka »

Tady najdeš podprogram pro čtení a zápis do EEPROM
http://www.cmail.cz/doveda/procesory/pgm16f84.htm

( http://www.cmail.cz/doveda/ )
*****

Uživatelský avatar
galjo
Příspěvky: 1352
Registrován: 15 črc 2005, 02:00
Bydliště: záp.slovensko

#7 Příspěvek od galjo »

durmitor píše:Galjo, evidentne dela jen ze vi o cem mluvi. Nevim proc se vyjadruje, kdyz nechce poradit. Konkretni informace najdes na strane 33 (kapitola 7) v datasheetu
Programovanie sa treba naučiť - radit to je ako učiť od základov a baviť sa vyše mesiaca ako na to, je trochu zabijanie času. :P

Uživatelský avatar
ViPali
Příspěvky: 524
Registrován: 21 lis 2005, 01:00
Bydliště: Bratislava

#8 Příspěvek od ViPali »

Myslím, že je to omyl, pretože niekedy stačí malé naťuknutie a vie ako ďalej. Ak sa budeme všetci hrať na majstrov športu, tak načo sme tu.

Zápis do EE je lepšie popísaný v 16F818 na str 29.

BANKSEL EECON1 ...........; Select Bank of EECON1
BTFSC EECON1, WR........ ; Wait for write
GOTO $-1 .......................; to complete
BANKSEL EEADR .............; Select Bank of EEADR

;najskôr si pripravíš adresu, kam budeš zapisovať
MOVF ADDR, W ...............; ADDR = moja adresa
MOVWF EEADR................ ; Data Memory Address to write

;potom data, ktoré budeš zapisovať
MOVF VALUE, W ...............; VALUE = moje data
MOVWF EEDATA ...............; Data Memory Value to write

; a potom povinnú sekvenciu, ktorá to tam uloží
BANKSEL EECON1 ...........; Select Bank of EECON1
BCF EECON1, EEPGD ........; Point to DATA memory
BSF EECON1, WREN ........ ; Enable writes
BCF INTCON, GIE ............; Disable INTs.
MOVLW 55h .....................;
MOVWF EECON2 ..............; Write 55h
MOVLW AAh ....................;
MOVWF EECON2 ..............; Write AAh
BSF EECON1, WR .............; Set WR bit to begin write
BSF INTCON, GIE .............; Enable INTs.
BCF EECON1, WREN ..........; Disable writes

Uživatelský avatar
galjo
Příspěvky: 1352
Registrován: 15 črc 2005, 02:00
Bydliště: záp.slovensko

#9 Příspěvek od galjo »

máš pravdu - potom pride otázka čo je to ?? ADDR = moja adresa ??? a čo je to VALUE = moje data a nepracuje to... a potom poraď , alebo môžeš mu ten program vyrobiť až máš toľko času..lebo on o tom čítal a malo by to byť funkčné..

Uživatelský avatar
durmitor
Příspěvky: 199
Registrován: 02 lis 2005, 01:00
Bydliště: Pardubice
Kontaktovat uživatele:

#10 Příspěvek od durmitor »

galjo píše:máš pravdu - potom pride otázka čo je to ?? ADDR = moja adresa ??? a čo je to VALUE = moje data a nepracuje to... a potom poraď , alebo môžeš mu ten program vyrobiť až máš toľko času..lebo on o tom čítal a malo by to byť funkčné..
No musim Ti dat v necem za pravdu. meno by si mel nejdriv asi poradne precis datasheet a zacit s jednossima vecma. Pokud to uz udelal, tak jedine dobre. Protoze jenom poctivym cvicenim se clovek neco muze dobre nacit. Premyslel jsi ale ze treba uz delal s nekterymi procesory od jineho vyrobce, ma neco uz za sebou a tady jen tape, protoze je to proste jinak nez je zvyklej. Ja sam delam se tremi druhy procesoru a PIC jsem prakticky jeste nikdy nedelal. Proto vim, ze ac mam neco za sebou, budu rad kdyz mi nekdo poradi. Od toho je tu tohle forum a od toho sem chodime. Ne jenom pro rady, ale taky je davat. Predpokladam, ze meno je dost inteligentní na to aby si ViPaliho priklad dobre vylozil...
Podpis na houby

Uživatelský avatar
ViPali
Příspěvky: 524
Registrován: 21 lis 2005, 01:00
Bydliště: Bratislava

#11 Příspěvek od ViPali »

Možno že chlapec skutočne začína, a ešte mu nikto nepovedal, že na stránke www.microchip.com si môže stiahnuť datasheet pre všetky procesory a veľa aplikácii z ApNotes.
No a zabudli sme na ten Tmr0.

V registri INTCON nastaviš bit 7 a 5 (gie, t0ie) do 1, čím povolíš prerušenie Global a Timer0.
V OPTION nastaviš bit 0,1,2 (ps0 - ps2) preddelič (napr. 111 = 256) a T0cs 0/1 podľa zdroja impulzov, psa = 0 cez preddelič.
Potom do T0 vložíš FFh.
256(T0) x 256(Ps) = 64k
Ak máš T0cs = 1 a cez RA4 ti vstupuje signál z 32k krištálu, tak každé 2sec ti nastaví bit T0if (intcon) čo vyvolá prerušenie.
Ak máš T0cs = 0 a Fosc 4MHz, tak do preddeliča ti vstupuje frekvencia Fosc/4 = 1MHz. Potom 1MHz / 64k = 16, to znamená, že 16 krát za sekundu ti vyvolá prerušenie, čo ošetríš v nejakom registri, do ktorého na začiatku vložíš 16 a budeš ho každým prerušením dekrementovať.

Rada na záver, zabudni na 16F84 a programuj 16F818, 16F819, 16F88

Ak bude problém, tak sa spýtaj, určite sa tu niekto najde, kto ti poradí.

Uživatelský avatar
meno
Příspěvky: 930
Registrován: 04 říj 2004, 02:00
Bydliště: Czechoslovakia

#12 Příspěvek od meno »

Za všetky odpovede dakujem ! S PIC skutočne začínam ,časovanie som zatial riešil len pomocou časovacích slučiek , a o použití časovačov som nemohol najsť nejaké ucelené info v SL alebo CZ !

Uživatelský avatar
ViPali
Příspěvky: 524
Registrován: 21 lis 2005, 01:00
Bydliště: Bratislava

#13 Příspěvek od ViPali »

Zabudol som upozorniť, že po prerušení musíš vynulovať T0if - bcf intcon,2

Ak chceš robiť kratšie intervaly, tak vložíš do T0 nejaké iné číslo (napr. 73), ktoré musíš ale na začiatku každého prerušenia zapisovať do T0.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“