Mega16 med program funkar bra på STK500 men inte på kretskor
Mega16 med program funkar bra på STK500 men inte på kretskor
Mega16 med program fungerar bra monterad på STK500 men buggar då jag kör den ensam på kretskort.
Jag har förstås anslutit VCC och GND. Jag har kopplat AREF till VCC och AVCC till VCC (via lågpass). Jag har för säkerhets skull kopplat Reset till VCC.
Det som buggar är när jag ska låta ett analogt värde (från PortA.0) styra två utgångar (PortC.0 och PortC.1).
De analoga värdena in är helt ok (kollade med både voltmeter och Oscilloskop) men portC.0 och PortC.1 växlar mellan 1 och 0 helt efter eget tycke.
Analogdelen är nog ok, eftersom jag använder en annan analog ingång (PortA.1) till att styra PWM på en utgång (PortD.5) och det fungerar klockrent, både med Mega16 monterad på STK500 och när den går "själv" på kretskortet.
Allt fungerar som sagt bra när jag kör via STK500, men monterad på kretskortet krånglar PortC.0 och C.1 ungefär som när jag i andra projekt inte aktiverat Pull-up på en ingång som ska styra en utport, (hipp som happ, det kan räcka att jag lägger fingret på kretsen).
Jag har visserligen en ingång (PortB.0, B.1 och B.2) men de påverkar inte PortC. Pull up är aktiverad med Sfior=Sfior AND 251, PortB=255.
Alla potentialer mätta med Voltmeter och oscilloskop. Allt verkar ok.
Jag har provat med fyra olika Mega16, alla med samma resultat.
Jag har förstås provat att i koden selektera bort den rad som orsakar det hela, men vilket värde jag än sätter som den analognivå som ska styra PortC så flippar PortC.0 och PortC.1 mellan 1 och 0 hela tiden (ofta rytmiskt om jag lägger oscilloskopets mätprob på något ben på Mega16-kretse).
Jag har kört Mega16 på kretskort i andra projekt och det gått bra, men då aldrig använt en utport till I/O, utan bara PWM via en counter.
Jag har lagt många timmar på att lösa detta men går bet.
Någon här som har en aning?
Tacksam för svar.
Jag har förstås anslutit VCC och GND. Jag har kopplat AREF till VCC och AVCC till VCC (via lågpass). Jag har för säkerhets skull kopplat Reset till VCC.
Det som buggar är när jag ska låta ett analogt värde (från PortA.0) styra två utgångar (PortC.0 och PortC.1).
De analoga värdena in är helt ok (kollade med både voltmeter och Oscilloskop) men portC.0 och PortC.1 växlar mellan 1 och 0 helt efter eget tycke.
Analogdelen är nog ok, eftersom jag använder en annan analog ingång (PortA.1) till att styra PWM på en utgång (PortD.5) och det fungerar klockrent, både med Mega16 monterad på STK500 och när den går "själv" på kretskortet.
Allt fungerar som sagt bra när jag kör via STK500, men monterad på kretskortet krånglar PortC.0 och C.1 ungefär som när jag i andra projekt inte aktiverat Pull-up på en ingång som ska styra en utport, (hipp som happ, det kan räcka att jag lägger fingret på kretsen).
Jag har visserligen en ingång (PortB.0, B.1 och B.2) men de påverkar inte PortC. Pull up är aktiverad med Sfior=Sfior AND 251, PortB=255.
Alla potentialer mätta med Voltmeter och oscilloskop. Allt verkar ok.
Jag har provat med fyra olika Mega16, alla med samma resultat.
Jag har förstås provat att i koden selektera bort den rad som orsakar det hela, men vilket värde jag än sätter som den analognivå som ska styra PortC så flippar PortC.0 och PortC.1 mellan 1 och 0 hela tiden (ofta rytmiskt om jag lägger oscilloskopets mätprob på något ben på Mega16-kretse).
Jag har kört Mega16 på kretskort i andra projekt och det gått bra, men då aldrig använt en utport till I/O, utan bara PWM via en counter.
Jag har lagt många timmar på att lösa detta men går bet.
Någon här som har en aning?
Tacksam för svar.
Re: Mega16 med program funkar bra på STK500 men inte på kret
Du säger inget om ev. avkopplingskondensator?
Re: Mega16 med program funkar bra på STK500 men inte på kret
Generellt för µC:
* Är hela kopplingen lagom avkopplat? Min standard är minst 1 st 100nF keramisk kondensator per strömförsörjningspinpar per krets + en elektrolyt vid inkommande, möjligen fler.
* Är RESET korrekt styrd? Pull-up/down osv.
* Är det möjligt att få en utgång att ge en puls vid reset (bra om man har oscilloskop) eller slå på vid reset och sedan kan man slå av den med en knapp (inget oscilloskop).
* Är hela kopplingen lagom avkopplat? Min standard är minst 1 st 100nF keramisk kondensator per strömförsörjningspinpar per krets + en elektrolyt vid inkommande, möjligen fler.
* Är RESET korrekt styrd? Pull-up/down osv.
* Är det möjligt att få en utgång att ge en puls vid reset (bra om man har oscilloskop) eller slå på vid reset och sedan kan man slå av den med en knapp (inget oscilloskop).
Re: Mega16 med program funkar bra på STK500 men inte på kret
Har du kollat så du inte har några flytande ingångar?
Dvs att alla pinnar som inte används är satta som utgång och låga (värde 0)?
Dvs att alla pinnar som inte används är satta som utgång och låga (värde 0)?
Re: Mega16 med program funkar bra på STK500 men inte på kret
Tack för att ni försöker hjälpa mej. Jag uppskattar det verkligen.
Jag har avkopplat efter era anvisningar (även om jag inte fick tag i någon 100nF keramisk utan använde istället polyester). Bundit alla ingångar, även hårdvarumässingt så att inga flyter (har testat både till o och 1).
Även Reset är hårdvarumässigt bunden till 1.
Tyvärr är det inte den minsta skillnad, C0 och C1 växlar lite som de tycker.
Jag har även mätt på STK500:an (där det hela fungerar perfekt) om den skulle ha pull up/down på C-porten.
Men det är bara förvirrande, på C0 är det 5k till GND och 160ohm till VCC.
När jag mäter spänning på C0 är det 0V mot GND trots 160 ohm till VCC!??! Jag begriper det inte.
På C1-C7 finns ingen pull up/down.
Jag har både 12V och 5V på kretskortet. 7012 och 7805 matas båda av 19V.
Jag gjorde en omkoppling så att 7805 istället matades av 7812, då blev utgång C0 "lugnare" och växlade inte direkt jag petade på kretsens plast, eller rörde någon GND på kortet. Men den gör ändå som den vill emellanåt.
(jag använder en spänningsdelare från 12-volten in på en analog ingång (A0) för att detektera spänningsnivåer).
Det är inte glappt på kretskortet eller någon kallödning, jag kan vrida och trycka på kortet och det har inte det minsta betydelse.
Om någon undrar så bygger jag en ny styrning till en laddstation för min elbil. Elbilars laddstationer kommunicerar med bilens laddare enligt en öppen och väl definierad standard, J1772.
Den funkar ungefär som följer:
Laddstation skickar ut 12v på en kontrolledning i laddhandsken till bilen. Bilen sänker denna till 9V, laddststionen ska detektera detta och istället skicka ut ett 1kHz pulståg på kontrolledningen.
Pulståget ska PWM-regleras. Med pulskvoten talar laddstationen om för bilens inbyggda laddare hur mycket ström den får dra från fastigheten den är ansluten till (16% för 10A, 25% för 16 A, 40% för 25A osv).
När bilen upptäckt pulståget och kollat pulskvoten sänker den spänningen ytterligare ner till 6V. Detta ska min laddstation detektera och då slå till huvudkontaktorn som matar nätspänningen genom laddhandsken till bilens laddare.
Själva batteriladdaren sitter altså i bilen, min laddstation sköter bara kommunikationen och kraftmatning.
Jag har byggt ihop en sådan laddstation som fungerar bra, och jag har lagt till en extrafunktion. Eftersom jag har 5kW solpaneler, som jag vill ladda bilen med i möjligaste mån, har jag en fotoresistor som styr pulskvoten efter solljuset.
Det sköter en Mega16, medan jag valde att ha komparatorer sköter detekteringen av spänningsnivåerna.
Det kretskortet funkar bra men blev onödigt grötigt då jag fick löda dit komponenter i efterhand och göra omkopplingar (det där känner ni säkert igen.....). Därför byggde jag ett nytt kort där Mega16 även sköter detekteringen av spänningsnivåerna.
Det är det jag kämpar med nu. Det funkar så bra på STK500, men det bär emot att sätta in en STK500 i laddstationen.......
Jag funderar på att bygga om mitt nya kort och använda en annan utport än C.
PortC är ju lite underlig eftersom man bara kan använda C0,C1,C6 och C7. C2-C5 är någon kommunikation och reagerar inte på kommandon.
Men de andra portarna är upptagna, så jag får koppla om och använda några analoga portar som digitala.
Men det funkar ju på STK:n, vilket är irriterande...........
Jag har avkopplat efter era anvisningar (även om jag inte fick tag i någon 100nF keramisk utan använde istället polyester). Bundit alla ingångar, även hårdvarumässingt så att inga flyter (har testat både till o och 1).
Även Reset är hårdvarumässigt bunden till 1.
Tyvärr är det inte den minsta skillnad, C0 och C1 växlar lite som de tycker.
Jag har även mätt på STK500:an (där det hela fungerar perfekt) om den skulle ha pull up/down på C-porten.
Men det är bara förvirrande, på C0 är det 5k till GND och 160ohm till VCC.
När jag mäter spänning på C0 är det 0V mot GND trots 160 ohm till VCC!??! Jag begriper det inte.
På C1-C7 finns ingen pull up/down.
Jag har både 12V och 5V på kretskortet. 7012 och 7805 matas båda av 19V.
Jag gjorde en omkoppling så att 7805 istället matades av 7812, då blev utgång C0 "lugnare" och växlade inte direkt jag petade på kretsens plast, eller rörde någon GND på kortet. Men den gör ändå som den vill emellanåt.
(jag använder en spänningsdelare från 12-volten in på en analog ingång (A0) för att detektera spänningsnivåer).
Det är inte glappt på kretskortet eller någon kallödning, jag kan vrida och trycka på kortet och det har inte det minsta betydelse.
Om någon undrar så bygger jag en ny styrning till en laddstation för min elbil. Elbilars laddstationer kommunicerar med bilens laddare enligt en öppen och väl definierad standard, J1772.
Den funkar ungefär som följer:
Laddstation skickar ut 12v på en kontrolledning i laddhandsken till bilen. Bilen sänker denna till 9V, laddststionen ska detektera detta och istället skicka ut ett 1kHz pulståg på kontrolledningen.
Pulståget ska PWM-regleras. Med pulskvoten talar laddstationen om för bilens inbyggda laddare hur mycket ström den får dra från fastigheten den är ansluten till (16% för 10A, 25% för 16 A, 40% för 25A osv).
När bilen upptäckt pulståget och kollat pulskvoten sänker den spänningen ytterligare ner till 6V. Detta ska min laddstation detektera och då slå till huvudkontaktorn som matar nätspänningen genom laddhandsken till bilens laddare.
Själva batteriladdaren sitter altså i bilen, min laddstation sköter bara kommunikationen och kraftmatning.
Jag har byggt ihop en sådan laddstation som fungerar bra, och jag har lagt till en extrafunktion. Eftersom jag har 5kW solpaneler, som jag vill ladda bilen med i möjligaste mån, har jag en fotoresistor som styr pulskvoten efter solljuset.
Det sköter en Mega16, medan jag valde att ha komparatorer sköter detekteringen av spänningsnivåerna.
Det kretskortet funkar bra men blev onödigt grötigt då jag fick löda dit komponenter i efterhand och göra omkopplingar (det där känner ni säkert igen.....). Därför byggde jag ett nytt kort där Mega16 även sköter detekteringen av spänningsnivåerna.
Det är det jag kämpar med nu. Det funkar så bra på STK500, men det bär emot att sätta in en STK500 i laddstationen.......
Jag funderar på att bygga om mitt nya kort och använda en annan utport än C.
PortC är ju lite underlig eftersom man bara kan använda C0,C1,C6 och C7. C2-C5 är någon kommunikation och reagerar inte på kommandon.
Men de andra portarna är upptagna, så jag får koppla om och använda några analoga portar som digitala.
Men det funkar ju på STK:n, vilket är irriterande...........
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Re: Mega16 med program funkar bra på STK500 men inte på kret
Hur är det med JTAG, den sitter väl på PC2-PC5? Kan vara värt att kika på.C2-C5 är någon kommunikation och reagerar inte på kommandon.
Re: Mega16 med program funkar bra på STK500 men inte på kret
Japp, JTAG sitter på C-porten, bara att stänga av under fuses (ifall någon undrade)
Re: Mega16 med program funkar bra på STK500 men inte på kret
Jag testade att stänga av JTAG, men det var tyvärr ingen skillnad. Jag tror det är som MicaelKarlsson skriver att JTAG bara påverkar C2-C5. Jag använder C0 och C1.
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Re: Mega16 med program funkar bra på STK500 men inte på kret
Har kollat databladet sid 61 och det bekräftar mitt antagande ovan att JTAG är kopplad till PC2-PC5. Har du pillat något med TWI som huserar på PC0 och PC1?
Här kan du få lite inspiration till din design: Atmel AVR042: AVR Hardware Design Considerations eller AVR040: EMC Design Considerations
Här kan du få lite inspiration till din design: Atmel AVR042: AVR Hardware Design Considerations eller AVR040: EMC Design Considerations
Re: Mega16 med program funkar bra på STK500 men inte på kret
Kan det vara nåt med TWI interfacet som sitter på PC0 och PC1? Om du av misstag aktiverat det?
/RA
/RA
Re: Mega16 med program funkar bra på STK500 men inte på kret
Nej, jag har inte aktiverat TWI (har läst mej till att det ska vara något interface av något slag).
Är det aktiverat default? I så fall hur deaktiverar man det?
Är det aktiverat default? I så fall hur deaktiverar man det?
- MicaelKarlsson
- Inlägg: 4669
- Blev medlem: 18 juni 2004, 09:16:07
- Ort: Aneby
- Kontakt:
Re: Mega16 med program funkar bra på STK500 men inte på kret
Inte vad jag vet, du skall vad jag vet initiera det själv (datablad sid. 172) på samma sätt som SPI eller USART.Är det aktiverat default?
Kan du använda andra pinnar än just PC0 och PC1? För att test och utesluta felkällor.
Re: Mega16 med program funkar bra på STK500 men inte på kret
TWI är Atmels namn på I2C bussen.
Hur ser din initiering av PortC ut?
Du kan även test och göra ett miniprogram som bara togglar PC0 och PC1 och test om det är samma fel.
/RA
Hur ser din initiering av PortC ut?
Du kan även test och göra ett miniprogram som bara togglar PC0 och PC1 och test om det är samma fel.
/RA
Re: Mega16 med program funkar bra på STK500 men inte på kret
Jag har nu stuvat om kretskortet, och har PortB som utport istället. Och felet flyttar sej då till Bporten.
Alltså har jag haft fel fokus, eftersom jag trodde det var utportens fel.
Felet ligger tydligen i kopplingen till det analoga värde på portA, som styr mina utgångar.
Jag har efter det lagt mycket möda på att ta rätt på vilken analog referensspänning som är korrekt att ansluta till AREF.
Jag har tidigare anslutit VCC direkt till AREF, och det har fungerat bra, även för kretskortsmonterade Mega16.
Men när jag här byglar VCC till AREF händer det konstiga fenomenet på utgångarna som jag beskrivit.
Jag har fått rådet att ansluta AREF via en 100nF konding, men det fungerade inte alls.
Jag har anslutit AREF via resistorer till VCC (efter rådet att en internt satt AREF kan krocka med VCC, med varmgång som följd) men det ger samma resultat som att ansluta VCC direkt.
Det retfulla är att allt fungerar klockrent på STK500.
Jag har läst STK500:s, manual men där står att inget hur AREF är kopplad på kortet.
Jag funderar på att ansluta AREF via en spänningsdelare men har inte hunnit ännu.
Vet ni vad som är ett lämpligt sätt att ansluta AREF på en mega16?
Alltså har jag haft fel fokus, eftersom jag trodde det var utportens fel.
Felet ligger tydligen i kopplingen till det analoga värde på portA, som styr mina utgångar.
Jag har efter det lagt mycket möda på att ta rätt på vilken analog referensspänning som är korrekt att ansluta till AREF.
Jag har tidigare anslutit VCC direkt till AREF, och det har fungerat bra, även för kretskortsmonterade Mega16.
Men när jag här byglar VCC till AREF händer det konstiga fenomenet på utgångarna som jag beskrivit.
Jag har fått rådet att ansluta AREF via en 100nF konding, men det fungerade inte alls.
Jag har anslutit AREF via resistorer till VCC (efter rådet att en internt satt AREF kan krocka med VCC, med varmgång som följd) men det ger samma resultat som att ansluta VCC direkt.
Det retfulla är att allt fungerar klockrent på STK500.
Jag har läst STK500:s, manual men där står att inget hur AREF är kopplad på kortet.
Jag funderar på att ansluta AREF via en spänningsdelare men har inte hunnit ännu.
Vet ni vad som är ett lämpligt sätt att ansluta AREF på en mega16?
Re: Mega16 med program funkar bra på STK500 men inte på kret
Du har alltså ett motstånd mellan 5V och AVCC? hur stort är det?AVCC till VCC (via lågpass)