PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR defekt, Flash trotzdem les-/schreibar???



malthy
28.03.2012, 14:01
Hallo,

ich habe ein Problem mir einer AVR Schaltung, das ich so bisher nicht kannte und mir im Moment noch unerklärlich ist. Vielleicht hat jemand eine Idee.

Es geht um eine einfache Schlatung auf Basis eines AVR mega644p. Ich kann den Controller flashen, das geflashte auch wieder zurücklesen, ansonsten erscheint der Controller allerdings komplett tot. Um das Problem runterzukochen, habe ich einen Testcode erstellt, der nichts anderes tut als ein paar Ports zu toggeln. Das Problem sollte nicht der Code sein, hier ist er trotzdem (BASCOM):


$regfile = "m644pdef.dat"
$crystal = 8000000
$framesize = 64
$swstack = 64
$hwstack = 64

Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.4 = Output
Config Portd.5 = Output
Config Portd.4 = Output
Config Portb.3 = Output

Do
Toggle Portb.1
Toggle Portb.2
Toggle Portb.4
Toggle Portd.4
Toggle Portd.5
Toggle Portb.3
Waitms 200
Loop

End

Ich kann das Compilat mit AVRDude flashen und auch wieder auslesen (macht AVRDude ja zur Kontrolle nach dem Brennen), das funktioniert fehlerfrei. Die Ports bleiben allerdings konstant auf low. Ich habe auch testweise etwas über den UART rausgeschrieben, auch da passiert nichts. Das ganze riecht für mich etwas danach, als wenn es ein Problem mit dem Takt gibt, m. E. sind die Fuses aber richtig gesetzt. Manchmal hat man ja Tomaten auf den Augen, deshalb im folgenden Bild die Fuses, wie ich sie gesetzt habe:

21970

Das Ganze ist in SMD aufgebaut, den Controller zu wechseln ist also wirklich erst die letzte Option. Mir kommt es einfach sehr unwahrscheinlich vor, dass ich den AVR über ISP problemlos flashen kann, er aber ansonsten einen Totalschaden haben soll... ist das wahrscheinlich? Was könnte noch für ein Problem vorliegen?

Vielen Dank für alle Tipps!

Gruß
Malte

MagicWSmoke
28.03.2012, 14:42
Das Fehlerbild würde entstehen, wenn Reset auf Low bleibt. Nimm ein Messgerät und schau nach auf welchem Level der Reset-Pin liegt und steck' auch den Programmer zum Betrieb ab.
Edit:
Bei 'nem USB-Programmer den ISP abziehen, nicht den USB, denn bei fehlender Spannungsversorgung kann der den Reset runter ziehen.

malthy
28.03.2012, 15:00
Hallo MagicWSmoke,

in der Tat, der Reset bleibt durchgängig auf Masse. Ich kann den Reset Pin auch nicht per PullUp hochziehen, was (leider) logisch ist, weil der Reset Pin nach Masse einen Widerstand von ca 320 Ohm hat. Dann muss daraus also doch schließen, dass der Controller (partiell) hin ist, vllt ja sogar nur die interne Beschaltung vom Reset Pin. Trotzdem Danke für den guten Tipp!

Gruß
Malte

MagicWSmoke
28.03.2012, 15:09
Dann muss daraus also doch schließen, dass der Controller (partiell) hin ist, vllt ja sogar nur die interne Beschaltung vom Reset Pin.
Ist das 'ne fertige Platine oder etwas Selbstgebautes ? Evtl. 'n Schluss irgendwo. Einfach mal einen 470 Ohm Widerstand nehmen und bei abgesteckten Programmer den Reset auf VCC ziehen und schauen was passiert.

malthy
28.03.2012, 15:17
Ist selbstgebaut. Aber die Platine ist prinzipiell okay, habe das nochmal solwohl im Layout, als auch bei einem zweiten, noch unbestückten Exemplar der Platine überprüft. Ich muss gleich nochmal genauer bei der Platine gucken, bei der das Problem auftritt. Ist aber nicht sehr wahrscheinlich, dass da irgendwo ein Feinschluss ist.

Wenn ich den Reset Pin mit Gewalt auf ca. 3V hochziehe (220 Ohm), läuft der Controller trotzdem nicht los [edit: auch bei 4V noch tote Hose]. Leider. Auch das spricht also wohl für ein Problem im Controller.

Gruß
Malte

MagicWSmoke
28.03.2012, 15:25
Wenn ich den Reset Pin mit Gewalt auf ca. 3V hochziehe (220 Ohm), läuft der Controller trotzdem nicht los.
Ja, hört sich nicht gut an. Würde trotzdem zur Sicherheit (außer das ist ein wirklich einfachst überschaubares Platinendesign) den Resetpin vorsichtig ablöten und vom Pad abheben und nochmal messen. Kann ja nicht viel dabei passieren.

malthy
28.03.2012, 15:49
...den Resetpin vorsichtig ablöten und vom Pad abheben und nochmal messen. Kann ja nicht viel dabei passieren.

Leider wie erwartet: auch der nackte Pin hat die 320 Ohm nach Masse, also ist da intern was gestorben. Dass das auch immer nur bei den teuren Controllern passieren muss...

Danke nochmal für's Mitdenken!
Malte