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.