Problem med programmering av dsPIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bearing
Inlägg: 11339
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Problem med programmering av dsPIC

Inlägg av bearing »

Har spenderat några timmar på att försöka programmera min dsPIC30F4011 utan lyckat resultat.

Programmeraren är en enkel JDM vilket skulle kunna vara orsaken. Å andra sidan fungerar den för alla andra PIC-kretsar jag har inom 12, 16 och 18 serien.
Jag har kopplat extern matningsspänning vilket har visat sig behövas med de större kretsarna.
Programmeringsspänningen på /MCLR verkar något låg, 10 V, men funkar alltså för andra kretsar.

Hjälp mig. Vad kan vara fel?
Användarvisningsbild
Icecap
Inlägg: 26226
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Inlägg av Icecap »

Kass programmeringsenhet helt enkelt.

Sodjan säljer WISP628, investera i en sån i stället, det sparar mycket strul och irritation. Kolla dock först att den kan köra dsPIC30F4011 först, jag minns inte helt.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> Programmeraren är en enkel JDM...

Står det någonstans att den *ska* fungera med dsPIC ??
Om inte, varför tror du att den gör det ?

Notera att dsPIC processorernas programmerings algoritm skiljer sig en
hel del från vad som används på de vanliga PIC16/18 modellerna.

Tillgång till (billiga/enkla) programmerare som stöder dsPIC30/33/PIC24
är lite av ett problem i dag.

Wisp628 stöder tyvärr *inte* dsPIC serien idag. Förhoppningen är väl att
den nya firmware som har varit "på G" ett tag kommer att göra det, men
det finns inget "skrivet" om det i dag.

Microchips ICD2 fungerar naturligtsvis, och många verkar tycka att man
knappt kan programmare dsPIC utan ICD support ändå... :-)

Dessa två programmerare från EmbedInc i USA stöder också dsPIC i dag :
http://www.embedinc.com/easyprog/index.htm
http://www.embedinc.com/proprog/index.htm
Jag har testat EasyProg (dock inte med dsPIC), och den fungerar, men
personligen tycker jag att den är lite "överarbetad"...

Sen finns det ett "hack" från Philip Pemberton i UK. Han har tagit firmware
från EasyProg (alltså den från EmbedInc ovan) och skrivit om den så att
den kan köras på Wisp628 hårdvaran. Den kombinationen *borde* stödja
dsPIC, men jag har inte fått något klart svar när jag har frågat.
För den som vill experimentera så finns Philips kit här :
http://www.philpem.me.uk/picmicro/easyisp-010.zip

Slutligen finns det ett par olika bootloaders till dsPIC :
http://forum.microchip.com/tm.aspx?m=135666
http://www.beaglerobotics.com/community/
http://www.etc.ugal.ro/cchiculita/softw ... loader.htm

Dock kräver en bootloader naturligtsvis att man har en "vanlig"
programmerare för att få in bootloadern fråb början. Jag har haft lite
vaga planer på att erbjuda någon vanlig dsPIC med en bootloader
förladdad, men det har stannat som planer... :-)
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Är det samma sak med PIC24 serien ?
bearing
Inlägg: 11339
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Dragonorb:
Jag vet inte, har inte nån sån.

Sodjan:
Har läst lite här och där på internet att det ska funka. Finns t.ex. en dsPIC-programmerare för linux som är gjord för JDM.

Jag använder ett program som heter WinPic http://www.qsl.net/dl4yhf/winpicpr.html som ska stödja dsPIC. Det går även att lägga in nya modeller genom att ändra i en .ini-fil. Den stödjer en mängd programmerarhårdvaror, även de är enkelt configurerbara i .ini-fil.

Gillar kombinationen JDM/WinPIC eftersom det hittils gått helt problemfritt och att jag enkelt kan fixa stöd för nya kretsar.

Har försökt hålla mig borta från programmeringsHW som kräver firmware, blir ju s.a.s dubbelt jobb att lägga till stöd för en ny krets; men får väl skaffa en om det behövs.

Finns schemat för ICD2 på nätet? (vill komma undan billigt)

Om jag bygger en WISP blir det för att prova dsPIC-firmware isf.

>Slutligen finns det ett par olika bootloaders till dsPIC :

Ah, det är bra, jag gillar att använda bootloaders. :)
ClasseMan
Inlägg: 176
Blev medlem: 9 juli 2004, 15:21:02
Ort: Karlskrona
Kontakt:

Inlägg av ClasseMan »

Jag har bygt den ICD2 klon som finns på den här sidan http://www.stolz.de.be/ och den har funkat mycket bra för mig. Har för mig att jag använde en lite nyare pic controller till den och därför fick använda en annan bootloader.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> Om jag bygger en WISP blir det för att prova dsPIC-firmware isf.

Hojta till om du är intresserad, så skickar jag över ett kit till en Wisp628.
Jag skickar med en blank 628A för att ladda EasyISP firmware...

Under förutsättning att du dels faktiskt testar inom en rimlig tid, dels
att jag får veta hur det gick. :-)

Efteråt kan du välja att behålla den (och pröjsa 299:-) eller skicka
tillbaka den.
Användarvisningsbild
Icecap
Inlägg: 26226
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Inlägg av Icecap »

EasyISP ska väl ha en '648A???
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Om någon skriver en liten kodsnutt för dsPIC30F4011 så kan jag testa Philip´s firmware.
bearing
Inlägg: 11339
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

DragonOrb skrev:Om någon skriver en liten kodsnutt för dsPIC30F4011 så kan jag testa Philip´s firmware.
Här kommer lite C-kod (blinkande lysdiod, 1 hz vid 40 MHZ):

Kod: Markera allt

#include "p30F4011.h"

//-----------------------------------------------------------------------------
//Configuration bits
_FOSC(CSW_FSCM_OFF & XT_PLL4);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF & BORV_27 & PWRT_16 & MCLR_EN);
_FGS(CODE_PROT_OFF);
//-----------------------------------------------------------------------------

int main(void)
{
	unsigned int ms,_del;

	LATD = 0xFFFE;
	TRISD = 0xFFFE;
	LATDbits.LATD0 = 1;
	

	while(1)
	{
		LATDbits.LATD0 ^= 1;
		ms=500;
		while(ms--)
		{
			_del=1664;
			while(_del--);
			__asm("nop");
			__asm("nop");
			__asm("nop");
		}
	}
}

//=============================================================================
//Error traps
//-----------------------------------------------------------------------------
//Oscillator Fail Error trap routine
void _ISR _OscillatorFail(void)
{
LATDbits.LATD0 = 1; //Turn LED on
while(1); //Wait forever
}
//-----------------------------------------------------------------------------
//Address Error trap routine
void _ISR _AddressError(void)
{
LATDbits.LATD0 = 1; //Turn LED on
while(1); //Wait forever
}
//-----------------------------------------------------------------------------
//Stack Error trap routine
void _ISR _StackError(void)
{
LATDbits.LATD0 = 1; //Turn LED on
while(1); //Wait forever
}
//-----------------------------------------------------------------------------
//Math (Arithmetic) Error trap routine
void _ISR _MathError(void)
{
LATDbits.LATD0 = 1; //Turn LED on
while(1); //Wait forever
}

//Slut
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Jag har tyvär ingen C-komplierare eller 40mhz kristall, men om du skickar hex-filen till mig så kan jag testa.
bearing
Inlägg: 11339
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Det räcker med en 10 MHz-kristall för den har en PLL som ökar 4 ggr. Använd 10 MHz eller lägre för jag tror 10 var max enligt databladet.

Hmm, det kanske går att skicka hex-filen såhär:

Kod: Markera allt

:020000040000fa
:080000000001040000000000f3
:020000040000fa
:100200000f80200080ff2000000188000000000017
:10021000050007000c00070080010200000000003c
:100220000040da000000fe004440a9000000200069
:100230000000e0000300320000002000a001880060
:100240004440a80000000600c01d2000010020005e
:100250001600370062004000e080480091018800ed
:100260009001ba0062004000e080480091018800df
:100270009002ba0062004000e08048000002eb00fb
:100280006028e10005003a008301e900070033001f
:10029000038009000059eb00040037006128e100e9
:1002a000010032000082eb00050007009101880088
:1002b0001001ba000200e000e6ff3a00000005006d
:1002c000910188008002780062004000e0804800d0
:1002d0003559ba008301e900080032002559ba00f7
:1002e0008301e900050032000400e000f4ff320061
:1002f00015d9ba008301e900f1ff3a0000000600b9
:100300000000fa00e0ff2f00b0168800e0ff2f0089
:1003100090168800d602a8000000eb002008880094
:100320000000eb0000088800006821001008880029
:10033000000328002008880084c0bf000080fb0064
:100340004300de000080fb00610060000000e00070
:10035000f9ff32008460a900d6c2bf000080fb0014
:10036000610060000000a20061416000612d20007a
:1003700091407800e0cfb30000c060000240700000
:10038000d6e2b700ecff37000000fa00d602a80062
:10039000ffff37000000fa00d602a800ffff370079
:1003a0000000fa00d602a800ffff37000000fa00a4
:0803b000d602a800ffff370090
:020000040000fa
:0200000401f009
:04000000f5ff000008
:020000040000fa
:0200000401f009
:04000400ff7f00007a
:020000040000fa
:0200000401f009
:040008006eff000087
:020000040000fa
:0200000401f009
:04001400ffff0000ea
:020000040000fa
:10000800de010000c4010000ca010000d0010000a8
:10001800d6010000de010000de010000de01000064
:10002800de010000de010000de010000de0100004c
:10003800de010000de010000de010000de0100003c
:10004800de010000de010000de010000de0100002c
:10005800de010000de010000de010000de0100001c
:10006800de010000de010000de010000de0100000c
:10007800de010000de010000de010000de010000fc
:10008800de010000de010000de010000de010000ec
:10009800de010000de010000de010000de010000dc
:1000a800de010000de010000de010000de010000cc
:1000b800de010000de010000de010000de010000bc
:1000c800de010000de010000de010000de010000ac
:1000d800de010000de010000de010000de0100009c
:1000e800de010000de010000de010000de0100008c
:0800f800de010000de01000042
:020000040000fa
:10010800de010000c4010000ca010000d0010000a7
:10011800d6010000de010000de010000de01000063
:10012800de010000de010000de010000de0100004b
:10013800de010000de010000de010000de0100003b
:10014800de010000de010000de010000de0100002b
:10015800de010000de010000de010000de0100001b
:10016800de010000de010000de010000de0100000b
:10017800de010000de010000de010000de010000fb
:10018800de010000de010000de010000de010000eb
:10019800de010000de010000de010000de010000db
:1001a800de010000de010000de010000de010000cb
:1001b800de010000de010000de010000de010000bb
:1001c800de010000de010000de010000de010000ab
:1001d800de010000de010000de010000de0100009b
:1001e800de010000de010000de010000de0100008b
:0801f800de010000de01000041
:020000040000fa
:0403b8000000000041
:020000040000fa
:0403bc000000fe003f
:00000001FF
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

ok, tack ska testa om en stund
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Jag får inte wispen att funka med min nya seriekabel (6m) , har testat sänka hastigheten på comporten men blir likadant.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43205
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Inlägg av sodjan »

> EasyISP ska väl ha en '648A???

Jag har inte kollat så noga, men om du vet det så är det naturligtsvis så.

> Jag får inte wispen att funka med min nya seriekabel (6m),

Hm, jag har aldrig kört med så lång kabel.
Vet du att kabeln är OK för övrigt ?
Får du upp Wisp628 firmware version ? (Det sker vid 9.600 baud).
Sedan switchas det över till 115 kbaud, och då kanske 6 m är "on the edge"...

> har testat sänka hastigheten på comporten men blir likadant.

Med "> xwisp2w .... baud nnnn..." ? Eller hur då ?

Du kan inte sätta hastigheten i förväg, PC programvaran (xwisp2w) ställer om porten.
Man måste använda kommando parametern till xwisp2w.
Skriv svar