Prosím, měl bych jeden dotaz. Chtěl bych začít něco s nějakými malími Microchip PIC mikropočítači. Zatím jsem měl zkušenost s 16F84 a 16F627, 16F628. Jaká 8-pinová PIC je neznámější (abych s ní začal)?
Děkuji mnohokrát
Zkuste začít třeba s 12F675.
Prosim o radu, potrebuju naprogramovat 12f629 nebo 675, v DS pisou ze se musi nejdrive ulozit kalibracni hodnota oscilatoru atd…(ci co)
mam pouze HEX soubor kterej tam potrebuju dostat (stahlej s netu),jak to udelat??? mam WinPic+PicProg+redukce na 8pin
v DS moc sdily nejsou,ci to nak nechapu, staci hex nahrat do bufferu a tu hodnotu napsat na to posledni barevny misto kdyby se prepsala???
Přečteš PIC v programátoru, opíšeš si poslední hodnotu v paměti a tu pak napíšeš do programu, než ho nahraješ do PICu. Doufám, že to tak je.
to me taky doslo ze nak tak ,ale jek do programu??? kdyz mam jenom HEX,
teoreticky: kdyz do nej nahraju program bez ty hodnoty tak mozna nepude oscilator ci spatne,a da se to pak este opravit kdyz si tu hodnotu nejdriv zapisu a pak preprogramovat
To je jednoduchý, vem si disassembler přelož to zpětně na ASM a pak tam dopiš konfigurační hodnotu a znova to přelož do HEX (Easy Fast Cheap) .
Slušné programátory tuto situaci ošetřují. Opravuje se to vcelku pracně, dají se na to nalézt postupy. PicKit 2 to dovede jednoduše. Ale ty zvol tento postup:
-
Přečti programátorem poslední místo paměti na adrese 0x3FF, je tam instrukce RETLW 0xXX, třeba například RETLW 0x88. Převeď 0x88 do binárního tvaru tj. ‘10001000’. Pernamentním fixem udělej značky na piny 1 - 8 procesoru, kde je jednička tam udělej tečku. A máš poznačenu kalibrační konstantu natrvalo.
-
Na konec programu pak vždycky napiš binární hodnotu podle značek.
ORG 0x3ff
RETLW B’10001000’
Když máš HEX, tak nejprve přečti kalibrační konstantu, pak naloaduj hex do programovacího software a pak vepiš ručně na adresu 0x3FF 0x34XX.
To musí jít snad v každém SW. A pokud ne, tak stačí importovat do MPLABu modifikovat a exportovat do hex.
Pokud máš program, který s OSCCAL pracuje, tak bude havarovat v případě, že na konci paměti nebude instrukce RETLW. Na jejím parametru ale obvykle zas tak nezáleží. Procesor pojede jen o trochu rychleji nebo pomaleji. Existuje ale ještě podobný problém a to je konfigurační slovo na adrese 0x2007. Tam jsou Bandgap bity a ty by se také neměly přemazat.
tak sem to prudnul!! BOHUZEL bez dobryho vysledku ,hodilo mi to “programovani spatne” a pri zpetnym cteni mi to hodilo asi na 30 ruznejch mistech 2AAA ,se picnu
JINAK DEKUJU
To je problém pochybnejch programátorů, nesplňujících specifikace.
- Zkrať všechny kabely programátoru.
- Mezi Vdd a GND procesoru by neměl být při programování žádný kondenzátor
- Zkontroluj velikost programovacího napětí Vp.
mam tenhle programator mlab.cz/Modules/PIC/PICPGR30 … XP.cs.html
vdd 4.78v
vpp 9.24v
s timdle programuju 16f84 uz asi pres rok a v pohode
VDD je v poho, ale VPP 9,24 je málo, minimum je 12,7 V
Jenže 12F675 má naprosto odlišný programovací algoritmus.
Jak si zjistil to napětí Vpp. Při programování nebo při nastavování HW?
Podle mne nemáš chybu v HW, ale v SW. Program WinPic umí dobře programovat PIC16F84, ale na PIC12Fxx se nehodí (dělá chyby). Zkus WinPic800, dá se dobře nastavit a počeštit. Má i detekci obvodu a s tou kalibrační konstantou automaticky spolupracuje. Nejnovější verze je 3,63c.
Pokud není něco jasné ozvěte se. Mimochodem v Amatérském rádiu PE běží seriál o PIC a tam je vše i s obrázkama.
Čau Martin.