Sida 1 av 3
Sabbad Pic Krets?? /Nya problem
Postat: 31 mars 2007, 16:58:56
av newbadboy
Hej.
Har gjort ett program för en Pic16f628. Kopplat den på labbplattan och allt funkade fin. Flyttade över den på ett kretskortet och det var dött. Satte tebax den på labbplattan och där var det oxå dött.
Provade att programera om den och då fick jag följande felmeddelande...
...........>
Detected Target: 16F628 revisison 8
Target Erased
Transferring program to 16F628 via Wisp628
Transferring program memory... Wbus command failure
Write-Verify operation failure.
Vad kan detta betyda??
Har provat flasha en helt annan krets med ett annat program och det gick så wispen är ok. Vågar jag prova med en ny krets eller ska jag kolla upp ngt först?
Postat: 31 mars 2007, 17:45:32
av Marta
Givetvis skall Du kolla upp något först. Kontrollera spänningstillförseln, är den OK? Vad har den för insignaler? Kan där komma in mera spänning än den gillar? Vad skall den driva för något? Iakttog Du basala ESD-åtgärder när Du monterade kretsen?
Hur är det med pinne 10? Hålls den på GND under programmeringen? Fast när en annan krets fungerar så tyder det mesta på att den har fått en smäll.
Var det förresten första gången Du försökte att programmera om kretsen? I så fall kanske Du har gjort något dumt med config-bitarna.
Postat: 31 mars 2007, 22:25:02
av newbadboy
Nja esd skyddet är obefintligt så att säga. Det enda jag kunde hitta än så länge avr att jag kopplat MCLR till jord istället för Vcc. Kretsen har blivit flashad många ghr med detta program. Jag har inte ändrat ngt i programmet så det är nog kretsen som är kaputt..... få rkolla mer på det imorrn, är trött nu så inget verkar stämma
Postat: 31 mars 2007, 23:44:40
av Marta
Du skall inte koppla MCLR direkt till Vdd, där rekommenderas ett 10k motstånd. Utan det finns det risk att under vissa omständigheter så säger det tjoff. Allt enligt databladet.
Postat: 1 april 2007, 13:07:15
av newbadboy
Nä jag vet ... det var via ett motstånd jag hade kopplat
Postat: 1 april 2007, 14:50:35
av newbadboy
Detta e helt sjukt.
Jag provade med en ny krets. Den funkar på labbplattan men när jag sätter den i sockeln på kretskortet så går de inte alls. Jag kan inte hitta några fel på kortet. Det sker dock ngt skumt. Port RA6 och Ra7 använder jag mig inte alls av, på labbdäcket är dessa portar noll volt. Men när ic'n sitter i sockeln på kretskortet så ligger det 5volt på dessa två pinnar. Dessa pinnar är inte anslutna till ngt på kretskortet. Då drar jag slutsatsen att de 5V kommer från själva Pic ic'n. Hur kan det ta komma sig. F.ö kör jag med intern oscillator och extern mclr
Snälla hjälp mig , jag är helt rådlös.
Postat: 1 april 2007, 14:54:30
av Cryptomaster
Kanske ett kopplingsschema över labbplattan vore fint ?

Postat: 1 april 2007, 14:57:19
av newbadboy
Har tyvärr ingenstans att lägga upp det.
Postat: 1 april 2007, 14:58:04
av Micke_s
http://imageshack.us/ brukar funka att lägga upp bilder
Postat: 1 april 2007, 16:37:01
av newbadboy
Här kommer en enkel skiss av schemat.
http://img110.imageshack.us/my.php?image=larmpk1.jpg
Obs att den lilla kretsen 12F675 inte är inkopplad på varken labbplattan eller kretskortet. På kretskortet är det dock färdigt med sockel osv för den.
Postat: 1 april 2007, 18:21:40
av newbadboy
Ok, nu har jag gjort lite fler mätningar. Alltså alla ingångar har späningsdelarna R1/R2. Detta för att signalerna kommer at vara 12V (bil).
Om jag ansluter 5V signaler direkt på kretsens pinnar så fungerar larmet som det ska. Det intressanta är att jag kan få igång kretsen genom att lägga 12V på ingången märkt ON och detta generar i sin tur ca 5V på ben 6 på ic'n. På alla andra ingångar får jag bara ca 20mV på ic-benen när jag ansluter 12V. Detta kan jag inte förklara varför? Det borde bli precis som ON ingången eftersom de är lika.
Om jag tar bort kretsen och mäter bara direkt på sockeln så blir det 5V på alla ben om jag ansluter 12V till ingångarna precis som det ska. Värdena skiter sig alltås när ic'n sitter i sockeln.
Nedan är min kod till kretsen. Kan Pic'en på ngt sätt "Pulldown/Pullupa" dessa ben och sabba på detta sätt, och i såfall varför sker inte detta på labbplattan. Där har jag iof inte 12V signaler utan bara 5V med pulldownmotstånd på varje ben.
På RB4 provade jag att byta ut R1/R2 mot 1kohm och 820ohm. Detta resulterade i att det istället för ovan nämnda 20 mV blev ca 200mV!!!!
Kod: Markera allt
#define ON PORTB.F0
#define OFF PORTB.F1
#define IGNI PORTB.F2
#define DOOR PORTB.F3
#define SHOCK PORTB.F4
#define LARM PORTA.F1
#define LED PORTA.F0
int n=0;
int k=0;
int j=0;
int i=0;
void main(){
VRCON=0x00; //Vref av
CMCON=0x07; //Komp av
TRISA=0; //Port A utgångar
TRISB=1; //Port B ingångar
while(1){
LED=0;
LARM=0;
if(OFF==1) //Larm icke aktivt
k=1;
while(k==1){ //Larm väntar på ON signal
LED=0;
if(ON==1)
k=0;
}
if((ON==1)&&(IGNI==0)){ //Larm aktiverat
// delay_ms(6000); //Väntar 6s innan bevakar
n=1;
LED=1;
}
while(n==1) { //Larmet väntar på OFF eller
if(OFF==1){ //trigg via DOOR/SHOCK
n=0;
delay_ms(1000); //Väntar 1s, så inte OFF signal
} //uppfattas som trigg!!
if((DOOR==1)||(SHOCK==1)){
while((i<120)&&(IGNI)==0){
LARM=1;
delay_ms(400);
LARM=0;
delay_ms(400);
i++;
}
i=0;
}
}
}
}
Postat: 1 april 2007, 20:35:49
av Marta
RA6/RA7 är pinnarna för extern kristall. Se till att konfigurera för att använda INTOSC, eller koppla till en kristall med tillhörande kondingar. Är det en Welleman-programmerare har jag för mig att denna är försedd med kristall. Du har troligtvis helt eneklt ingen klocka till CPU och då kan detinte fungera.
Postat: 1 april 2007, 21:07:59
av Mathias@Åland
Borde det förresten inte vara TRISB=255 istället för TRISB=1? Med TRISB=1 så borde ju alla pinnar på PORTB utom pinne 6 bli utgångar.
Postat: 1 april 2007, 22:12:43
av newbadboy
Jag har ställt den för intern oscillator. Och som sagt så funkar ju grejerna på labbplattan även där utan xtal. Trisb=1 har jag använt innan och det funkar. Jag poängterar. Det är signalen som blir fel till portB ingångarna (fel späninngs nivå) och det är det som är felet med jag vet inte vad orsaken är
Postat: 1 april 2007, 23:05:47
av Marta
Det där verkar inte bra alls. Du kanske menar -1 till TRISB, då blir den ingångar. Annars är det bara RB0 som kommer att vara ingång.
Dessutom behöver Du lite mera avancerat interface till 12V-ingångarna. Det är knappast 12V stabbad spänning, utan Du måste göra något med spänningsbegränsning.
Det allra enklaste är dioder som låser spänningen till att inte överstiga +5. Du måste även skydda mot att ingångarna kan dras under noll.
Ett bra sätt är att använda CMOS med smithttrigger-ingångar som buffer. Ett stort motstånd (megohm) på ingången, klippdioder och en konding. Det rensar långsamma signaler så de kan matas in i känslig elektronik.
Det som är kopplat till tändningen är en katastrof, det kan bränna kretsen när man vrider från nyckeln. Tändspolen ger en förbaskat kraftig kick då ifall brytarna i fördelaren är slutna.