Hallo,
Ik zou eens willen experimenteren met een bootloader voor een 18F2520. Heeft iemand ervaring hiermee met de 18F reeks, en kan iemand mij een goeie aanbevelen. Heb al her en der gezocht op het internet, maar de reacties over de kwaliteiten lopen blijkbaar uiteen.
Graag zou ik de bootloader via de UART laten lopen.
Er moet wel PC connectie blijven via de uart, wordt mijn uart nu opgeslokt door de bootloader of kan ik die hierbuiten nog steeds gebruiken?
Ojeke
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Kijk eens naar de PicKit2 firmware. (Kun je bij Microchip downloaden)
Heeft een USB bootloader. (RS232 zie je toch niet meer standaard op PC's)
AC/DrieC
Den Dries www.hulens.be
Op de site van Microchip zijn er application notes te vinden voor wat jij wil doen + de code hiervoor. Meestal staat er ook bij met welk type pic zij het hebben gedaan. Als je dan nog eens deze neemt is het eens zo gemakkelijk 
MAH
Every machine is a smoke machine if you operate it wrong enough
Het makkelijkst is met een 18f2550/4550 en usb.
Microchip heeft hiervan een mooi pakketje uitgebracht (niet de elektuur-variant nemen!). Ik ben er laatst ook mee bezig geweest en dat werkt heel mooi, maar dus wel over usb. Volgensmij kan je de usb verder nog gebruiken als je dat wilt maar zover ben ik nog niet..
Hoi,
Bedankt voor alle reacties. Het zit zo dat ik een bluetooth module gekocht heb ( http://www.mdfly.com/index.php?main_page=product_info&products_id=…. )
Nu hoopte ik via deze module een uart verbinding op te zetten en zo de bootloader te runnen. In de datasheet van de module staat dat ze ook een USB aansluiting heeft. Zou ik deze aansluiting aan die van de µC kunnen hangen en zo te kunnen bootloaden, of word dit al redelijk spannend?
Ojeke
MAH
Every machine is a smoke machine if you operate it wrong enough
voor zover ik weet heb je bij het bootloaden ook de resetvoorwaarde. Eerst resetten, pin hoog maken (of usb hebben aangesloten), reset loslaten en dan draait de bootloader. Dit voor het geval je iets wilt maken om op afstand te programmeren.
Ik ken jou module niet maar als het een host is zou je het kunnen proberen door contact te maken en dan de voeding kort te onderbreken(met een backup-capje voor de bluetooth module).
Hmm, zal dan eventjes moeten wachten op mijn module zodat ik het kan testen. Voor het resetten van de pic kan ik ook nog enkele andere manieren verzinnen 
Ik zou graag de bootloader van microtsjip proberen, maar kan ze helaas niet vinden, kan iemand me een zetje geven?
Ojeke
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ahh, gevonden 
sorry, had misschien ietsje langer moeten zoeken. Was ergens van boven in de menu balk gaan zoeken, maar zo vond ik ze natuurlijk niet.
Ok, heb de files bekeken, maar degene die ik heb zien er redelijk UART uit. Maar dat is ook geen enkel probleem. Zal de bijgesloten PDF eens uitlezen.
Ojeke
AC/DrieC
Den Dries www.hulens.be
Dat resetten van de pic zou ook kunnen gebeuren door de bluetooth module. Sommige bluetooth modules hebben een aantal digitale uitgangen die je kan aansturen.
Hoi,
Heb de module binnen. Nu heb ik even als test de module er nog even uit gelaten.
Ik heb het volgende gedaan:
1) Gekozen voor de 18F242 (had ik liggen)
2) tiny bootloader van het net gehaald.
3) in Tiny bootloader stak een file van de 18F252 (deze heeft meer geheugen dan de 18F242)
4) Usb serieel omvormer aangesloten.
Nu lijkt de pic niets te doen. Als deze opstart zou ze normaal een commando versturen, maar heb er mijn logic analyzer op gehangen maar zie weinig gebeuren. Zou dit door de keuze van de pic kunnen komen?
Ojeke
Weet je zeker dat die usb -> serieel converter goed werkt? Of zoiets gaat werken met je schakeling is altijd maar de vraag. Heb je niet nog ergens een pc met seriele poort?
MAH
Every machine is a smoke machine if you operate it wrong enough
Op 19 december 2010 15:30:54 schreef ojeke:
3) in Tiny bootloader stak een file van de 18F252 (deze heeft meer geheugen dan de 18F242)
controleer eerst eens of dit we werkt. De file van een chip met meer geheugen gebruiken voor een chip met minder kan wel eens verkeerd gaan. eerst opnieuw compileren.
@ Bas, als ik het goed begrijp zou de pic na het opstarten een commando zenden. Ik controleer de TX lijn van de 18F op enige activiteit met mijn logic analayser. Deze triggert zichzelf wanneer er een signaal verandering is. Maar er gebeurt niets, dus vermoed dat er niets verzonden wordt.
@MAH, Dat kan wel eens de oplossing zijn, alleen weet ik echter niet hoe ik in ASM moet compileren. Ik heb MPLAB van microchips afgehaald en heb een proging gedaan om project te maken met de code van de site, maar dit was helaas niet gelukt.
Is er iemand die veel ervaring heeft met asm?
Ojeke
Ik heb wat met DS30 bootloader zitten spelen (http://mrmackey.no-ip.org/elektronik/ds30loader/index.php) en dit werkt best wel goed.
Als je het programma instaleerd vindt je in :\Program Files\ds30 Loader\ diverse directories voor de verschillende PIC families.
Hiervan kun je dan de MPLAB project file (MPLAB moet dus geinstaleerd zijn) aanklikken.
In het MPLAB project vindt je onder Headers een settings file.
Deze kun je aanpassen aan de betreffende PIC, baudrate, etc
Ook kun je de fuse settings hier aangeven.
Soms moet je ook nog ds30loader.asm aanpassen.
Als je nooit met MPLAB gewerkt hebt moet je je hier wel even in verdiepen maar voor de rest is het niet al te moeilijk.
Voor het aanpassen van de diverse files heb je nauwelijks asm ervaring nodig.
Hoi,
Die ziet er ook wel leuk uit ja. Heb het eens geprobeerd, zoals je zei. In de settings file alles aangepast, en in de project eigenschappen gekozen voor de 18F2520.
Nu krijg ik in de DS30loader.asm de volgende fout:
Error[101] F:\PROGRAM FILES\DS30 LOADER\FIRMWARE PIC18F\SRC\DS30LOADER.ASM 261 : ERROR: (Do you need to configura uart pins to be digital? If not, remove this line)
Als ik er op dubbel klik kom uit op het volgende stukje code.
;----------------------------------------------------------------------
; User init
;----------------------------------------------------------------------
; Enable digital i/o
#ifdef ADCON1
error Do you need to configura uart pins to be digital? If not, remove this line
#endif
Ok, dus ik veronderstel dat ik de uart pins als digitaal wil instellen, dus dan moet ik deze lijn toch laten staan of niet?
Ojeke
Wat hier bedoeld wordt is dat wanneer de uart pinnen ook als analoog gebruikt kunnen worden ze eerst op digitaal gezet moeten worden. (pic's starten kaal altijd de I/O's die analoog kunnen analoog op)
Dit is voor de 18F2520 niet van toepassing.
Het lijntje moet dus weg (of ; ervoor)
Aha, bedankt
Ga het overmorgen eens proberen, heb nu een reeks familiefeesten geprogrammeerd staan.
Ojeke
Hoi,
Ben al een paar uurtjes aan het proberen, maar het lukt niet echt. Op de tx lijn van de computer zie ik activiteit, maar op die van de PIC zie ik niets gebeuren. Ik heb al alle combinaties geprobeerd om de device te resetten om op de juiste manier in de bootloader te komen. Had ergens gevonden op de site dat je moest resetten tijdens het zoeken, maar lukte ook niet.
Ik vermoed dat het aan mijn aangepaste code ligt. Heb het naar mijn inzien zo goed mogelijk proberen aan te passen. Ziet iemand zo 1,2,3 wat hier aan scheelt?
;------------------------------------------------------------------------------
; Device
;------------------------------------------------------------------------------
LIST P=18F2520; ;xxx
;------------------------------------------------------------------------------
; Includes
;------------------------------------------------------------------------------
#include "devices.inc"
;------------------------------------------------------------------------------
; User preferences
;------------------------------------------------------------------------------
radix DEC
#define OSCF 20000000 ;xxx oscillator frequency
#define BAUDRATE 9600 ;xxx baudrate
#define BLTIME 2000 ;xxx data receive timeout [ms]
#define BLINIT 2000 ;xxx hello receive timeout [ms]
#define HELLOTRIES 2 ;xxx number of non hello characters received before branching to the user application
#define USE_UART1 1 ;xxx uncomment to use uart1
;#define USE_UART2 1 ;xxx uncomment to use uart2
;#define USE_CAN ;xxx uncomment to use CAN instead of UART
;#define USE_TXENABLE 1 ;xxx uncomment to use a tx enable pin
#ifdef USE_TXENABLE
#define TRISR_TXE TRISC ;xxx tris register containing tx enable
#define LATR_TXE LATC ;xxx port register containing tx enable
#define TRISB_TXE TRISC6 ;xxx tris bit for tx enable
#define LATB_TXE RC6 ;xxx port bit for tx enable
#endif
;------------------------------------------------------------------------------
; CAN settings
;------------------------------------------------------------------------------
#define ID_PIC 1 ;xxx node number for this device
#define ID_GUI 0x7ff ;xxx node number of the ds30 Loader gui
;------------------------------------------------------------------------------
; Advanced settings
;------------------------------------------------------------------------------
#define PROT_GOTO 1 ;xxx protect goto at 0x00
#define PROT_BL 1 ;xxx protect bootloader
#define BLPLP 7 ;bootloader placement, pages from end
#define BLSIZEP 7 ;bootloader size [pages], used by bootloader protection
;------------------------------------------------------------------------------
; Configuration bits, these macros can be found at the end of the inc-files located in
; C:\Program Files\Microchip\MPASM Suite\
;
; These can also be set in MPLAB IDE instead, they are found in Configure->Configuration bits...
;------------------------------------------------------------------------------
;config OSC = INTIO2 ;internal oscillator
;config FSCM = OFF ;failsafe clock monitor
;config IESO = OFF ;internal external switchover mode
;config PWRT = OFF ;power-up timer
;config BOR = OFF ;brown-out reset
;config BORV = 27 ;brown-out reset value
;config WDT = OFF ;watchdog timer
;config WDTPS = 1 ;1:1 WDT prescalar
config MCLRE = ON ;MCLR
;config STVR = ON ;stack overflow reset
;config LVP = OFF ;low voltage programming
;config DEBUG = OFF ;debug
;config CP0 = OFF ;
;config CP1 = OFF ;
;config CPB = OFF ;
;config CPD = OFF ;
;config WRT0 = OFF ;
;config WRT1 = OFF ;
;config WRTB = OFF ;
;config WRTC = OFF ;
;config WRTD = OFF ;
;config EBTR0 = OFF ;
;config EBTR1 = OFF ;
;config EBTRB = OFF ;
;__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC3_PLL4_1L & _USBDIV_2_1L
;__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEM_OFF_1H & _IESO_OFF_1H
;__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L ; _VREGEN_OFF_2L
;__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_1_2H
;__CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H
;__CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVREN_OFF_4L & _XINST_OFF_4L
;__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L
;__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
;__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
;__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
;__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
;__CONFIG _CONFIG7H, _EBTRB_OFF_7H
Ook even een form gestart op http://mrmackey.no-ip.org/elektronik/ds30loader/forum/showthread.php?t…
Liep destijds tegen hetzelfde aan.
Het lag toen aan de fuse settings.
Vanuit MPLAB zelf kreeg ik die niet werkend.
Als je in de settings het volgende lijstje voor de 18F2520 gebruikt zou het moeten werken.
CONFIG FOSC = HS ;external oscillator
CONFIG FCMEN = OFF ;Fail-Safe Clock Monitor disabled
CONFIG IESO = OFF ;internal external switchover mode
CONFIG PWRT = ON ;power-up timer
CONFIG BOREN = ON ;brown-out reset
CONFIG BORV = 2 ;brown-out reset value (2,8V)
CONFIG WDTEN = OFF ;watchdog timer
CONFIG WDTPS = 128 ;1:128 WDT prescalar
CONFIG PBADEN = OFF ;analog port B<4:0>
CONFIG STVREN = ON ;;stack overflow reset
CONFIG LVP = OFF ;low voltage programming
CONFIG XINST = OFF ;Instruction set extension and Indexed Addressing mode disabled (Legacy mode)
CONFIG DEBUG = OFF ;no debug
En waar kan/moet ik deze settings aanpassen?
Bij plaatsen in een file? of van boven bij configure --> configuration bits
MVG
Ojeke
Onderin de settings file die je opgstuurd hebt zie je een hele rij staan met ; ervoor (uitgecomentariseerd)
Dat kun je eventueel weghalen en mijn lijstje eronder zetten.