Stránka 1 z 1

Problém s 12F675 a 12F508

Napsal: 04 zář 2007, 15:41
od Viper_T
Dobrý den, už dost dlouho se mi nedaří naprogramovat PIC 12F675 a 508. Používám programátor JDM, software IC-prog a WinPic800. Problém je vtom, že některé programy do něj nahraju a jiné ne. Někdy je prostě špatná verifikace a někdy se všude nahrajou jen hodnoty 0x000. Nevím zda prostě jen píšu špatně programi nebo je vadný programátor, ale 16F628A s nim programuju bez problému. Potřebuji vyloučit vadný programátor, a proto bych vás chtěl požádat, zda by se nenašel někdo ochotný vyzkoušet přiložený program na 12F675 nejlépe přes JDM.Program není hotový, ale přesto by měl jít nahrát. Díky za pomoc

Asm:

Kód: Vybrat vše

   LIST P=12F675
   INCLUDE<P12F675.INC>
   __CONFIG _WDT_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT & _CP_OFF & _PWRTE_ON



FLAG      EQU   0x20
TDATA      EQU   0x21
TMP0      EQU   0x22
TMP1      EQU   0x23
TMP2      EQU   0x24
PERIODA      EQU   0x25
ROTACE      EQU   0x26
TEMPBYTE   EQU   0x27


#DEFINE   TX   GPIO,0
#DEFINE   TLAC1   GPIO,1

   ORG 00h
   GOTO   INIT

;**********************************************************************
;PODPROGRAMY
;**********************************************************************

SEND
   MOVF   TDATA,W
   MOVWF   TEMPBYTE
   MOVLW   0x08
   MOVWF   ROTACE

   BSF   TX               ;START BIT         
BIT   CALL   WAITBIT         ;8 DATOVYCH BITU
   BTFSS   TEMPBYTE,0
   GOTO   $+2
   GOTO   $+3
   BCF   TX
   GOTO   $+2
   BSF   TX
   RRF   TEMPBYTE,1
   DECFSZ   ROTACE,1
   GOTO   BIT
   CALL   WAITBIT
   BCF   TX               ;END BIT
   RETURN


WAITHALFBIT
        MOVLW 0x11  ;17 DEC
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
   RETURN

WAITBIT
        MOVLW 0x21  ;33 DEC
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
   RETURN


;**********************************************************************
;INICIALIZACE
;**********************************************************************

INIT
   BSF   STATUS,RP0   ;///////kalibrace vnitrniho oscilatoru
   CALL   3FFh
   MOVWF   OSCCAL
   BCF   STATUS,RP0

   MOVLW   B'00000111'   ;//////COMPARATOR vypnut///////////////////
   MOVWF   CMCON
   
   BSF   STATUS,RP0   ;///////NASATAVENI PORTU////////////////////////
   MOVLW   b'00111110'
   MOVWF   TRISIO
   MOVLW   0x00
   MOVWF   ANSEL
   BCF   STATUS,RP0

   BCF   TX

   GOTO   MAIN


;**********************************************************************
;HLAVNI PROGRAM
;**********************************************************************


MAIN
   MOVLW   0xA3
   MOVWF   TDATA
   CALL   SEND
   GOTO   MAIN

   END




HEX:

Kód: Vybrat vše

:020000040000FA
:100000001D282108A7000830A60005141820271C69
:100010000A280C2805100D280514A70CA60B062885
:100020001820051008001130A200A20B15280800A6
:100030002130A200A20B1A2808008316FF2390008B
:1000400083120730990083163E30850000309F00F0
:0E005000831205102B28A330A10001202B28BD
:02400E00C43FAD
:00000001FF

Napsal: 04 zář 2007, 16:31
od jankop
Zkusil jsem tvůj kód naprogramovat pomocí ICD2. Přes varování, že tento programátor nepodporuje 12F629/675 v módu
MCLR OFF & INTRC_OSC, vše proběhlo v pořádku. Je ale pravda, že tyto procesory používají specifický programovací algoritmus. Pokud je MCLR použit jako INPUT a k tomu interní oscilátor, pak má spousta programátorů problémy. Jestli programování proběhne v tomto případě správně nebo ne, záleží také na využití GP0 a GP1 programem. S programátorem ASIX Picollo jsem neměl nikdy problém, ICD2 některé programy pro 12F675 prostě nezkousne. Zkus u programu, který nejde naprogramovat, nastavit externí rezonátor a uvidíš hned, kde je chyba.

Napsal: 04 zář 2007, 19:03
od Viper_T
Díky moc za odpověď. Zkoušel jsem různě kombinovat to co jsi my poradil a opravdu stačí mít _MCLRE_ON. Musím uznat že mě v tomhle PICky trochu zklamali, přece jenom takhle přijdu o jeden vstup/výstup. Ale je pravda, že mám jenom JDM za pár korun, takže možná zkusím postavit ICD2 popřípadě něco jiného.

Napsal: 04 zář 2007, 19:35
od mety
12F508 nahraš len raz.Nie preto,žeby nebol prepisovaťelný,ale ic-prog to nedokaže zmazať.V ponuke ma len 12C508 a ten je jednorazovka.Ja mam 2 kusy takto nahrate :( 12F509 už zmazať ide,cez 16F84A :twisted:

Napsal: 04 zář 2007, 19:49
od Viper_T
12F508 mi šel smazat i přes 16F84A nebo možná 16F628, ale WinPic800 ho plně podporuje a JDM to taky umí :wink: .

Napsal: 05 zář 2007, 09:02
od ViPali
Niekto to tu riešil, pozri staršie príspevky (16f88,...) išlo o to, že nesedelo časovanie pinov. Autor to upravil podľa datašitu pridaním kondenzátorov (?) k pinom DATA, CLK.
Ja používam ten najjednoduchší programátor na seriový port a zatiaľ som nemal problémy, ani s 12f675 (mcl-of, osc-in).
Podľa môjho názoru, sú PICy asi citlivé na Vpp, ktoré by malo byť Un + 7V. Mám skúsenosť, že 16f84, ktorú kolega nenaprogramoval, ja som naprogramoval bez problémov. Jediný rozdiel sme našli v zdroji PC, kde jeho dával 11,78V a môj 12,04V, čo sa samozrejme prenáša na sériový port.
Bezpečnejšie by mali byť programátory s vlastným zdrojom ale tiež s doporučeným napätím.
Ďalšia vec je programovanie nízkym napätím. Pozri si Mikrochip - DS41173C datašit k programovaniu 12f675.

Napsal: 05 zář 2007, 15:13
od Viper_T
Já sem myslel že programovací napětí je 13V??? Co sem hledeal na Googlu tak všude sem se dočet taky těch 13V. Nakonec my to jde naprogramovat i s _MLCRE_OFF, ale nesmím mít GPIO,0 jako výstup :( .

Napsal: 05 zář 2007, 16:14
od ViPali
Niekde v datašitoch je uvedené 7V nad napájacie napätie ako najnižšia hodnota. Pretože nie vždy to pracovalo, tak bol navrhnutý programátor s pomocným záporným napätím. Pozri www.belza.cz .

Napsal: 05 zář 2007, 19:00
od jankop
12F675 nepodporuje LVP. Programovací napětí procesorů jsou různá a jejich meze jsou specifikovány mimo jiné v souborech *.dev pro jednotlivé procesory v adresářích instalace MPLAB.
Jinak PICy vůbec nejsou citlivé na Vpp, ale naprosto nestandardní časování nekterých amatérských programátorů jim dobře nedělá.

Napsal: 05 zář 2007, 19:13
od jankop
Mimochodem, aniž bych dělal nějaký etrémní rozbor situace, tak si myslím, že za určité konstelace by mohlo jít naprogramovat samotnou program memory. A pak teprve naprogramovat samotné konfigurační slovo. Mělo by to fungovat, ale verifikace už nemusí proběhnout správně. Druhou možností je, zastavit procesor po resetu/zapnutí na nějaký zlomek sekundy v programové smyčce. To by mělo veškeré problémy při programování odstranit.

Napsal: 06 zář 2007, 18:52
od Viper_T
S mým JDM se mi podařilo odpálit už druhý a bohužel poslední 12F675, ale tu čekací smyčku na začátku programu sem vyzkoušel na 12F508, který mi taky nešel naprogramovat a teď se to konečně rozchodilo. Díky moc za radu :D .

Napsal: 06 zář 2007, 21:09
od jankop
Ty procesory si poznač, ale nevyhazuj. Je možné, že nejsou vadné a časem je použiješ s nějakým jiným programátorem. Tuto situaci jsem už také zažil.