Ich führe ein Hello World aus, das RB7 umschaltet:
#include <p16f1509.inc>
__config _CONFIG1, _FOSC_INTOSC
udata
delay0 res 1
delay1 res 1
delay2 res 1
delay3 res 1
ledState res 1
delay32 macro delay
goto $+1
goto $+1
banksel delay3
movlw (delay - 1) & 0xFF
movwf delay0
movlw (delay - 1) >> 0x08 & 0xFF
movwf delay1
movlw (delay - 1) >> 0x10 & 0xFF
movwf delay2
movlw (delay - 1) >> 0x18 & 0xFF
movwf delay3
call doDelay32
endm
rst code 0x00
start:
clrf PORTB
banksel TRISB
clrf TRISB
banksel ANSELB
clrf ANSELB
movlw 0x80
movwf PORTB
banksel ledState
movlw 0x00
movwf ledState
loop:
banksel ledState
movf ledState, 0
xorlw 0x80
movwf ledState
movwf PORTB
delay32 d'2500'
goto loop
doDelay32
movlw 0xFF
addwf delay0, F
btfsc STATUS, C
clrw
addwf delay1, F
btfsc STATUS, C
clrw
addwf delay2, F
btfsc STATUS, C
clrw
addwf delay3, F
btfsc STATUS, C
clrw
iorwf delay0, W
iorwf delay1, W
iorwf delay2, W
iorwf delay3, W
btfss STATUS, Z
goto doDelay32
retlw 0
end
Dies läuft perfekt auf dem MPLABX-Debugger mit einem PicKit3, aber sonst nicht.
Dies scheint ein häufiges Problem zu sein, aber ein Tag des Googelns hat nichts Nützliches ergeben. Folgendes habe ich gelernt:
Die meisten Menschen schaffen es nicht, MCLR hoch zu ziehen. Ich habe eine 10k zwischen MCLR und VDD.
Das Taktkonfigurationsbit ist standardmäßig auf einen externen Takt eingestellt. Die Einstellung auf INTOSC hat nicht geholfen.
Einige Leute schlagen vor, das !DEBUG-Bit zu setzen, aber das Datenblatt behauptet, dass dies vollständig vom Debugger erledigt wird. Ich habe es trotzdem versucht; es hat nicht geholfen.
Irgendwelche Vorschläge würden geschätzt. Danke
Außerdem: Weiß jemand, ob es möglich ist, einen PIC mit einem Beaglebone zu programmieren, indem man I2C mit ICSPDAT und ICSPCLK verbindet?
Dies liegt höchstwahrscheinlich daran, dass der Watchdog-Timer (WDT) Ihren Chip zurücksetzt. Der WDT ist standardmäßig in allen PICs aktiviert, daher müssen Sie ihn explizit deaktivieren, wenn Sie in Ihrem Code keine spezifischen Anweisungen zum Löschen des Timers haben. Weitere Informationen zum WDT finden Sie in Abschnitt 9 Ihres Datenblatts.
Das WDT wird im Register CONFIG1 konfiguriert, sodass es Teil Ihrer Codezeile "__config CONFIG1" wird.
Der folgende Screenshot stammt aus dem Datenblatt, das das CONFIG1-Register zeigt. Beachten Sie, dass die Standardwerte für WDTE sind , was „WDT aktiviert“ entspricht.
Tom Tischler
rdtsc
trosley