Hallo CO'ers,

Ik ben voor een projectje thuis bezig met het proggen van een 18F2320 (althans, daar doe ik pogingen toe). Maar het wil niet echt lukken. Ik heb de topics van Fantomaz en willem.er al bij gepakt, maar het wil maar niet lukken.

Voor de 18F2320 heb ik het volgende uit de .LPB file uit de INC map van Proton

; [START OF CONFIGURATION BITS]
;
;  The following is an assignment of address values for all of the
;  configuration registers for the purpose of table reads and writes,
;  and for programming configuration words.

CONFIG1H       EQU    H'300001'
CONFIG2L       EQU    H'300002'
CONFIG2H       EQU    H'300003'
CONFIG3H       EQU    H'300005'
CONFIG4L       EQU    H'300006'
CONFIG5L       EQU    H'300008'
CONFIG5H       EQU    H'300009'
CONFIG6L       EQU    H'30000A'
CONFIG6H       EQU    H'30000B'
CONFIG7L       EQU    H'30000C'
CONFIG7H       EQU    H'30000D'

;Configuration Byte 1H Options
IESO_ON_1       EQU  H'FF' ; Internal External Oscillator Switch Over mode enabled
IESO_OFF_1      EQU  H'7F' ; Internal External Oscillator Switch Over mode disabled
FSCMEN_ON_1     EQU  H'FF' ; Fail Safe Clock Monitor enabled
FSCMEN_OFF_1    EQU  H'BF' ; Fail Safe Clock Monitor disabled
RC_OSC_1        EQU  H'FF' ; External RC on OSC1, OSC2 as Fosc/4
RCIO_OSC_1      EQU  H'F7' ; External RC on OSC1, OSC2 as RA6
LP_OSC_1        EQU  H'F0' ; LP Oscillator
XT_OSC_1        EQU  H'F1' ; XT Oscillator
HS_OSC_1        EQU  H'F2' ; HS Oscillator
HSPLL_OSC_1     EQU  H'F6' ; HS + PLL
EC_OSC_1        EQU  H'F4' ; External Clock on OSC1, OSC2 as Fosc/4
ECIO_OSC_1      EQU  H'F5' ; External Clock on OSC1, OSC2 as RA6
INTIO1_OSC_1    EQU  H'F9' ; Internal RC, OSC1 as RA7, OSC2 as Fosc/4
INTIO2_OSC_1    EQU  H'F8' ; Internal RC, OSC1 as RA7, OSC2 as RA6

RCIO6_OSC_1     EQU  H'F7' ; compatabilty - RCIO new - BD 9/27/02
ECIO6_OSC_1     EQU  H'F5' ; compatabilty - ECIO new - BD 9/27/02
INTIO7_OSC_1    EQU  H'F9' ; compatabilty - INTIO1 new - BD 9/27/02
INTIO67_OSC_1   EQU  H'F8' ; compatabilty - INTIO2 new - BD 9/27/02

;Configuration Byte 2L Options
BORV_20_2       EQU  H'FF' ; BOR Voltage - 2.0v
BORV_27_2       EQU  H'FB' ;               2.7v
BORV_42_2       EQU  H'F7' ;               4.2v
BORV_45_2       EQU  H'F3' ;               4.5v
BOR_ON_2        EQU  H'FF' ; Brown-Out Reset enabled
BOR_OFF_2       EQU  H'FD' ; Brown-Out Reset disabled
PWRT_OFF_2      EQU  H'FF' ; Power-Up Timer disabled
PWRT_ON_2       EQU  H'FE' ; Power-Up Timer enabled

;Configuration Byte 2H Options
WDT_ON_2        EQU  H'FF' ; Watch Dog Timer enabled
WDT_OFF_2       EQU  H'FE' ; Watch Dog Timer disabled
WDTPS_32K_2     EQU  H'FF' ;   1:32,768    WDT Postscaler ratio
WDTPS_16K_2     EQU  H'FD' ;   1:16,384
WDTPS_8K_2      EQU  H'FB' ;   1: 8,192
WDTPS_4K_2      EQU  H'F9' ;   1: 4,096
WDTPS_2K_2      EQU  H'F7' ;   1: 2,048
WDTPS_1K_2      EQU  H'F5' ;   1: 1,024
WDTPS_512_2     EQU  H'F3' ;   1:   512
WDTPS_256_2     EQU  H'F1' ;   1:   256
WDTPS_128_2     EQU  H'EF' ;   1:   128
WDTPS_64_2      EQU  H'ED' ;   1:    64
WDTPS_32_2      EQU  H'EB' ;   1:    32
WDTPS_16_2      EQU  H'E9' ;   1:    16
WDTPS_8_2       EQU  H'E7' ;   1:     8
WDTPS_4_2       EQU  H'E5' ;   1:     4
WDTPS_2_2       EQU  H'E3' ;   1:     2
WDTPS_1_2       EQU  H'E1' ;   1:     1

;Configuration Byte 3L Options
MCLRE_ON_3      EQU  H'FF' ; MCLR enabled, RE3 input disabled
MCLRE_OFF_3     EQU  H'7F' ; MCLR disabled, RE3 input enabled
PBAD_ANA_3      EQU  H'FF' ; PORTB<4:0> pins reset as analog pins
PBAD_DIG_3      EQU  H'FD' ; PORTB<4:0> pins reset as digital pins   incorrect bit was cleared - BD 5/30/2002
CCP2MX_ON_3     EQU  H'FF' ; CCP2 pin function on RC1
CCP2MX_OFF_3    EQU  H'FE' ; CCP2 pin function on RB3
CCP2MX_C1_3     EQU  H'FF' ; CCP2 pin function on RC1 (alt defn)
CCP2MX_B3_3     EQU  H'FE' ; CCP2 pin function on RB3 (alt defn)

;Configuration Byte 4L Options
DEBUG_ON_4      EQU  H'7F' ; BacKground deBUGger enabled
DEBUG_OFF_4     EQU  H'FF' ; BacKground deBUGger disabled
LVP_ON_4        EQU  H'FF' ; Low Voltage Prgramming enabled
LVP_OFF_4       EQU  H'FB' ; Low Voltage Prgramming disabled
STVR_ON_4       EQU  H'FF' ; Stack over/underflow Reset enabled
STVR_OFF_4      EQU  H'FE' ; Stack over/underflow Reset disabled

BKBUG_ON_4      EQU  H'7F' ; compatabilty - DEBUG new - BD 9/27/02
BKBUG_OFF_4     EQU  H'FF' ; compatabilty - DEBUG new - BD 9/27/02

;Configuration Byte 5L Options
; Protect program memory blocks from programmer reads and writes (see Config Byte 6L)
CP0_ON_5        EQU  H'FE' ; Block 0 protected
CP0_OFF_5       EQU  H'FF' ; Block 0 readable/ may be writable 
CP1_ON_5        EQU  H'FD' ; Block 1 protected
CP1_OFF_5       EQU  H'FF' ; Block 1 readable/ may be writable
CP2_ON_5        EQU  H'FB' ; Block 2 protected
CP2_OFF_5       EQU  H'FF' ; Block 2 readable/ may be writable
CP3_ON_5        EQU  H'F7' ; Block 3 protected
CP3_OFF_5       EQU  H'FF' ; Block 3 readable/ may be writable


;Configuration Byte 5H Options
;  Protect blocks from programmer reads and writes (see Config Byte 6H)
CPB_ON_5H       EQU  H'BF' ; Boot Block protected
CPB_OFF_5       EQU  H'FF' ; Boot Block readable / may be writable 
CPD_ON_5        EQU  H'7F' ; Data EE memory protected
CPD_OFF_5       EQU  H'FF' ; Data EE memory readable / may be writable

;Configuration Byte 6L Options
;  Protect program memory blocks from table writes and programmer writes
WRT0_ON_6       EQU  H'FE' ; Block 0 write protected
WRT0_OFF_6      EQU  H'FF' ; Block 0 writable
WRT1_ON_6       EQU  H'FD' ; Block 1 write protected
WRT1_OFF_6      EQU  H'FF' ; Block 1 writable
WRT2_ON_6       EQU  H'FB' ; Block 2 write protected
WRT2_OFF_6      EQU  H'FF' ; Block 2 writable
WRT3_ON_6       EQU  H'F7' ; Block 3 write protected
WRT3_OFF_6      EQU  H'FF' ; Block 3 writable

;Configuration Byte 6H Options
;  Protect blocks from table writes and programmer writes
WRTC_ON_6       EQU  H'DF' ; Config registers write protected
WRTC_OFF_6      EQU  H'FF' ; Config registers writable
WRTB_ON_6       EQU  H'BF' ; Boot block write protected
WRTB_OFF_6      EQU  H'FF' ; Boot block writable
WRTD_ON_6       EQU  H'7F' ; Data EE write protected
WRTD_OFF_6      EQU  H'FF' ; Data EE writable 

;Configuration Byte 7L Options
;  Protect program memory blocks from table reads executed from other blocks
EBTR0_ON_7      EQU  H'FE' ; Block 0 protected 
EBTR0_OFF_7     EQU  H'FF' ; Block 0 readable
EBTR1_ON_7      EQU  H'FD' ; Block 1 protected
EBTR1_OFF_7     EQU  H'FF' ; Block 1 readable
EBTR2_ON_7      EQU  H'FB' ; Block 2 protected
EBTR2_OFF_7     EQU  H'FF' ; Block 2 readable
EBTR3_ON_7      EQU  H'F7' ; Block 3 protected
EBTR3_OFF_7     EQU  H'FF' ; Block 3 readable

;Configuration Byte 7H Options
;  Protect block from table reads executed in other blocks
_EBTRB_ON_7H      EQU  H'BF' ; Boot block read protected
_EBTRB_OFF_7H     EQU  H'FF' ; Boot block readable

;=======================================================================
;
;   Device ID registers
;
;  The following is an assignment of address values for the Device ID
;  registers for the purpose of table reads.

DEVID1         EQU    H'3FFFFE'
DEVID2         EQU    H'3FFFFF'

	ifndef CONFIG_REQ
		ifdef PLL@REQ									; Do we require the PLL ?
			__CONFIG CONFIG1, HSPLL_OSC_1	
		else
			__CONFIG CONFIG1H, HS_OSC_1
        endif
        __CONFIG CONFIG2L, BOR_ON_2 & BORV_20_2 & PWRT_ON_2
        ifdef WATCHDOG_REQ
        	__CONFIG CONFIG2H, WDT_ON_2 & WDTPS_128_2
        else
        	__CONFIG CONFIG2H, WDT_OFF_2 & WDTPS_128_2
        endif
        __CONFIG CONFIG3H, MCLRE_ON_3
        ifdef DEBUG@REQ									; Do we require DEBUG ?
        	__CONFIG CONFIG4L, STVR_ON_4 & LVP_OFF_4 & DEBUG_ON_4
        else
        	__CONFIG CONFIG4L, STVR_ON_4 & LVP_OFF_4 & DEBUG_OFF_4
		endif
	endif 
        LIST

Voor mijn programma gebruik ik nu:

DEVICE 18F2320                

@CONFIG_REQ
@__CONFIG CONFIG1H, HS_OSC_1                              ;ik maak gebruik van de interne oscillator
@__CONFIG CONFIG2L, BOR_ON_2 & BORV_20_2 & PWRT_ON_2
@__CONFIG CONFIG2H, WDT_OFF_2
@__CONFIG CONFIG3H, MCLRE_OFF_3 & CCP2MX_ON_3
@__CONFIG CONFIG4L, LVP_OFF_4

ALL_DIGITAL TRUE             
    

;        76543210
TRISB = %11101111       ; B4 als output      

CLEAR                        

WHILE 1=1

HIGH PORTB.4

DELAYMS 5000

LOW PORTB.4

DELAYMS 1000

WEND

END

Ik programmeer met BumbleBee en krijg steeds helemaal op het eind van het proggen (dus tijdens het verifieren van de code op de uC) de melding:

Error:
Verify error at adress: 0x300000. Value in image is 0xFF and value in target is 0x00.

Weet iemand misschien waar het fout gaat? (Fantomaz?)

Hmm..... op 0x300000 kun je niet schrijven volgens mij, de fuses beginnen op 0x300001 (staat ook keurig zo in je code). Ik zie ook nergens dat je probeert op 0x300000 te schrijven. Ik ken BumbleBee niet, wellicht dat daar iets mals gebeurt? Kun je die verification uitzetten en kijken of je schakeling dan goed werkt?

Arjan, ik weet zo niet waar het aan ligt (heb me er ook niet in verdiept eerlijk gezegd), maar probeer XWisp eens i.p.v. BumbleBee.

Waarschijnlijk niet de oorzaak, maar je kunt het nooit weten.
Proberen dus!

Ik ben het aan het proberen geweest met XWisp2 en heb alles volgens je gebruiksaanwijzing op picbasic uitgevoerd Frits. Ook heb ik firmware versie 1.11 in mn XWisp zitten. (Ik heb XWisp(2) nog nooit eerder gebruikt, alleen BumbleBee)

Als proef probeer ik alleen even een ledje te laten knipperen op een 648a. Als ik na het compilen in proton XWisp2 opstart krijg ik te zien:

xwisp2 version 1.9.2 for Windows <Dec 04 2006, Open Watcom C 1.50>
Command 'C:\DOCUME~1\ADMINI~1\Desktop\Dinges.HEX'unknown or not currently implemented.
xwisp2 failed after 0.07 seconds, rc36!
>>> Presse 'Enter' to continue:

De .HEX file die door Proton aangemaakt wordt heb ik even op mn desktop laten zetten onder de naam 'Dinges' (zoals je boven kunt zien).

In Proton heb ik bij de 'optional command line parameters' (daar waar ik Proton aan de programmer koppel) gezet:

com7 go $hex-filename$ pause "Ready!"

Met port 7 als de poort waar mijn USB to RS232 converter aan hangt.

Het gaat dus ergens niet goed. Wat doe ik fout?

Edit:

Op 9 juli 2008 00:18:05 schreef hadv:
Kun je die verification uitzetten en kijken of je schakeling dan goed werkt?

Met XWisp2 lag ik net weer even in de clinch, dus ik ben (tijdelijk?) weer even teruggegaan naar BumbleBee en heb zitten kijken of ik het verifiëren uit kon zetten.
Als ik die verificatie uitzet krijg ik mijn uC wel geprogrammeerd :D maar hij draait/loopt echt heel erg langzaam. Het commando "DELAYMS 8" duurt bijna één seconde... BumbleBee gaat dus toch ergens de fout in met die fuses (denk ik..)

Ik zal dus toch even moeten proberen om XWisp2 bij mij aan de praat te krijgen... Maar dat wordt morgen gezien het tijdstip.

[Bericht gewijzigd door Arjan M op (25%)]

Niet XWisp2, maar XWisp gebruiken, samen met firmware V1.23 in een 16F648A, dan ben je up-to-date en alleen dan kunnen we zinnige antwoorden geven.

Download hier de nieuwste XWisp (V1.30)
www.picbasic.nl/instelling_xwisp.htm

Daar is ook HEX firmware V1.23 voor de PIC te downloaden
(moet je alleen wel een 16F648A in huis hebben, past niet in een 16F628A).

Het is ook wel handig even aan te geven in je code op welk xtal de pic moet werken.


XTAL = 8

;Set OSCCON to 8Mhz
OSCCON.6 = 1
OSCCON.5 = 1
OSCCON.4 = 1

Dit is voor een 18f2550, maar dat zal hetzelfde zijn voor de 2320.

Op 10 juli 2008 09:53:25 schreef Frits Kieftenbelt:
Niet XWisp2, maar XWisp gebruiken, samen met firmware V1.23 in een 16F648A, dan ben je up-to-date en alleen dan kunnen we zinnige antwoorden geven.

Download hier de nieuwste XWisp (V1.30)
www.picbasic.nl/instelling_xwisp.htm

Daar is ook HEX firmware V1.23 voor de PIC te downloaden
(moet je alleen wel een 16F648A in huis hebben, past niet in een 16F628A).

Oké Frits, ik heb een 16f648a met v1.23 in mn XWisp zitten en ik heb XWisp aan Proton gekoppeld:

Programmer's directory path 
C:\Program Files\XWisp\xwisp.exe

Optional commandline parameters 
com7 wait end target $target-device$ go $hex-filename$

In de 'optional command line parameters' heb ik mijn compoort genoemd 'com7' waar mijn USB to serial converter aan zit en ik heb ipv "wait err", "wait end" neergezet (wat XWisp open/zichtbaar zou moeten houden totdat er een keer op <enter> gedrukt wordt...)

Als ik nu compile en de .hex via XWisp in mn uC wil flashen zie ik heel snel even een zwart schermpje van XWisp die vervolgens supersnel even wat tekst laat zien en dan direct weer afsluit (hij zou moeten blijven staan tot <enter>?!). Dit alles gebeurt zo snel dat ik echt niets van dat alles kan lezen, maar ergens gaat het niet goed want mn uC'tje wordt niet gebrand... Maar ik kan dus niet zien waar het niet goed gaat omdat XWisp niet open wil blijven...

-----------

Op 10 juli 2008 10:33:35 schreef BernardV:
Het is ook wel handig even aan te geven in je code op welk xtal de pic moet werken.


XTAL = 8

;Set OSCCON to 8Mhz
OSCCON.6 = 1
OSCCON.5 = 1
OSCCON.4 = 1

Dit is voor een 18f2550, maar dat zal hetzelfde zijn voor de 2320.

Ik ga het proberen zodra ik via XWisp een uC kan branden/flashen Bernard!

port 7 wait err target $target-device$ go $hex-filename$

com7 werkt niet bij xwisp, daar is het gewoon een nummertje

Arjan, gebruik toch gewoon die PICkit2 zoals ik je zei ;) Werkt direct in Windows zonder vage DOS of Python commandline programma's :P

Ha die Nack! Ja man, maar ik heb nu eenmaal die XWisp waar ik toch wel goed mee kan proggen duss... en voor deze zomervakantie zie ik nog even geen verandering ;)

Het werkt nu overigens :P

[Bericht gewijzigd door Henry S. op (37%)]

Ah mooi zo! Wat ging er nu precies fout? Het 'com7' in die regel?

Werken je fuses nu ook al?

Geen id eerlijk gezegd :9 Het ziet ernaar uit dat alles nu werkt zoals ik het zou willen.

Gaat nu goed dus, met BumbleBee of XWisp?

Wat XWisp betreft:
COM7 is ook niet goed, moet COM 7 zijn (spatie ertussen).
Met PORT stel je de baudrate in (bv. PORT 19200)

Toch nog met BumbleBee Frits... Ik heb de nieuwe versie van BumbleBee gedownload (die ene die werkt met .Net) en ik laat BumbleBee niet meer de code in de pic verifiëren.

Ik zal je raad nog even uitproberen mbt XWisp, het zou wel handig zijn als ik dat programma alsnog werkend krijg...

Edit:
Ik heb COM 7 uitgeprobeerd als:

COM 7 wait end target $target-device$ go $hex-filename$

Ook heb ik geprobeerd:

COM 7 wait end PORT 19200 target $target-device$ go $hex-filename$

Allebei krijgen ze mn 16F648a niet geprogd...

Iedereen bedankt voor de tips ed! BumbleBee werkt nu prima voor mij, ik kan er de pics mee proggen die ik gebruik; dus daar houdt ik het maar even bij. Er staat het een en ander aan projecten bij mij op het programma om uit te voeren en ik vind het zonde om nog meer tijd te besteden aan het werkend krijgen van een programma dat ik (nu) niet nodig heb. Misschien kijk ik er in de toekomst nog wel een x naar, maar voor nu doet BumbleBee voor mij wat ik wil ;)

[Bericht gewijzigd door Henry S. op (12%)]

Op 11 juli 2008 21:34:15 schreef Frits Kieftenbelt:
COM7 is ook niet goed, moet COM 7 zijn (spatie ertussen).
Met PORT stel je de baudrate in (bv. PORT 19200)

Volgens de command list van xwisp is het gewoon PORT

PORT P    : use serial port p

Ook voor de baudrate wordt het inderdaad gebruikt:

PORT b    : use active baudrate b

Zal wel gekeken worden naar de grootte van het getal.
Een comport van 115200 is een beetje hoog en een baudrate van 7 is wel erg laag ;)

Op 18 juli 2008 22:37:21 schreef BernardV:
Volgens de command list van xwisp is het gewoon PORT

er zijn een boel mogelijkheden, maar "com 7" is iig fout. goed is:

COM7
PORT COM7
PORT 7

Bij PORT met daarachter een getal wordt bij een klein getal aangenomen dat het een poort nummer is, bij een groot getqal (ik dacht >100) wordt aangenomen dat het de baudrate is.

Ik zal de spatie weghalen uit de beschrijving op picbasic.nl (ikzelf gebruik COM nooit).
Meestal is opgave niet eens nodig en kun je PORT en/of COM gewoon weglaten.