PIC programmera på labplattan.
-
- Inlägg: 36
- Blev medlem: 27 februari 2007, 16:12:39
- Ort: Vallentuna
PIC programmera på labplattan.
Jag håller på med ett litet projekt där jag använder en PIC16F628 och en massa lysdioder. Eftersom jag inte är så van vid programmering har jag valt microBasic för att skriva coden och kompilera till en hex-fil. Sedan använder jag hex-filen för att programmera PIC'en med programmet MultiProg som passar till min programmerare. Sedan så måste jag flytta över PIC'en till labplattan för att se resultatet. -käns lite väl omständigt när man exprimenterar med koden och testar olika alternativ.
Kan jag koppla några pinnar från programmeraren till PIC'en på labplattan så jag slipper flytta den fram och till baka?
Någon som har andra idéer på hur jag kan göra detta smidigare?
Kan jag koppla några pinnar från programmeraren till PIC'en på labplattan så jag slipper flytta den fram och till baka?
Någon som har andra idéer på hur jag kan göra detta smidigare?
-
- EF Sponsor
- Inlägg: 2109
- Blev medlem: 27 augusti 2005, 20:57:58
- Ort: Borlänge
Som sagt, din programmerare måste stödja ICSP.
D.v.s att den t.ex kan koppla bort sig själv elektriskt efter
programmeringen så att den inte stör programkörningen.
Sen finns det vissa saker du måste tänka på, du kan t.ex inte ha
prylar på labbplattat som lastar ned PGC/PGD linjerna så kraftigt
att programmeraren inte orkar driva dom. En LED brukar vara OK om
man inte har för litet motstånd till dom.
D.v.s att den t.ex kan koppla bort sig själv elektriskt efter
programmeringen så att den inte stör programkörningen.
Sen finns det vissa saker du måste tänka på, du kan t.ex inte ha
prylar på labbplattat som lastar ned PGC/PGD linjerna så kraftigt
att programmeraren inte orkar driva dom. En LED brukar vara OK om
man inte har för litet motstånd till dom.
-
- Inlägg: 36
- Blev medlem: 27 februari 2007, 16:12:39
- Ort: Vallentuna
Programmeraren är en MP3.5 och det står ICSP på kortet, så den stöder nog det. I det här läget har jag bara en PIC16F628, en kristall med kondingar och 13 dioder med tillhörande motstånd på plattan.
Vilka pinnar används för programmering, är det bara PGC och PGD? Tänkte att jag skulle klara mig utan adapterkort.
Vilka pinnar används för programmering, är det bara PGC och PGD? Tänkte att jag skulle klara mig utan adapterkort.
Det är PGC, PGD och MCLR som används för att programmera.
PGC och PGD måste vara anslutna så att programmeraren kan driva dem och konstruktionen sådan att inget otrevligt händer när den gör detta.
MCLR måste programmeraren båden kunnasänka till 0V, samt lyfta till Vpp som är kring 12V. Den bör inte vara direkt belastad med en konding, har Du resetkonding så placera ett motstånd mellan rc-länken för resetfördröjning och MCLR.
Använd inte MCLR som vanlig ingång, när Du satt denna bit i configuration word så krävs det Vpp före Vdd nästa gång den skall programmeras. Det betyder att programmeraren även måste kunna kontrollera matningsspänningen till PIC.
PGC och PGD måste vara anslutna så att programmeraren kan driva dem och konstruktionen sådan att inget otrevligt händer när den gör detta.
MCLR måste programmeraren båden kunnasänka till 0V, samt lyfta till Vpp som är kring 12V. Den bör inte vara direkt belastad med en konding, har Du resetkonding så placera ett motstånd mellan rc-länken för resetfördröjning och MCLR.
Använd inte MCLR som vanlig ingång, när Du satt denna bit i configuration word så krävs det Vpp före Vdd nästa gång den skall programmeras. Det betyder att programmeraren även måste kunna kontrollera matningsspänningen till PIC.
> I det här läget har jag bara en PIC16F628,
Säker att det är 628 ?? Inte 628A ?
> Vilka pinnar används för programmering,...
Det är enklare om du helt enkelt talar om vad som var oklart
i kapitel 14.11 på sidan 112 i databladet. Onödigt att svara på
sådant som du redan vet (eller kan läsa själv...).
*En* sak som inte är helt tydligt i databladet, är att RB4/PGM pinnen
*bör* hållas låg under programmeringen. Antingen via ett pulldown
motstånd eller från programmeraren själv (om den har stöd för det).
Säker att det är 628 ?? Inte 628A ?
> Vilka pinnar används för programmering,...
Det är enklare om du helt enkelt talar om vad som var oklart
i kapitel 14.11 på sidan 112 i databladet. Onödigt att svara på
sådant som du redan vet (eller kan läsa själv...).
*En* sak som inte är helt tydligt i databladet, är att RB4/PGM pinnen
*bör* hållas låg under programmeringen. Antingen via ett pulldown
motstånd eller från programmeraren själv (om den har stöd för det).
-
- Inlägg: 36
- Blev medlem: 27 februari 2007, 16:12:39
- Ort: Vallentuna
Vad är det för skilnad på 628 och 628A? I ELFA katalogen kallas den bara för 628.
Det verkar bökigt det här, mycket att tänka på. Jag hade hoppats på att det bara var att koppla 3-4 trådar till plattan, proggramera PIC'en och sedan koppla bort dem igen för att se hur det funkade. Vill inte testa mig fram för mycket om jag riskerar att sabba komponenterna.
Tack för alla idéer, men jag håller mig nog till det gamla sättet och flyttar över PIC'en till programmeraren även i fortsättningen.
Det jag exptimenterar med är: Jag har gjort en enkel timer med lysdioder som räknar upp från 0 - 100%. Så nu testar jag olika effekter på rinnande ljus för att signalera att tiden är slut.
Det verkar bökigt det här, mycket att tänka på. Jag hade hoppats på att det bara var att koppla 3-4 trådar till plattan, proggramera PIC'en och sedan koppla bort dem igen för att se hur det funkade. Vill inte testa mig fram för mycket om jag riskerar att sabba komponenterna.
Tack för alla idéer, men jag håller mig nog till det gamla sättet och flyttar över PIC'en till programmeraren även i fortsättningen.
Det jag exptimenterar med är: Jag har gjort en enkel timer med lysdioder som räknar upp från 0 - 100%. Så nu testar jag olika effekter på rinnande ljus för att signalera att tiden är slut.
> Vad är det för skilnad på 628 och 628A?
Står i databladet för 628A. Minns inte på rak arm. (Och du kan kolla lika snabbt som jag...)
> Jag hade hoppats på att det bara var att koppla 3-4 trådar till plattan, proggramera PIC'en och sedan koppla bort dem igen
Varför "koppla bort dem" ?? Det tar bara en massa tid. Om programmeraren
stöder ICSP så *ska* trådarna kunna sitta kvar. Det är bara att flasha om
och kolla om det funkar. Inget i uppkopplingen ska behöva röras.
> men jag håller mig nog till det gamla sättet och flyttar över PIC'en till programmeraren även i fortsättningen.
Dålig ide. Du tappar massor av tid i edit/test cykeln. Lägg till böjda ben på processorn o.s.v...
Här är en sida som diskuterar ICSP : http://www.embedinc.com/picprg/icsp.htm
Står i databladet för 628A. Minns inte på rak arm. (Och du kan kolla lika snabbt som jag...)
> Jag hade hoppats på att det bara var att koppla 3-4 trådar till plattan, proggramera PIC'en och sedan koppla bort dem igen
Varför "koppla bort dem" ?? Det tar bara en massa tid. Om programmeraren
stöder ICSP så *ska* trådarna kunna sitta kvar. Det är bara att flasha om
och kolla om det funkar. Inget i uppkopplingen ska behöva röras.
> men jag håller mig nog till det gamla sättet och flyttar över PIC'en till programmeraren även i fortsättningen.
Dålig ide. Du tappar massor av tid i edit/test cykeln. Lägg till böjda ben på processorn o.s.v...
Här är en sida som diskuterar ICSP : http://www.embedinc.com/picprg/icsp.htm
-
- Inlägg: 36
- Blev medlem: 27 februari 2007, 16:12:39
- Ort: Vallentuna
-
- Inlägg: 36
- Blev medlem: 27 februari 2007, 16:12:39
- Ort: Vallentuna
> men sedan för att kretsen ska kunna köras måste jag koppla ur MCLR.
Det tyder på att din programmerare inte är en "riktig" ICSP programmerare.
I så fall hade programmeraren "släppt" MCLR efter programmeringen så
att applikationen kunde starta. Detta är ju inte speciellt intressant på rena
ZIF-programmerare och det är inte så förvånande om de som skrev
programvaran till den du har inte tänkte på det.
Men hur som helst, kolla i alla fall upp en extra gång att det inte finns
något "Run" eller "Go" kommando eller liknande för att släppa MCLR.
Det tyder på att din programmerare inte är en "riktig" ICSP programmerare.
I så fall hade programmeraren "släppt" MCLR efter programmeringen så
att applikationen kunde starta. Detta är ju inte speciellt intressant på rena
ZIF-programmerare och det är inte så förvånande om de som skrev
programvaran till den du har inte tänkte på det.
Men hur som helst, kolla i alla fall upp en extra gång att det inte finns
något "Run" eller "Go" kommando eller liknande för att släppa MCLR.
-
- Inlägg: 36
- Blev medlem: 27 februari 2007, 16:12:39
- Ort: Vallentuna
Jag hittade en inställning i programvaran för programmeraren (MultiProg). Jag bockade för Fuses och då fick jag fler alternativ. Bockade av MCLRE. Så nu funkar allt som det ska. Tack för hjälpen.
En liten fundering, fungerar PORTA och PORTB på olika sätt? Det gåt bra att tända lysdioderna en efter en på PORTB, men när jag gör likadant på PORTA så slocknar den förra dioden. Alltså först sätter jag PORTA.0 = 1 dioden tänds. När jag sätter PORTA.1 = 1 så blir PORTA.0 = 0 igen? Ska det vara så här eller är det microBasic som strular?
En liten fundering, fungerar PORTA och PORTB på olika sätt? Det gåt bra att tända lysdioderna en efter en på PORTB, men när jag gör likadant på PORTA så slocknar den förra dioden. Alltså först sätter jag PORTA.0 = 1 dioden tänds. När jag sätter PORTA.1 = 1 så blir PORTA.0 = 0 igen? Ska det vara så här eller är det microBasic som strular?
> Bockade av MCLRE.
Men det är något helt annat !
Du har nu helt stängt av den externa reset-ingången.
Detta har andra sidoeffekter genom att processorn alltid
kommer att "starta" direkt när spänningen sätts på.
Många programmerare har problem att programmera om
processorer där man har satt "internal-MCLR", eftersom de
inte kan få över processorn i "programmerings-mode".
Som sagt, programmerare med riktigt stöd för ICSP kan styra
MCLR signalen på ett korrekt sätt.
> Alltså först sätter jag PORTA.0 = 1 dioden tänds.
> När jag sätter PORTA.1 = 1 så blir PORTA.0 = 0 igen?
Låter som ett RMW-fenomen. Ligger de två kommandona direkt
efter varandra ? Vad händer om du tänder båda lysdioderna
samtidigt ? "PORTA = 3", borde det väl vara för att tända båda
samtidigt.
RMW (Read-Modify-Write) fenomenet är något som man kan råka på när
man hanterar enstaka bitar i PORTx register. RMW fenomenet kan uppstå
genom timing problem, eller genom att du har glömt att stänga av
de analoga funktionerna på porten. *Varför* står i databladet och får bli
hemläxa...
Men det är något helt annat !
Du har nu helt stängt av den externa reset-ingången.
Detta har andra sidoeffekter genom att processorn alltid
kommer att "starta" direkt när spänningen sätts på.
Många programmerare har problem att programmera om
processorer där man har satt "internal-MCLR", eftersom de
inte kan få över processorn i "programmerings-mode".
Som sagt, programmerare med riktigt stöd för ICSP kan styra
MCLR signalen på ett korrekt sätt.
> Alltså först sätter jag PORTA.0 = 1 dioden tänds.
> När jag sätter PORTA.1 = 1 så blir PORTA.0 = 0 igen?
Låter som ett RMW-fenomen. Ligger de två kommandona direkt
efter varandra ? Vad händer om du tänder båda lysdioderna
samtidigt ? "PORTA = 3", borde det väl vara för att tända båda
samtidigt.
RMW (Read-Modify-Write) fenomenet är något som man kan råka på när
man hanterar enstaka bitar i PORTx register. RMW fenomenet kan uppstå
genom timing problem, eller genom att du har glömt att stänga av
de analoga funktionerna på porten. *Varför* står i databladet och får bli
hemläxa...
