Tyhjän atmegan herättäminen

Terve!

Olen tässä jo kauan yrittänyt saada TQPF32 koteloiseen Atmega8-16AU eloa, mutta koska emme ole käsitelleet koulussa yhtään tyhjien piirien ohjelmointia niin ei vaan onnistu.

Tarkoituksena siis tehdä tämä lopputyöksi. Levyt ovat olleet jo valmiina kauan ja olenkin niiden kanssa tapellut paljon, kunnes vitutus nousi liikaa ja menin tekemään pienen testilevyn, jossa on vain kyseinen piiri, kide, kiteen konkat ja liitin kiinni. Yksinkertaisesti selitettynä piiristä lähtee liittimelle SCK, MISO, MOSI, RESET, RXD, VCC ja GND. Sekä kide on tietenkin XTAL1, sekä XTAL2 kiinni.

Ohjelmointiin käytän ensisijaiseksi Usbasp, jonka ostin settinä sekä koululla saatan välillä testata AVRISP mk2. Ohjelmana ensisijaiseksi AVRDUDE. Opettajilta en jaksa enää kysyä, koska sieltä tulee joko vittuilua tai sitten ei vastausta ollenkaan.

Yritän saada flashiä sisälle piiriin komennolla:

avrdude -c usbasp -p atmega8 flash:w:main.hex

Vastaukseksi tulee vain ettei kohdepiiriin saatu yhteyttä. Olen mitannut ettei ole mitään oikosulkuja, sekä että jännitteet ovat kunnossa.
Olisin kiitollinen, jos joku voisi heittää vinkkiä mikä menee vikaan, koska tätä menoa tulee lyhyt opinnäytetyön esittely.

avrdude-komennossasi ei ainakaan ole kerrottu -P-vivulla (siis iso pee) porttia, johon ohjelmointilaite on tietokoneessasi kytketty. En nyt osaa ulkomuistista sanoa, että osaako se noiden usb-ohjelmointilaitteiden kohdalla arvata että kyse tosiaan on usbista. Eli siis -P usb tuohon komentolitaniaan mukaan.

AVR Studio osaa ainakin AVR ISP mkII:n kanssa kertoa, jos se huomaa että kytkennässä on jotain vialla. Osaa siis kertoa mm. jos vaikkapa SCK ja MISO ovat oikosulussa keskenään.

Joissakin ATMegoissa on sellaista ongelmaa, että ohjelmointilinjat on kytketty nimenomaan MISO-, MOSI- jne nimiset linjat, jotka siis ovat SPI-väylän linjat. Ohjelmointia varten sen sijaan käytetään muita pinnejä, vaikka niiden nimet ovatkin ohjelmoinnista puhuttaessa samat. Tämä on todella hämäävää, ja datalehdessä siitä on vain maininta yhdessä kohdassa. Vilkaisin datalehteä pikaisesti, ja ilmeisesti tästä ei ole ATMega8:n kohdalla kyse. Tuo kannattaa kuitenkin silti pitää mielessä.

Sitten on vielä tuo liitinasia. Linkkaamassasi skemassa on ilmeisesti aivan erilainen ohjelmointiliitin kuin Atmelin oma pinout, joka on käytössä esim. AVR ISP mkII:ssä. Jos olet siis laittanut omaan kytkentääsi 2x3 -pinnisen liittimen linkkaamassasi skemassa olevan 1x6-pinnisen sijaan ja pitänyt pinninumerot ja niitä vastaavat signaalit samoina, sinulla on väärät pinnit väärissä paikoissa.

Mielenkiintoista on sekin, että kerrot piiristäsi menevän seitsemän karvaa ohjelmointiliittimelle, kun siinä yleensä on kuusi. Miksi siis RXD?

Tämän enempää tiedonmurusia en pysty tällä haavaa pudottamaan hihasta, kun menee lähinnä arvailuksi.

Laitan nyt vähän lisää tietoa, kun en eilen kerennyt laittamaan schemoja.
USBasp: fischl.de/usbasp/bilder/usbasp_circuit.png
Levyn schema: aijaa.com/v.php?i=7060372.png
Kuva levystä: aijaa.com/v.php?i=7060400.jpg

AVRISP mk2 en ole testannut, kuin kerran ja sitäkin vanhalla levyllä. Sain tuon testilevyn vasta pari päivää sitten syövytettyä ja nyt vasta eilen pääsin nopeasti testaamaan.

Olen kyllä katsonut, että pinnit ovat oikeissa kohdissa ihan rakennuksesta lähtien.

Tämänkin kokeilin vasta nyt ensimmäistä kertaa. USBasp kun saa TXD ja RXD pihalle niin kytkin piirilevystä tulevan RXD:n usbasp:stä tulevaan TXD:hen.

Reset-linjan ylösveto on tainnut unohtua. Siitä löytyy lisää tietoa kirjoittamastani oppaasta:

ruuvipenkki.fi/2010/08/23/at … urvaaminen

Suosittelisin lisäämään myös 100 nanofaradin suodatinkondensaattorin lähelle mikrokontrolleria.

Toivotaan, että näillä avuilla pääset eteenpäin :wink:

Tuli nyt iskettyä tuohon tuo unohdettu suodatinkonkka (150n kun ei pienempää löytynyt) ja sitten 4,7k resetin ylösvetovastus.

Nyt tässä pääsin säätämään avrisp:n kanssa vähän enemmän ja nyt sain vikakoodit talteen.
aijaa.com/v.php?i=7066022.bmp
aijaa.com/v.php?i=7066023.bmp
aijaa.com/v.php?i=7066024.bmp

Eli voisiko nämä paketissa olevat piiri olla laitettu niin että SPI-fuse on väärä, ja niitä ei voi ohjelmoida avrisp tai usbasp? Tai sitten vika on jotain ihan muuta.

Luultavasti. Siis tehtaalta tullessaan ISP ohjelmointi on enabloituna eikä ulkoista kidettä tarvitse vaan sisäinen RC oskillaattori on käytössä. Kide saa kyllä olla paikallaan vaikka ei olekaan käytössä.
:nerd:
ESD vaurio käsiteltäessä.
Lämpövaurio tinatessa.
Liian suuri jännite rikkonut piirin.
MISO/MOSI väärinpäin.
jokin muu kytkentävirhe.

Katso oskilloskoopilla näkyykö ohjelmointinastoissa liikettä kun yrität ohjelmoida/lukea piiriä. Koululla noobit rikkovat ohjelmointilaitteita ja jopa USB portti voi koneesta hajota niin että Windows ei sitä tiedä…

Itellä AVR Dragonin kanssa oli että defaulttina oli liian nopea SPI nopeus ohjelmointii. Noissa on yleensä ohjelmoitu myös CLK/8 päälle.

Valitset vaikka alussa heti hitaan tai aloitat hitaimmalla ja sitten testaat mikä on nopein jolla toimii.

Edit:
Muuten ainot nasta mikä ei ole AVR:ssä ESD suojattu (diodit käyttikseen) on reset. Tämä johtuu hivoltage ohjelmoinnin supportista. Eli muut pinnit varmaan kestää kohtuudella esd:tä, mutta ei reset nasta.