Atmega 16 loopt nog maar op max 4Mhz

Hallo,

Er is tijdens het programmeren van m'n ATMEGA-16 iets fout gegaan. Vanaf dat moment kon ik hem niet meer met m'n USB programmer programmeren. Het programma leek ook corrupt: aangesloten LEDjes stonden willekeurig te knipperen.

Toen met een externe klok van 1Mhz geprobeerd de fuses te bekijken maar ook dat lukte niet. Het enige dat nog wat hoop gaf, was dat als ik reset laag maakte dat het geknipper dan stopte.

Ik las dat de enige mogelijkheid die dan overblijft een HVP/parallel programmer is. Dat heb ik nu geprobeerd en ik kon de ATMEGA lezen. De SPIEN fuse bleek gereset te zijn. Ik heb die gezet, de flash gewist en weer in m'n schakeling geplaatst. En succes: ik kon hem weer serieel programmeren!

Maar nadat ik m'n programma er weer in had geladen leek er niets veranderd: alles knipperde nog willekeurig. Ik kon echter hem nog wel steeds serieel lezen en schrijven. Verify liet zien dat het programma goed geladen was.

Ik dacht: terug naar eenvoud, dus de chip in een breadboard geplaatst, en het meest eenvoudige programma (led blink) geladen. Ook dat werkte niet: De LED knipperde willekeurig. Ook een externe klok van 12Mhz gaf hetzelfde resultaat. Toen de fuses veranderd naar interne klok van 1Mhz, en toen deed hij eindelijk wat ik verwachtte. Ook op 2 en 4Mhz interne klok werkte het, maar op 8Mhz niet (helemaal geen leven).

Moet ik nu de conclusie trekken dat er toch iets in de chip defect is geraakt of zijn er nog andere settings die dit gedrag zouden kunnen veroorzaken?

EricP

mét CE

Doet mij denken aan een brakke voeding. Op 1MHz gaat het net, als je sneller gaat gaan er dingen 'stuk'. Of komt de BOD in (zou dat kunnen? Als je LEDs aan gaan dat de BOD de boel in reset trekt waarna het spel opnieuw begint?)

Wat zijn je fuse settings nu ?

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.

Op 10 januari 2015 09:56:18 schreef EricP:
Doet mij denken aan een brakke voeding. Op 1MHz gaat het net, als je sneller gaat gaan er dingen 'stuk'. Of komt de BOD in (zou dat kunnen? Als je LEDs aan gaan dat de BOD de boel in reset trekt waarna het spel opnieuw begint?)

Voeding kan het niet zijn lijkt me. Ik heb het namelijk met drie verschillende voedingen geprobeerd waarmee ik al veel projectjes heb gedaan en nooit geen probleem mee gehad. Eén ATMEGA-16 met één ledje is nout niet bepaald een grote belasting toch?

Wat bedoel je met BOD? Stroombegrenzing of zo?
Vond net dat BOD Brown Out Detection betekent. BOD staat niet enabled dus dat zal niet de oorzaak zijn...

Op 10 januari 2015 09:56:53 schreef Roland van Leusden:
Wat zijn je fuse settings nu ?

[Bericht gewijzigd door Henry S. op dinsdag 13 januari 2015 21:28:50 (70%)

Default Fuse settings ATmega16/32: 0x99 0xE1

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.

Op 10 januari 2015 10:15:11 schreef Roland van Leusden:
Default Fuse settings ATmega16/32: 0x99 0xE1

Net geprobeerd 0x99 0xE1 er in te schrijven. Nu is ie weer in diepe slaap en kan ik hem met de seriele programmer niet meer lezen of schrijven.

Ik zal het straks weer met de parallel programmer proberen (moet ik even ophalen). Het verschil dat ik zie is dat JTAG bij deze settings ge-enabled is.

EricP

mét CE

Voeding kan het niet zijn lijkt me. Ik heb het namelijk met drie verschillende voedingen geprobeerd waarmee ik al veel projectjes heb gedaan en nooit geen probleem mee gehad. Eén ATMEGA-16 met één ledje is nout niet bepaald een grote belasting toch?

'Voeding' is meer dan alleen het apparaat wat de 12V levert. Voeding is alles tot aan de power pins van de AVR. Inclusief bypassing, ontkoppeling etc. Dit verschijnsel kun je ook met 1 LED reeds krijgen als je een rot contact hebt ergens. De AVR betrekt z'n voeding uit de signaal pinnen (protectie dioden). Dat gaat goed tot je de combinatie bereikt waar het ding geen voeding meer krijgt.

Maar goed, er zijn meer wegen die naar Rome leiden. Wellicht zit ik helemaal verkeerd...

Op 10 januari 2015 10:02:51 schreef maxva:
Voeding kan het niet zijn lijkt me. Ik heb het namelijk met drie verschillende voedingen geprobeerd ...

Het gaat niet alleen om het "voedings adapter" die je gebruikt, maar ook om de bedrading totaan de chip. Nu zijn AVR chips over het algemeen nogal tolerant voor allerlei dingen. Zo was het vroeger dat als er door een spanningsdipje maar 4V op de voedingspin van een chip stond, de chip gewoon "raar" kon reageren: da's buiten spec. Maar een AVR is gespect tot 2.nogwat volt. Die moet gewoon blijven werken.

Heb je ontkoppeling?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ja, 100nF tegen de chip aan.

Ik begrijp de reacties over de voeding, maar aangezien het met deze voeding al jaren zonder enig probleem gaat (en attiny AVRs op dezelfde voeding prima functioneren) kan het de voeding echt niet zijn. Zoals gezegd heb ik ook andere voedingen geprobeerd maar krijg hetzelfde resutltaat. Helaas heb ik geen tweede Atmega liggen dus daarmee vergelijken gaat nog niet.

[Bericht gewijzigd door Henry S. op dinsdag 13 januari 2015 21:29:11 (40%)

EricP

mét CE

Ja, 100nF tegen de chip aan.

En verder? Die adapter doet 5V? Met een draadje van 1m eraan?

Ik begrijp de reacties over de voeding, maar aangezien het met deze voeding al jaren zonder enig probleem gaat (en attiny AVRs op dezelfde voeding prima functioneren) kan het de voeding echt niet zijn.

Sherlock Homes wel eens gelezen? Ik sluit de voeding pas uit, als het danwel een dusdanig robuust ontwerp is dat het 'moet werken' (als in: anders is het chippie absurd gevoelig) of ik moet het kunnen meten en bevestigd zien. 'Een andere AVR draait er wel goed op' is geen argument. Wellicht gaat dat ook 'per ongeluk' goed.

Laatste open deur: wat doe je met je RESET? Los laten hangen gaat meestal wel goed, maar netjes is het niet. En van 'meestal' wil je graag af...

Maar goed, als het de voeding 'echt niet is' en je fuses staan goed... Dan kan ik er niks meer van maken dan dat je ergens iets stuk gemaakt hebt.

Op 10 januari 2015 11:23:38 schreef maxva:
Ik begrijp de reacties over de voeding, maar aangezien het met deze voeding al jaren zonder enig probleem gaat (en attiny AVRs op dezelfde voeding prima functioneren) kan het de voeding echt niet zijn.

De conclusie zal wel kloppen. Het zal de voeding wel niet zijn. Maar jou redenering ben ik op tegen.

"hij doet het al jaren". Prima. Die atmega deed het ook al een tijd, dus is er IETS veranderd. Waarom sluit je dan ineens die voeding uit?

Trouwens. Toch een hint om misschien toch naar de voeding te kijken... (effe het datasheet er bij gepakt): De atmega16 (zonder L) is maar 4.5-5.5V. De kans dat je attiny wel een 2.7-5.5V voedingsrange heeft is aanwezig....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Je hebt helemaal gelijk, en mij aan het twijfelen gekregen. Dus ipv adapters maar een 'echte' gestabiliseerde voeding er aan. Ingesteld op 5.0V:

De reset hangt via 33K aan +5V. Helaas maakt het allemaal geen verschil. Tot en met 4Mhz gaat het goed, daarboven niet.

... Dan kan ik er niks meer van maken dan dat je ergens iets stuk gemaakt hebt.

Als dat zo is dan begrijp ik niet hoe. Ik had m'n programma net veranderd en daarbij INT0 ge-enabled. Toen ik na programmeren dat geknipper zag, dacht ik meteen, 'Stom: interrupt ge-enabled en niks aan die pin hangen. De chip is natuurlijk alleen maar interrupts aan het afhandelen'. De rest van het verhaal is bekend (zie eerste post).

Elektronica kan natuurlijk altijd kapot gaan, maar ook ik heb de ervaring dat die Atmel chips behoorlijk wat kunnen hebben.

Deze gaat nu in het bakje 'Max 4Mhz'....;-)

[Bericht gewijzigd door Henry S. op dinsdag 13 januari 2015 21:29:50 (68%)

....want op 4Mhz lijkt ie alles nog te doen. Ook I2C op 100Khz:

De Atmega heeft 2 GND pennen, VCC en AVCC. Zijn deze ook allemaal aangesloten ??
Op de foto is het moeilijk te zien maar daar heb ik het idee dat geen enkele ground is aangesloten buiten de ground van de programmer.

Ik zie dat de gnd aan de "naar de foto toe" kant is aangesloten. Kort zwart draadje. Maar die aan de overkant, naast AVCC mist de aansluiting en de ontkoppel C.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 11 januari 2015 11:27:02 schreef rew:
Ik zie dat de gnd aan de "naar de foto toe" kant is aangesloten. Kort zwart draadje. ......

Ben niet overtuigd, lijkt mij een draadje van de programmer. Maar we horen het wel van de TS :)

Op 11 januari 2015 11:47:58 schreef driessens_nl:
[...]
Ben niet overtuigd, lijkt mij een draadje van de programmer. Maar we horen het wel van de TS :)

Voeding VCC en GND waren aangesloten, en AVCC ook. Ik heb nog even de GND naast AVCC aangesloten en een extra C'tje geplaatst.

Eén klein verschil: het programma loopt nu 'af en toe', dus soms wel en soms niet als ik de fuses op interne klok van 8Mhz zet. Maar de led knippert even snel als op 4Mhz, en de data op het I2C display is dan soms incorrect. Als ik dan de programmer verwijder loopt hij niet meer. Fuses terug naar 4Mhz en hij doet het weer...

Dit moet je als hints gebruiken om te proberen het probleem te vinden. Het fysiek beter aansluiten van de voedingen resulteert in een beter resultaat (maar nog niet perfect).

Ik vraag me af hoe snel ie nu uiteindelijk draait. Dus programmeer (uitgaande van een 4MHz klok) het knipperen op 500ms aan, 500ms uit, en meet de tijd van tien knippers.

Je led zit op PB2?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 11 januari 2015 14:39:23 schreef rew:Je led zit op PB2?

Scherpe blik ;-) Op de bovenste foto inderdaad op PB2, op de onderste foto (met de LCD erbij op PA5). Vanwaar die vraag? Zou het nog wat uitmaken welke poorten in gebruik zijn?

Op 11 januari 2015 14:39:23 schreef rew:Ik vraag me af hoe snel ie nu uiteindelijk draait. Dus programmeer (uitgaande van een 4MHz klok) het knipperen op 500ms aan, 500ms uit, en meet de tijd van tien knippers.

Je kunt het duidelijk zien dat hij op 4Mhz loopt omdat hij om de seconde aan gaat, op 1Hz dus. Maar meten is weten, dus dit is wat ik meet met de logic analyzer:

Dit bevestigt dat de frequentie om en nabij 1Hz is. Zoals gezegd loopt hij af en toe ook als ik de fuses naar 8Mhz interne klok zet. Dan meet ik ook dat hij op 4Mhz loopt.

[Bericht gewijzigd door Henry S. op dinsdag 13 januari 2015 21:30:34 (19%)

Mag ik vragen hoe jij op 4 MHz draait? Mijn atmega168 draait op 8MHz interne klok of op een extern kristal. Beide evt door 8 gedeeld.... volgens mij weinig andere opties....

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik zie een insteeek-breadboard, die kunnen nog weleens slechte verbindingen krijgen. Probeer het eens op een ander bord.

If you want to succeed, double your failure rate.

Is de frequentie definitie voor je delay functies wel goed?

Maak eens een lus die de status van een pin togglet. Geen delays, geen debugging statements, alleen maar pin=!pin; Daarmee sluit je eventuele configuratie problemen in je software omgeving uit.

[Bericht gewijzigd door mbbneon op woensdag 14 januari 2015 18:52:31 (14%)

Op 14 januari 2015 13:29:38 schreef rew:
Mag ik vragen hoe jij op 4 MHz draait? Mijn atmega168 draait op 8MHz interne klok of op een extern kristal. Beide evt door 8 gedeeld.... volgens mij weinig andere opties....

Zo, fuses instellen via de programmer:

Als ik hem op 1Mhz zet draait hij een kwart van die snelheid, dus dat klopt allemaal wel.

[Bericht gewijzigd door maxva op woensdag 14 januari 2015 19:20:17 (12%)

Op 14 januari 2015 14:16:53 schreef Jochem:
Ik zie een insteeek-breadboard, die kunnen nog weleens slechte verbindingen krijgen. Probeer het eens op een ander bord.

Hij zat eerst op een print waar alle verbindingen waren gesoldeerd. Toen de problemen begonnen ben ik teruggegaan naar 'simpel' door even een schakeling met slechts een ledje te gebruiken.

Op 14 januari 2015 18:47:57 schreef mbbneon:
Is de frequentie definitie voor je delay functies wel goed?

Ja, die blijkt exact. In het programma 4Mhz als frequentie opgegeven, en 500mS delay geeft ook 500mS delay zoals in het beeld van de logic analyzer is te zien.