PIC16F877A ICSP inkoppling
PIC16F877A ICSP inkoppling
Jag har en Velleman K8048 (Kjell & CO addr). Nu hade jag tänkt koppla in min PIC16F877A till ICSP porten och programmera den, men är det någon som har ett schema som illustrerar hur PIC:en ska vara kopplad (motstånd till MCLR, kondensatorer till klockan osv) samtidigt som den är kopplad till ICSP...
- JimmyAndersson
- Inlägg: 26579
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
aha den såg jag inte... men kopplar jag bara in de komponenter jag behöver till min egen applikation på detta sedan? sen står det att "min 1k" på 2 resistorer, vad är rekommenderat att man sätter där, och varför?
Sen är det en del komponenter som man behöver om man PIC:en är igång medans man programmerar, betyder detta att, när PIC:en kör mitt program så kan jag koppla in ICSP:n och programmera om den så startar PIC:en om eller hur funderar det?
PIC16F877A är pinkompitabel med PIC16F627 har jag för mig att det står någonstans i PIC16F877A databladet (men jag kan ha fel).
Men sen finns det ju en hel del komponenter som det är rekommenderat att man sätter in, typ kondensatorer på klockingångarna osv är det någon som har ett schema som beskriver detta för PIC16F877A?
EDIT: la till en fråga...
Sen är det en del komponenter som man behöver om man PIC:en är igång medans man programmerar, betyder detta att, när PIC:en kör mitt program så kan jag koppla in ICSP:n och programmera om den så startar PIC:en om eller hur funderar det?
PIC16F877A är pinkompitabel med PIC16F627 har jag för mig att det står någonstans i PIC16F877A databladet (men jag kan ha fel).
Men sen finns det ju en hel del komponenter som det är rekommenderat att man sätter in, typ kondensatorer på klockingångarna osv är det någon som har ett schema som beskriver detta för PIC16F877A?
EDIT: la till en fråga...
> betyder detta att, när PIC:en kör mitt program så kan jag koppla in ICSP:n och programmera om den så startar PIC:en om eller hur funderar det?
Jag har inte kollat specifickt för din programmerare, men *normalt* så
skall en ICSP-proframmerare ha kontroll över MCLR pinnen. D.v.s i "run"
läge se till att den är hög så att din appikation kan köra, Övriga pinnar
skall vara bortkopplade (alltså inte fysiskt, utan i high-Z mode).
Du ska aldrig behöva fysiskt koppla bort programmeraren, om det är en
"riktig" ICSP-programmerare.
När du sedan (via PC'ns program) begär en om-programmering
av din PIC, så kommer programmeraren att först sätta MCLR låg
så att processorn stannar, sedan snabbt lägga på 13V (Vpp) på
MCLR så att den går in i "programing mode" (utan att hinna "starta).
Sedan programmeras den nya versionen av applikationen via
PGC/PGD pinnarna. Till sist, när verifieringen har gått OK, skall
programmeraren först sätta tillbaka PGC/PGD i high-Z, sedan
sänka MCLR till reset-läge för att till slut sätta MCLR hög så
att den nya applikationen startar normalt.
Om programmeraren *inte* klarar detta utan att kopplad den
*fysiskt* i och ur, så är den "crappy"...
Du får ta hänsyn i din krets att en extern källa (programmeren)
kommer att driva PGC/PGD linjerna.
> PIC16F877A är pinkompitabel med PIC16F627
Långt ifrån !!
Kolla igen...
> typ kondensatorer på klockingångarna
Vilka "klockingångar" ??? Jag är överygad om att de använder ett riktigt
namn på dom, gör det du också så blir allt mycket enklare.
Jag har inte kollat specifickt för din programmerare, men *normalt* så
skall en ICSP-proframmerare ha kontroll över MCLR pinnen. D.v.s i "run"
läge se till att den är hög så att din appikation kan köra, Övriga pinnar
skall vara bortkopplade (alltså inte fysiskt, utan i high-Z mode).
Du ska aldrig behöva fysiskt koppla bort programmeraren, om det är en
"riktig" ICSP-programmerare.
När du sedan (via PC'ns program) begär en om-programmering
av din PIC, så kommer programmeraren att först sätta MCLR låg
så att processorn stannar, sedan snabbt lägga på 13V (Vpp) på
MCLR så att den går in i "programing mode" (utan att hinna "starta).
Sedan programmeras den nya versionen av applikationen via
PGC/PGD pinnarna. Till sist, när verifieringen har gått OK, skall
programmeraren först sätta tillbaka PGC/PGD i high-Z, sedan
sänka MCLR till reset-läge för att till slut sätta MCLR hög så
att den nya applikationen startar normalt.
Om programmeraren *inte* klarar detta utan att kopplad den
*fysiskt* i och ur, så är den "crappy"...
Du får ta hänsyn i din krets att en extern källa (programmeren)
kommer att driva PGC/PGD linjerna.
> PIC16F877A är pinkompitabel med PIC16F627
Långt ifrån !!
Kolla igen...
> typ kondensatorer på klockingångarna
Vilka "klockingångar" ??? Jag är överygad om att de använder ett riktigt
namn på dom, gör det du också så blir allt mycket enklare.
> CLKIN och CLKOUT
Använder du en extern klocka ?
Eller kristall (då heter pinnarna OSC1 och OSC2 och skall ha 22 pF till jord).
Dock behövs ingen oscillator för att *programmera* en PIC.
> har testat att bara koppla in ICSP:n till labbplattsen och PIC:en
Om det finns ett kapitel i K8048 manualen om ICSP, så är det väll bara att följa det som står där.
[Laddar ner manualen över modemet...............]
Observera att schemat i manualen enbart redovisar de anslutningar som är
rellevanta för ICSP kopplingen. Sedan måste naturligtsvis PIC'en förses
med övriga normala kopplingar, som avkopplingskondingar, 5V och jord
på rätt pinnar (2 vardera på 877A), kristall (t.ex) om du även vill kunna
köra applikationen o.s.v.
> det funkar fortfarande inte. Några tips?
Knappast, inte med en så dålig beskrivning av vad som händer !
"Funkar inte", duger inte alls som felbeskrivning...
Använder du en extern klocka ?
Eller kristall (då heter pinnarna OSC1 och OSC2 och skall ha 22 pF till jord).
Dock behövs ingen oscillator för att *programmera* en PIC.
> har testat att bara koppla in ICSP:n till labbplattsen och PIC:en
Om det finns ett kapitel i K8048 manualen om ICSP, så är det väll bara att följa det som står där.
[Laddar ner manualen över modemet...............]
Observera att schemat i manualen enbart redovisar de anslutningar som är
rellevanta för ICSP kopplingen. Sedan måste naturligtsvis PIC'en förses
med övriga normala kopplingar, som avkopplingskondingar, 5V och jord
på rätt pinnar (2 vardera på 877A), kristall (t.ex) om du även vill kunna
köra applikationen o.s.v.
> det funkar fortfarande inte. Några tips?
Knappast, inte med en så dålig beskrivning av vad som händer !
"Funkar inte", duger inte alls som felbeskrivning...
aha, det var 22pF svaret jag var ute efter (har sett flera olika kondensator värden på nätet nämligen)
Jo men jag håller på att testar enbart med ICSP kopplingen just för tillfället (alltså inga kringkomponenter som manualen visar), men +5V och GND ska väl inte kopplas in då? för dom signalerna kommer ju från ICSP kontakten?
Det som händer när jag programmerar är att programmeraren ibland kan läsa device ID och ibland inte (får dev id till E27h för PIC16F877A). Men den lyckas aldrig programmera kresten. Det bara kommer upp ett felmeddelande att den försökte skriva in 0183h (från min .HEX fil alltså) med läste FFFFh.
Jo men jag håller på att testar enbart med ICSP kopplingen just för tillfället (alltså inga kringkomponenter som manualen visar), men +5V och GND ska väl inte kopplas in då? för dom signalerna kommer ju från ICSP kontakten?
Det som händer när jag programmerar är att programmeraren ibland kan läsa device ID och ibland inte (får dev id till E27h för PIC16F877A). Men den lyckas aldrig programmera kresten. Det bara kommer upp ett felmeddelande att den försökte skriva in 0183h (från min .HEX fil alltså) med läste FFFFh.
Observervera att en fungerande oscillator (kristall eller intern) inte behövs för att *programmera* en PIC.
Bara för att *köra* koden efteråt.
5V måste vara anslutet, antingen separat eller från programmeraren.
Om K8048 förser "the target PIC" med 5V så är det bara att köra med den.
Vad har du för avkoppling runt "the target PIC" ?
T.ex en elyt (en eller ett par 100 uF) för att ta variationer i strömförbrukning
och en 100nF ker för att ta "spikar".
Strömförbrukningen varierar ganska nycket när den interna "charge pump" sätt på och av under programmeringen, och sporadiska fel kan ofta avhjälpas med några kondingar...
Bara för att *köra* koden efteråt.
5V måste vara anslutet, antingen separat eller från programmeraren.
Om K8048 förser "the target PIC" med 5V så är det bara att köra med den.
Vad har du för avkoppling runt "the target PIC" ?
T.ex en elyt (en eller ett par 100 uF) för att ta variationer i strömförbrukning
och en 100nF ker för att ta "spikar".
Strömförbrukningen varierar ganska nycket när den interna "charge pump" sätt på och av under programmeringen, och sporadiska fel kan ofta avhjälpas med några kondingar...
aha alright, nej jag har bara dragit pinne 1 från ICSP kontakten (VPP) till /MCLR, pinne 2 (VDD) till PIC:ens två VCC ingångar, pinne 3 (GND) till PIC:ens två GND ingångar, pinne 4 (PGD) till PIC:ens PGD och pinne 5 (PGC) till PIC:ens PGC.. som manualen visar (alla kringkomponenter trodde jag bara behövdes om man skulle ha en i en applikation, men nu vill jag ju bara testa att programmera den).
Men hur menar du att man ska koppla in kondensatorerna da... en 100 uF i med + till VDD och - till GND (?) och en 100 nF kopplad till VDD och GND... är det så du menar? är det allt?
Tack för hjälpen!
Men hur menar du att man ska koppla in kondensatorerna da... en 100 uF i med + till VDD och - till GND (?) och en 100 nF kopplad till VDD och GND... är det så du menar? är det allt?
Tack för hjälpen!
(T.ex) en 100uF (elyt) och en 100 nF (ker eller pollyester) mellan
matningspänning en jord så nära "target PIC" (va f-n säger man på svenska ?,
"mål PIC'en" låter lite konstigt...) som möjligt.
Jag säger inte att det *säkert* är problem med störningar på
matningen, inte ens *sannolikt*, men det är skönt att ha det
ur världen i allla fall...
matningspänning en jord så nära "target PIC" (va f-n säger man på svenska ?,
"mål PIC'en" låter lite konstigt...) som möjligt.
Jag säger inte att det *säkert* är problem med störningar på
matningen, inte ens *sannolikt*, men det är skönt att ha det
ur världen i allla fall...
> är den ICSP inkoppling som finns i manualen allmän, alltså fungerar den med alla ICSP programmerare?
Hur kopplingen skall se ut, är inget som programmeraren styr.
Det är programmerings spcen till varje PIC som är styrande, och
den som konstruerar en ICSP programerare får snällt följa det.
Det finns även ett kort kapitel om ICSP i databladet till
varje PIC.
Det finns flera "Application Notes" från Microchip som i detalj
beskriver ICSP. Normalt är det dock inget problem, bara att
ansluta MCLR, PGD, PGC (och enentuellt Vdd/Vss) till rellevanta
pinnar på processorn (framgår av databladet så klart) och köra.
När det gäller just din koppling, så är det nästan omöjligt att
säja någonting utanm att *se* den. Det räcker inte med att
någon säger att "jag har kopplat si och så", när man inte har
möjliget att verifiera att det stämmer.
Sporadiska fel, som du verkar ha, är ofta kopplat till svajig
matningsspänning, dålig avkoppling vid procesormn av matnings-
spänningen, för långa PGD/PGC kablar, överhörning
mellan PGD/PGC kablarna (t.ex genom att de ligger tillsammans
i samma hölje) eller liknande.
Hur kopplingen skall se ut, är inget som programmeraren styr.
Det är programmerings spcen till varje PIC som är styrande, och
den som konstruerar en ICSP programerare får snällt följa det.
Det finns även ett kort kapitel om ICSP i databladet till
varje PIC.
Det finns flera "Application Notes" från Microchip som i detalj
beskriver ICSP. Normalt är det dock inget problem, bara att
ansluta MCLR, PGD, PGC (och enentuellt Vdd/Vss) till rellevanta
pinnar på processorn (framgår av databladet så klart) och köra.
När det gäller just din koppling, så är det nästan omöjligt att
säja någonting utanm att *se* den. Det räcker inte med att
någon säger att "jag har kopplat si och så", när man inte har
möjliget att verifiera att det stämmer.
Sporadiska fel, som du verkar ha, är ofta kopplat till svajig
matningsspänning, dålig avkoppling vid procesormn av matnings-
spänningen, för långa PGD/PGC kablar, överhörning
mellan PGD/PGC kablarna (t.ex genom att de ligger tillsammans
i samma hölje) eller liknande.
Avkopplingskondensatorer har man vid *alla* digitala kretsar, helt
oavsett om det råkar vara en processor som skall anslutas via ICSP.
Blanda inte ihop det. Att kondingarna saknas på ett ICSP schema, betyder
inte att det inte behövs, den som ritade schemat antog nog bara att
det förstår man själv, hans fokus var på själva ICSP kopplingen...
Och så skall de ligga "bredvid varandra", så klart, som Icecap noterade.
oavsett om det råkar vara en processor som skall anslutas via ICSP.
Blanda inte ihop det. Att kondingarna saknas på ett ICSP schema, betyder
inte att det inte behövs, den som ritade schemat antog nog bara att
det förstår man själv, hans fokus var på själva ICSP kopplingen...
Och så skall de ligga "bredvid varandra", så klart, som Icecap noterade.