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):
Code:
$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:
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
Lesezeichen