PIC programmera på labplattan.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

PIC programmera på labplattan.

Inlägg av Christoffer »

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?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Det beror på om din programerar stödjer ICP, (In Curcuit Programming) då är det bara att koppla på sladdarna till PICen på kopplings däcket (tror jag i alla fall)

//Daniel A
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Vilken programmerare har du? Är det MP3.6 går det bra iaf, med hjälp av ett adapterkort från tillverkaren.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

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.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

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.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7460
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

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.
Användarvisningsbild
dar303
Inlägg: 5979
Blev medlem: 17 december 2003, 19:54:56
Ort: Sthlm

Inlägg av dar303 »

Jag har en mikrochip programmerare utan icsp så jag lödde på några tåtar på en ic-sockel och kopplade in dessa på min labbplatta. Det funkade faktisk så länge kretsen inte drog för mycket ström. Jag satte ett par dioder för att isolera programmerarens +5v och labbplattans +5v från varandra bara.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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).
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

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.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

sodjan du har nog rätt, jag ska göra ett försök (när jag kommer hem till Vallentuna på torsdag, sitter nu i Luleå i ett par dagar). Det blir mycket smidigare om man slipper slita ur kretsen varje gång.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

Sådärja, nu funkar det nästan. Det går bra att programmera, men sedan för att kretsen ska kunna köras måste jag koppla ur MCLR.
Jag har kopplat in pinnarna MCLR, Vss, Vdd, PGD, PDC.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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.
Christoffer
Inlägg: 36
Blev medlem: 27 februari 2007, 16:12:39
Ort: Vallentuna

Inlägg av Christoffer »

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?
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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... :-)
Skriv svar