programiranje 16F877 i 18F422 - kako?
Moderators: pedja089, stojke369, [eDo], trax
programiranje 16F877 i 18F422 - kako?
Pozdrav svima,
imam onaj univerzalni programator (AllPic) i program IcProg 1.05D i s njime sam programirao 16F628 i 16F84 bez problema. Ali kad sam htio probati 16F877 i 18F422 svaki put dobijem onu famoznu gresku nesto verify failed at address 0000h
Porbao sam mijenjati onaj jumper sto ima, mislim da je to ono za napon kod programiranja, i ni to mi nije pomoglo.
Imam ispravljac kojeg drzim na 12V ali sam mjerio da ima oko 11.5 kad je nesto ukljuceno u njega.
Do cega je? Mali napon? Podesavanja IcProga????
Ima li itko ideju?
Pozdrav
imam onaj univerzalni programator (AllPic) i program IcProg 1.05D i s njime sam programirao 16F628 i 16F84 bez problema. Ali kad sam htio probati 16F877 i 18F422 svaki put dobijem onu famoznu gresku nesto verify failed at address 0000h
Porbao sam mijenjati onaj jumper sto ima, mislim da je to ono za napon kod programiranja, i ni to mi nije pomoglo.
Imam ispravljac kojeg drzim na 12V ali sam mjerio da ima oko 11.5 kad je nesto ukljuceno u njega.
Do cega je? Mali napon? Podesavanja IcProga????
Ima li itko ideju?
Pozdrav
Algoritam programiranja PIC16 serije je potpuno isti za sve MCU ako imas opciju ISPa ! a i pony i ICprog koriste serijski ISP mod !!! Napon prepruceni programiranja na pinu RESET je 12,76V [ o tome sam nesto piso vec tu] , Vcc 5V ali bi morao ic i manji do 3V6 bez problema !
Ako ti program programira 16F84 nema nikakav razlog da to ne bude i s 16F876/877 jer je potpuno isti ISP algo !! Provijeri si konfiguraciju i napon na reset pinu jer kadkad neki MCUi nece da se programiraju na 11--11,5V !!
Uostalom nije mi jasto tko to radi progrmtore koji ne postuju specifikaciju
za napone programiranja koje je kao i algoritam dao proizvodjac. Vec sam sam se susretao sa slicnim "proizvodima" tu iz Rijeke , neznam koji to rade ali.... obicno je ta greska namijerno spusten napon programiranja na 11--11,5V , vijerojatno kod njih ljudi i kupuju smart kartice i MCUe !
Digni si taj napon Vpp na 12,6V !!!!!!!!
Ako ti program programira 16F84 nema nikakav razlog da to ne bude i s 16F876/877 jer je potpuno isti ISP algo !! Provijeri si konfiguraciju i napon na reset pinu jer kadkad neki MCUi nece da se programiraju na 11--11,5V !!
Uostalom nije mi jasto tko to radi progrmtore koji ne postuju specifikaciju
za napone programiranja koje je kao i algoritam dao proizvodjac. Vec sam sam se susretao sa slicnim "proizvodima" tu iz Rijeke , neznam koji to rade ali.... obicno je ta greska namijerno spusten napon programiranja na 11--11,5V , vijerojatno kod njih ljudi i kupuju smart kartice i MCUe !
Digni si taj napon Vpp na 12,6V !!!!!!!!
serija 18 bi mogla imat nesto izmijenjen algoritam programiranja u odnosu na 16 provijeri dali je da nije page mode u igri !? jel u tom programataru imas opciju za seriju 18 !? ako imas provijeri nacin spajanja na serijski programator iz dokumentacije chipa kojeg imas ili dokumenta o nacinu programiranja serije 18 [ ja sam vec pomalo zabravio detalje algoritma ].
Meni se bas i ne trazi dokumentaci ali ako imas u ICprog-u opciju za taj IC onda bi je trebao [ valjda] i podrzavat , ako nemas , to je drugo . Na primjer serija AVR 90sxxxx Atmelova ima principielno isti algo za programiranje kao i Mega ALI !!! sve mege imaju page mod programming 0d 64 byte do256 ovisi o ICu ! Za PIC18xxx provijeri si i konfiguracione bytove ako je vec bia koristen ! dali ga sustav identificira , moze li procitat ID ICa , "vecina fr*e to air" programatora to ne moze ! Da provijeris dal ti je IC zakljucan mozda , ako je moras ga prvo trebas pobrisat algoritmom za unlocking koji nije isti algoritmu za brisanje MCUa , al to vijerojatno znas !!
Sto se tice icprog-a i 18fxxx serije, mogu samo da potvrdim da to radi.
Ja sam ga koristio sa willem programatorom.
Konkretno 18f452 i 18f458.
Nemam pojma kako radi taj Allpic programator, ali o jednoj stvari moras da vodis racuna, a to je da PGM pin mora biti zakucan na masu u toku programiranja.
Pogledaj datasheet, nije za svaki pic pgm pin na istom mestu, kod nekih je RB5, kod nekih RB4,...
Sve prethodno vazi samo ako Allpic radi high-voltage programiranje .
Default Config word za svaki pic isporucen iz fabrike je sa LVP Enable,
i to cesto zna da kvari srecu,...
Ja sam ga koristio sa willem programatorom.
Konkretno 18f452 i 18f458.
Nemam pojma kako radi taj Allpic programator, ali o jednoj stvari moras da vodis racuna, a to je da PGM pin mora biti zakucan na masu u toku programiranja.
Pogledaj datasheet, nije za svaki pic pgm pin na istom mestu, kod nekih je RB5, kod nekih RB4,...
Sve prethodno vazi samo ako Allpic radi high-voltage programiranje .
Default Config word za svaki pic isporucen iz fabrike je sa LVP Enable,
i to cesto zna da kvari srecu,...
877 i 452 su pinkompatibilni pa ako je islo sa prvim ide i sa drugim, samo sto je 452 veca picajzla, a ima i vise flesa pa duze traje pa je i mogučnost greske kod nekvalitetnog programatora, invertera-buffera, ili dugog kabla, veca, moze se probatikoriirati brzinom i tajminzima koji su setabilni u icprogu ili slicnim programima, meni se desavalo da mi na sporijem pc-u daje greske dok na jacoj masini valjda tajming porta ide korektnije pa je i uC sretniji.... ima dosa tih sitnica koje mogu utjecati, imam 2 identicna picall lpt handmade programatora jedan flesa ko lud a drugi svaki 5.ti put nema objasnjenja... ja kazem da su 7405 izasli iz razlicitih preša...
da.. i fuse-ovi su ti ful kompliciraniji tako da ako ti i verify prodje kad propalis fuseove krivo nece krenuti osc ili se blesi po nekim krivim fuseovima, ali njih mozes programirati bez da programiras cijeli fles na novo... ne sjecam se ali mislim da je mene uvjek nerviralo zasto se nemoze sflesati a da eeprom ostane sa starim sadrzajem (tamo su mi uvjek bili neki setinzi...
Trebao bi se posebno moc brisati eeprom posebno flash kao i programirat , mislim da jedino unlock mode ne dozvoljava razdvajanje tog procesa.
U svakom slucaju algorita za rad s internim memorijama , prg i data, to jasno podrzava razlicitim naredbama .
Ja sam ih koristio u svom programatoru za PICeve i ATmele !
Nisam proucavao seriju 18F , tj vec sam to zaboravio bio sam to usporedjivao prije par godina bas radi programatora , ali pretpostavljam da prizvodjatj nije puno mijenjo na CUI -u MCUa.
Nego zasto ne iskoristis mogucnost samoprogramiranja koju svi Michrochipovi MCUi imaju pserije 16 , 17 ,18..] i ne napises bootloader .
Bit ce ti veoma lako i jednostavno reprogramirat MCU cak i u hodu preko sustava komunikacije [ pod uvijetom da moze prenijet sve znakove od 00h--FFh] koji koristis ili vise njih .
U svakom slucaju algorita za rad s internim memorijama , prg i data, to jasno podrzava razlicitim naredbama .
Ja sam ih koristio u svom programatoru za PICeve i ATmele !
Nisam proucavao seriju 18F , tj vec sam to zaboravio bio sam to usporedjivao prije par godina bas radi programatora , ali pretpostavljam da prizvodjatj nije puno mijenjo na CUI -u MCUa.
Nego zasto ne iskoristis mogucnost samoprogramiranja koju svi Michrochipovi MCUi imaju pserije 16 , 17 ,18..] i ne napises bootloader .
Bit ce ti veoma lako i jednostavno reprogramirat MCU cak i u hodu preko sustava komunikacije [ pod uvijetom da moze prenijet sve znakove od 00h--FFh] koji koristis ili vise njih .
ma da to mi je bilo u planu, samo daleko sam ja od nekog programera vise sam elektronicar.... a i one_man_band kad moras u kratko vrijeme uz jutarnji posao i familiju u nocnim satima razviti i proizvoditi nekakav hardware u kučnim uvjetima, gledaš na koji najkrači a opet funkcionalan način to učiniti...
ja pretežito programiram u pic_basic_pro-u imam sve sto mi je potrebno od instrukcija, optimiziranost koda miionako nije vazna jer za sad ne radim neku time_critical stvar, a primjerice uredjaj koji sam zadnji radio ima nekih 750 linija relativno urednog basica, mogu samo misliti kako bih to u asembleru izveo... ali ajde nije ovdje bila rijec o jezicima...
npr na telitovom gsm modulu bih mogao uspostaviti klasični carierr csd-om na neki modem i teoretski onda je com port racunala na modemu direktno okacen na uart pic-a i ako sam ispod svog fw-a postavio bootoader dovoljno je da nekim stringom restartam pic, tada bi bootloader trebao skuziti da na drugoj strani na racunalu ceka uttility sa novim firmwareom...
eh sada da je to slucajno i tako jednostavno, jos mi je uvjek jednostavnije skociti na objekat i sflesati uredjaj icd konektorom, ujedno ga i pregledati, i naplatiti intervenciju... ispravi me ako grijesim.
ja pretežito programiram u pic_basic_pro-u imam sve sto mi je potrebno od instrukcija, optimiziranost koda miionako nije vazna jer za sad ne radim neku time_critical stvar, a primjerice uredjaj koji sam zadnji radio ima nekih 750 linija relativno urednog basica, mogu samo misliti kako bih to u asembleru izveo... ali ajde nije ovdje bila rijec o jezicima...
npr na telitovom gsm modulu bih mogao uspostaviti klasični carierr csd-om na neki modem i teoretski onda je com port racunala na modemu direktno okacen na uart pic-a i ako sam ispod svog fw-a postavio bootoader dovoljno je da nekim stringom restartam pic, tada bi bootloader trebao skuziti da na drugoj strani na racunalu ceka uttility sa novim firmwareom...
eh sada da je to slucajno i tako jednostavno, jos mi je uvjek jednostavnije skociti na objekat i sflesati uredjaj icd konektorom, ujedno ga i pregledati, i naplatiti intervenciju... ispravi me ako grijesim.
Pa ipak je lakse to uradit od kuce i jeftinije ,tebi !! A sto se naplate tice jednostavno u bootloader ubasis mod za autorizaciju koda i sustav ne starta dok ne plate i kad plate ti ga "autoriziras" !!
Ali ok ako je tebi lakse tako da ga reflashiras programatorom uredu !!
Ali ipak razmisli , ako preko GSMa mozes prenijet sve znakove [00-FF] hmm.. kako bi tek tad mogao izgledat napredno i nista manje skupo !!
Uz to svakom korisniku mozes pridruzit njegov kod za autorizaciju , za svaki slucaj da ne dodje do zabune !
Programiranje bootloaderom ide brze i naravno nemas problema s cudima programatora i ne moras bit na licu mijesta .
Ako prenosis kratke nizove podatka dovoljan je i CS byte ! A i verifikaciju mozes odradit , ako mislis da je nuzda [ uglavnom nije] .
I sto je najvaznije ne moras brisat flash , bootloaderi ne brisu flash globalno da bi ga isprogramirali kao programator , vec reprogramiras samo onaj dio koji zelis mijenjat . Bukvalno mozes byte promijenit bez obzira dal ima page mode ili byte mode.
Kod Mikrochipovih MCUa 16F serije nema posebna zona za bootloader [ nebih tvrdio za 18F seriju .. ja sam ti na Atmel-ima] vec se pokretanje vrsi iz same aplikacije tj rutina bootloadera [ temeljna] je sastavni dio aplikacije kao i rutina za programiranje eeproma ! Naravno ako je kreiras !!!
Pozdrav
Ali ok ako je tebi lakse tako da ga reflashiras programatorom uredu !!
Ali ipak razmisli , ako preko GSMa mozes prenijet sve znakove [00-FF] hmm.. kako bi tek tad mogao izgledat napredno i nista manje skupo !!
Uz to svakom korisniku mozes pridruzit njegov kod za autorizaciju , za svaki slucaj da ne dodje do zabune !
Programiranje bootloaderom ide brze i naravno nemas problema s cudima programatora i ne moras bit na licu mijesta .
Ako prenosis kratke nizove podatka dovoljan je i CS byte ! A i verifikaciju mozes odradit , ako mislis da je nuzda [ uglavnom nije] .
I sto je najvaznije ne moras brisat flash , bootloaderi ne brisu flash globalno da bi ga isprogramirali kao programator , vec reprogramiras samo onaj dio koji zelis mijenjat . Bukvalno mozes byte promijenit bez obzira dal ima page mode ili byte mode.
Kod Mikrochipovih MCUa 16F serije nema posebna zona za bootloader [ nebih tvrdio za 18F seriju .. ja sam ti na Atmel-ima] vec se pokretanje vrsi iz same aplikacije tj rutina bootloadera [ temeljna] je sastavni dio aplikacije kao i rutina za programiranje eeproma ! Naravno ako je kreiras !!!
Pozdrav
ma, kazem ti u pbp-u su vecinu stvari doradili do kraja pa kad recimo
u deklaracijama ostavis BOOTLOADER_USED = 1 i ako je u pic prethodno flesan bootloader onda ga copiler postuje i implementira u fw...
jednostavno nisam nikad to probao preko gsm-a...
neznam dali si procitao u mom prethodnom textu kako ja vidim da bi to trbalo uciniti preko gsm linka
i da u mom firmweru sam ugradio to sto kazes... dok ne sjedne kesa radi u demo (sharware)modu stalno klijentu (svakih 1 sat) salje rnd poruke iz baze, tipa "nakon registracije uređaj vas više neće opsjedatiovakim porukama kao sto nece prebacivati iz auto u manuall mod.." i sl, pa tako kad smsom posalje aktivacijski kod sve sjedne na mjesto...
u deklaracijama ostavis BOOTLOADER_USED = 1 i ako je u pic prethodno flesan bootloader onda ga copiler postuje i implementira u fw...
jednostavno nisam nikad to probao preko gsm-a...
neznam dali si procitao u mom prethodnom textu kako ja vidim da bi to trbalo uciniti preko gsm linka
mislis li da bito otprilike tako trebalo ici ? csd-om ?na telitovom gsm modulu bih mogao uspostaviti klasični carierr csd-om na neki modem i teoretski onda je com port racunala na modemu direktno okacen na uart pic-a i ako sam ispod svog fw-a postavio bootoader dovoljno je da nekim stringom restartam pic, tada bi bootloader trebao skuziti da na drugoj strani na racunalu ceka uttility sa novim firmwareom...
i da u mom firmweru sam ugradio to sto kazes... dok ne sjedne kesa radi u demo (sharware)modu stalno klijentu (svakih 1 sat) salje rnd poruke iz baze, tipa "nakon registracije uređaj vas više neće opsjedatiovakim porukama kao sto nece prebacivati iz auto u manuall mod.." i sl, pa tako kad smsom posalje aktivacijski kod sve sjedne na mjesto...
Procitao sam text , vazno je samo dali jedan od modova slanja poruke moze poslat sve znakove ako moze , oda zasto nebi PC kao i mali MCU mogao kao TX GSM poslat poruku RX GSMu [ na uredjajima] ??
Ako moze [tj ima sve znakove ] napises si programcic za PC da to odradi kao sto ti kontroler s druge strana to radi , obavis test i to je to.
Mozda nebi bilo lose da TX uredjaj oznaci transfer posebnom sifrom cisto da se nebi dogdio "slucajan" ili namijeran prijenos nezeljenih podataka tj update -a FW.
Koristis standardnu proceduru za takve prijenose kratkih nizova. Guard byte , macko naredba , adresa , len , podaci i CS na kraju . maximalni len stavis 16 byte ili slicno i to je dovoljno.
Izgleda da serija 18F ima boot zonu cim ima opciju da ti ostavi bootloder , iako to nije bitno jer pravilnim stiranjem config bytova i lock bytova mozes odredit kako ce se ponasat FW. Gotovi ,od nekog preuzeti bootloader ,mozda i nije najbolje rijesenje !? najbolje je napisat svoj jer mozes u njemu definirat sve sto ti treba za zastistiu sustava i dozvola za update i tipove komunikacija setiranje config i lock bytova [ako treba] itd.., a aplikaciju onda pises po volji i kad jednom isporogramiras MCU koji ima bootloader vise ti ne treba brinut o cfg bytovima i sl jer ionako aplikaciju unosis preko njega , brze jednostavnije i sigurnije .
Ja radim za ATmega MCUima i obavezno makar i za demo aplikaciju napisem bootloader , upravo zbog vec navedenih razloga .
Ako moze [tj ima sve znakove ] napises si programcic za PC da to odradi kao sto ti kontroler s druge strana to radi , obavis test i to je to.
Mozda nebi bilo lose da TX uredjaj oznaci transfer posebnom sifrom cisto da se nebi dogdio "slucajan" ili namijeran prijenos nezeljenih podataka tj update -a FW.
Koristis standardnu proceduru za takve prijenose kratkih nizova. Guard byte , macko naredba , adresa , len , podaci i CS na kraju . maximalni len stavis 16 byte ili slicno i to je dovoljno.
Izgleda da serija 18F ima boot zonu cim ima opciju da ti ostavi bootloder , iako to nije bitno jer pravilnim stiranjem config bytova i lock bytova mozes odredit kako ce se ponasat FW. Gotovi ,od nekog preuzeti bootloader ,mozda i nije najbolje rijesenje !? najbolje je napisat svoj jer mozes u njemu definirat sve sto ti treba za zastistiu sustava i dozvola za update i tipove komunikacija setiranje config i lock bytova [ako treba] itd.., a aplikaciju onda pises po volji i kad jednom isporogramiras MCU koji ima bootloader vise ti ne treba brinut o cfg bytovima i sl jer ionako aplikaciju unosis preko njega , brze jednostavnije i sigurnije .
Ja radim za ATmega MCUima i obavezno makar i za demo aplikaciju napisem bootloader , upravo zbog vec navedenih razloga .