Wisp628 + PIC16F688. Wbus-fel
Postat: 9 mars 2010, 01:24:35
Jag blir verkligen inte klok på detta problem.
Jag programmerade en PIC-krets 2-3 gånger, sedan fick jag nedanstående felmeddelande.
Trodde först att det var glapp i min koppling och rev därför allt och började om på annat ställe på labbplattan.
Samma fel ändå. Tryckte/puttade på komponenter och sladdar. Ingen skillnad.
Bytte då till en annan PIC-krets. Då fungerade det direkt.
Programmerade om den 2-3 gånger utan att röra labplattan. De första gångerna fungerade det.
Sedan... Samma felmeddelande igen.
xwisp2w go ledbel~1.hex
xwisp2 version 1.9.0 for Windows (Apr 08 2006, Open Watcom C 1.40)
File ledbel~1.hex loaded and is Intel Hex format conforming
Detected programmer: Wisp628, firmware version 1.09
Detected target: 16F688 revision 01 (ID=1181)
Target erased
Transferring program to 16F688 via Wisp628
Transferring program memory...000000 : 2841Wbus command failure
Write-Verify operation failed after 0.18 seconds, rc 21!
xwisp2 failed after 1.55 seconds, rc 21!
("000000 : 2841" syns bara när jag kopierar felmeddelandet till en fil.)
Jag vet att det är en gammal Wisp2w-version, men jag vågar påstå att det inte är orsak till felet.
Uppkoppling:
Jag har testat två olika labplattor. Nya och fräscha labsladdar.
Tyvärr tog batteriet i kameran slut innan jag hann ta en skarp bild,
men jag tror nästan att den här beskrivningen är nästan lika god som en bild:
PIC-kretsen med en keramisk konding på 100nF närmast PIC-kretsens matningspinnar.
I hålen efter kondingen sitter sladdar till matningspänning (från Woltcraft labagg inställt på 5,0V)
och Wisp'ens röda och svarta sladdar. Röda vid PIC-kretsens pin1 och svarta vid pin14.
I de yttersta matningspännings-hålen sitter sedan en 100µF elektrolytkonding.
Wisp'ens gula sladd (MCLR) till PIC-kretsens MCLR-pinne (pin4).
Motstånd på 10k ohm (uppmätt till 9,64k ohm) i hålet efter den gula sladden, kopplad till pin1 på PIC-kretsen (+5V).
Wisp'ens blå sladd (ICSPDAT) i labplatta-hålet närmast PIC-kretsens pin13.
Wisp'ens lila sladd (ICSPCLK) i labplatta-hålet närmast PIC-kretsens pin12.
De enda sladdarna (förutom de till Wisp'en) är alltså de som går till lab-agget.
Resten av labplattan är tom.
That's it.
Här finns hex-filen om någon vill prova.
Koden är gjord i MikroBasic som ett test.
Inget speciellt. Konfigurerar interrupt, i/o mm och ändrar på PORTC längst ner i koden.
Config-biten MCLRE är satt till "1", dvs "MCLR pin function is MCLR."
Det enda jag i nuläget kan tänka mig är att jag haft sådan utmärkt tajming att det
trots allt har blivit något glapp i labplattorna just vid 2a/3e programmeringen av de
två PIC-kretsar jag har testat med...
Men att jag inte kan få det att fungera igen får mig att tvivla lite på det.
Jag har förresten sökt på "Wbus command failure" på forumet och läst de trådar som dykt upp.
Tyvärr har jag inte hittat någon lösning där.
Som ni kanske förstått så undrar jag nu vad problemet beror på.
Jag programmerade en PIC-krets 2-3 gånger, sedan fick jag nedanstående felmeddelande.
Trodde först att det var glapp i min koppling och rev därför allt och började om på annat ställe på labbplattan.
Samma fel ändå. Tryckte/puttade på komponenter och sladdar. Ingen skillnad.
Bytte då till en annan PIC-krets. Då fungerade det direkt.
Programmerade om den 2-3 gånger utan att röra labplattan. De första gångerna fungerade det.
Sedan... Samma felmeddelande igen.
xwisp2w go ledbel~1.hex
xwisp2 version 1.9.0 for Windows (Apr 08 2006, Open Watcom C 1.40)
File ledbel~1.hex loaded and is Intel Hex format conforming
Detected programmer: Wisp628, firmware version 1.09
Detected target: 16F688 revision 01 (ID=1181)
Target erased
Transferring program to 16F688 via Wisp628
Transferring program memory...000000 : 2841Wbus command failure
Write-Verify operation failed after 0.18 seconds, rc 21!
xwisp2 failed after 1.55 seconds, rc 21!
("000000 : 2841" syns bara när jag kopierar felmeddelandet till en fil.)
Jag vet att det är en gammal Wisp2w-version, men jag vågar påstå att det inte är orsak till felet.
Uppkoppling:
Jag har testat två olika labplattor. Nya och fräscha labsladdar.
Tyvärr tog batteriet i kameran slut innan jag hann ta en skarp bild,
men jag tror nästan att den här beskrivningen är nästan lika god som en bild:
PIC-kretsen med en keramisk konding på 100nF närmast PIC-kretsens matningspinnar.
I hålen efter kondingen sitter sladdar till matningspänning (från Woltcraft labagg inställt på 5,0V)
och Wisp'ens röda och svarta sladdar. Röda vid PIC-kretsens pin1 och svarta vid pin14.
I de yttersta matningspännings-hålen sitter sedan en 100µF elektrolytkonding.
Wisp'ens gula sladd (MCLR) till PIC-kretsens MCLR-pinne (pin4).
Motstånd på 10k ohm (uppmätt till 9,64k ohm) i hålet efter den gula sladden, kopplad till pin1 på PIC-kretsen (+5V).
Wisp'ens blå sladd (ICSPDAT) i labplatta-hålet närmast PIC-kretsens pin13.
Wisp'ens lila sladd (ICSPCLK) i labplatta-hålet närmast PIC-kretsens pin12.
De enda sladdarna (förutom de till Wisp'en) är alltså de som går till lab-agget.
Resten av labplattan är tom.
That's it.
Här finns hex-filen om någon vill prova.
Koden är gjord i MikroBasic som ett test.
Inget speciellt. Konfigurerar interrupt, i/o mm och ändrar på PORTC längst ner i koden.
Config-biten MCLRE är satt till "1", dvs "MCLR pin function is MCLR."
Kod: Markera allt
'Konfigbitarna syns inte i koden i Mikrobasic, men är satta såhär:
'BOD = 0. MCLRE = 1. PWRTE = 1. WDT = 0. INTRC_OSC_NOCLKOUT = 1.
sub procedure Init
TRISA = %00110000 ' Allt till utgångar, bortsett från RA4 + RA5.
TRISC = $00 ' Alla till utgångar.
PORTA = $00
PORTC = $FF
INTCON.GIE = 1 'Global interrupt enable bit <--
INTCON.PEIE = 1 'Enable unmasked peripheral interrupts <--
INTCON.T0IE = 0 'Disable the Timer0 interrupt
INTCON.INTE = 0 'Disable the RA2/INT external interrupt
INTCON.RAIE = 0 'Disable the PORTA change interrupt
INTCON.T0IF = 0 'Timer0 did not overflow
INTCON.INTF = 0 'RA2/INT external interrupt did not occur
INTCON.RAIF = 0 'None of the PORTA-pins have changed state
PIE1.EEIE = 0 'Disable the EE write complete interrupt
PIE1.ADIE = 1 'Enable the ADC-interrupt <--
PIE1.RCIE = 0 'Disable the EUSART receive interrupt
PIE1.C2IE = 0 'Disable the comparator C2 interrupt
PIE1.C1IE = 0 'Disable the comparator C1 interrupt
PIE1.OSFIE = 0 'Disable the oscillator fail interrupt
PIE1.TXIE = 0 'Disable the EUSART transmit interrupt
PIE1.TMR1IE = 0 'Disable the Timer1 overflow interrupt
PIR1 = $00 'Cleara alla interrupt
PIR1.ADIF = 0 'AD interrupt clear <--
PCON = %00000011 'Ingen Ultra Low-power Wake-up, BOR, POR eller BOR
OSCCON.6 = 1 '8MHz IRCF2
OSCCON.5 = 1 '8MHz IRCF1
OSCCON.4 = 1 '8MHz IRCF0
OSCCON.OSTS = 1 'Intern oscillator
OSCCON.SCS = 1 'Intern oscillator
WPUA = $00 'Inga pull-up
IOCA = $00 'PORTA Interrupt-on-change disabled
T1CON.TMR1ON = 0 'Timer1 avstängd
CMCON0.CM2 = 1 'Comparators avstängda
VRCON.VREN = 0 'CVref powered down
ANSEL = %00000100 'AN2 (pin 11) analog. Resten digitala
ADCON0.ADFM = 1 'Högerjusterad AD
ADCON0.VCFG = 0 'Vdd som referens
ADCON0.CHS2 = 0 'Channel: AN2 (pin 11)
ADCON0.CHS1 = 1 'Channel: AN2 (pin 11)
ADCON0.CHS0 = 0 'Channel: AN2 (pin 11)
ADCON0.GO_DONE = 0 'AD-conversion completed/not in progress <--
ADCON0.ADON = 0 'ADC disabled <--
ADCON1.ADCS2 = 0 'AD Conversion clock: Fosc/32 = 250kHz
ADCON1.ADCS1 = 1 'AD Conversion clock: Fosc/32 = 250kHz
ADCON1.ADCS0 = 0 'AD Conversion clock: Fosc/32 = 250kHz
TXSTA.TXEN = 0 'EUSART transmit disabled
RCSTA = $00 'EUSART port disabled
BAUDCTL.ABDEN = 0 'Auto-baud detect disabled
WDTCON.SWDTEN = 0 'WDT turned off
end sub
Main:
Init
while true
PORTC = %11111110
delay_ms(250)
PORTC = %11111101
delay_ms(250)
PORTC = %11111011
delay_ms(250)
PORTC = %11110111
delay_ms(250)
PORTC = %11101111
delay_ms(250)
PORTC = %11011111
delay_ms(250)
wend
end.
Det enda jag i nuläget kan tänka mig är att jag haft sådan utmärkt tajming att det
trots allt har blivit något glapp i labplattorna just vid 2a/3e programmeringen av de
två PIC-kretsar jag har testat med...
Men att jag inte kan få det att fungera igen får mig att tvivla lite på det.
Jag har förresten sökt på "Wbus command failure" på forumet och läst de trådar som dykt upp.
Tyvärr har jag inte hittat någon lösning där.
Som ni kanske förstått så undrar jag nu vad problemet beror på.
