 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
igor_k Član

Pridružen-a: Pon 19 Jul 2004 11:44 Prispevkov: 1011 Aktiv.: 4.27 Kraj: Rače
|
Objavljeno: Pet Maj 04, 2007 9:56 pm Naslov sporočila: |
|
|
Joj, ti pic-i. Kaj za vraga sem se spravil na njih. Težava je seveda v tej neumni zadnji lokaciji, ki se je pobrisala. Moj še bolj butasti compiler (CCS) pa tega ne zna ignorirati. Programator pa nikakor ne pusti programirati zadnje lokacije.
Kaj storiti?
Silvo, kakšen pameten predlog? |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.06 Kraj: Divača (Kačiče)
|
Objavljeno: Pet Maj 04, 2007 10:03 pm Naslov sporočila: |
|
|
Silvo, če sem prav razumel, potem bi tovrstno težavo rešil programček, ki bi znal vpisati na to lokocijo nek return. Ali pa programator, ki te zaščite ( vpisa na to lokacijo) nima.
Če boste še dolgo o tem, bom začel še s pici delt _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pet Maj 04, 2007 10:11 pm Naslov sporočila: |
|
|
futuristic je napisal/a: |
Še vedno deluje, samo ne moreš ga več takole kalibrirati:
Koda: |
bsf STATUS, RP0 ;Bank 1
call 3FFh ;Get the cal value
movwf OSCCAL ;Calibrate
bcf STATUS, RP0 ;Bank 0 |
|
Bolj prvilno: ne smes. Kot je napisal Silvo, je rezultat sila neprijeten (odvisno od mesta, kjer naj bi se kalibracija izvedla) ... neskoncna zanka. _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pet Maj 04, 2007 10:28 pm Naslov sporočila: |
|
|
VolkD je napisal/a: |
Silvo, če sem prav razumel, potem bi tovrstno težavo rešil programček, ki bi znal vpisati na to lokocijo nek return. Ali pa programator, ki te zaščite ( vpisa na to lokacijo) nima.
Če boste še dolgo o tem, bom začel še s pici delt |
Zadnjo lokacijo lahko določiš kar nekje na začetku programa.
Koda: |
org 0x3ff
retlw "kalibrirna vrednost"
|
Sicer večina programatorjev, kar jih poznam omogoča editiranje buferja. Tako lahko vrednost pred programiranjem vpišeš ročno. Če pišeš v assemblerju, seveda ne rabiš hodit po kalibrirno vrednost, če ne rabiš dokaj točnega clocka.
Kako pa to delajo višjenivojski jeziki pa je druga pesem... Večina bolših programatorjev te vrednosti ne briše oz. opozori na brisanje. Druga pesem pa so seveda okenski pici.... _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
igor_k Član

Pridružen-a: Pon 19 Jul 2004 11:44 Prispevkov: 1011 Aktiv.: 4.27 Kraj: Rače
|
Objavljeno: Pet Maj 04, 2007 10:34 pm Naslov sporočila: |
|
|
Marsikaj sem že doživel, kaj tako butastega pa še ne!!! Očitno ni težava v programatorju ampak sam čip ne dovoli prepisa lokacije 1024 .
Postopek: spremenim adapter, nastavim 16F628 (ki ima 2KB), hočem vpisat 0x3FF=0x3400 in glej ga šmenta: NE GRE
Na 0x3FE in na 0x400 pa gre.
Če ne bi videl na lastne oči ne bi verjel. Torej moje navadno vezje lahko prepiše lokacijo, programator (ki je temu namanjen) pa ne.
Kakšna ideja od stroke za pice-e? |
|
Nazaj na vrh |
|
 |
igor_k Član

Pridružen-a: Pon 19 Jul 2004 11:44 Prispevkov: 1011 Aktiv.: 4.27 Kraj: Rače
|
Objavljeno: Pet Maj 04, 2007 10:35 pm Naslov sporočila: |
|
|
Silvo, verjemi, buffer se editiral že 100x... |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pet Maj 04, 2007 10:37 pm Naslov sporočila: |
|
|
Če tvoj prevajalnik "pogoltne" asemblesko kodo nekje na začetku vpiši vrstico "
Vrednost pravzaprav ni tako zelo važna, kalibrirne vrednosti itak ne poznaš, odstopanje je minimalno. Samo da ti retlw vrne PC iz sklada. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
igor_k Član

Pridružen-a: Pon 19 Jul 2004 11:44 Prispevkov: 1011 Aktiv.: 4.27 Kraj: Rače
|
Objavljeno: Pet Maj 04, 2007 11:32 pm Naslov sporočila: |
|
|
Nič ne pomaga. Programator noče programirati zadnjega naslova.
Prej sem se malo uštel - če nastavim 16f628 ne programira.
S CCS-om ni rešitve. Bom pisal na Microchip, pa da vidim kaj pravijo.
Do nadaljnega (dokler ne pridejo novi čipi) pa bom pač brisal ven tisti call 0x3ff.
Vsem hvala za odgovore. |
|
Nazaj na vrh |
|
 |
matjazkariz Član


Pridružen-a: Sre 03 Nov 2004 18:09 Prispevkov: 1026 Aktiv.: 4.33
|
Objavljeno: Pon Maj 07, 2007 10:19 am Naslov sporočila: |
|
|
Citiram: |
Vprašanje "matjazkariz" -u. Kaj se bo zgodilo če pokličeš lokacijo na kateri je vpisano 0x00 ? |
Če se ti pobriše kalibracijska vrednost, je ne smeš na začetku klicati. Na zadnji lokaciji je zapisana cela beseda (torej 2 byta). Prvi byte predstavlja ukaz retlw (naprimer 0Ch pri PIC12F509) drugi byte pa kalibracijsko vrednost (npr.02h). Če takoj na začetku kličeš to lokacijo, ki bo imela v ukazu vrednost 00h, procesor ne bo vedel kaj naj s to instrukcijo in bo zaciklal.
Torej, če pobrišeš kalibracijo, nikar ne kliči kalibriranja.
Ponavadi imaš na programatorjih možnost izbire razpona programiranja, ki je za te PICe po defaultu skrajšan za zadnjo lokacijo. Nekje moraš vklopiti opcijo programiranja zadnje lokacije ter na roke v hex vpisati funkcijo retlw (pazi za različne procesorje je ta ukaz tudi različen) ter kalibracijsko vrednost. Sam vedno pred začetkom dela s procesorji s kalibracijsko vrednostjo preberem procesor in si to vrednost zapišem s svinčnikom na spodnjo stran procesorja. Tako ni možnosti, da bi jo zgubil. _________________ LP, Matjaž |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Pon Maj 07, 2007 10:34 am Naslov sporočila: |
|
|
matjazkariz je napisal/a: |
Če takoj na začetku kličeš to lokacijo, ki bo imela v ukazu vrednost 00h, procesor ne bo vedel kaj naj s to instrukcijo in bo zaciklal. |
Ni ravno tako; 0x00 je NOP in se kot tak tudi izvede. Od naslednje lokacije je odvisno, kaj se bo zgodilo potem - ce je konec flasha in pride do prekoracitve PCja, bo program stekel v neskoncni zanki, ce je flash naprej resetiran, potem se bodo izvajali nesmiselni ADDLW 0 dokler spet ne pride do overflowa PCja, ce pa je vse naprej pobrisano, bo pa procesor premleval NOPe, spet seveda do overflowa PCja.
Kakrkoli ze, MCU ze ve kaj narediti s katerim ukazom, druga stvar pa je ali uporabnik res zeli tisto, kar bo MCU naredil  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|