Ich wollte für ein Bastelprojekt für Einsteiger einen Atmega 8
verwenden, unter anderem auch weil noch einige Muster im
anfängerfreundlichem DIL-Gehäuse verfügbar sind. Austattung des uC
spielt keine Rolle, es sollen nur ein Taster und LEDs dran.
Ich selbst habe noch einen JTAG ICE mk2 Debugger, den ich mal via debug
wire benutzte, uC war ein ATXmega.
Meine Frage: wie debuggt mal sinnvoll in einem Atmega8? JTAG und DW kann
der nicht, hilft mir da der MK2?
Es wäre für Anfänger schön, wenn man Einzelschritt oder Breakpoints
realisieren könnte.
Muss ich zum Atmega88 wechseln, gibts den in DIL?
Die Antwort lautet: gar nicht.
Der pinkompatible Mega88 hat wenigstens dW. Aber das ist ein Krampf.
Nimm einen Mega324p oder 644p im DIL40, dann hast Du JTAG, und dann
machts auch Spaß.
fchk
Ok, habe verstanden dass ich mit dem MK2 besser wechsele.
Und wie verwendet man den Mega8?
Ein ICE wäre übertrieben, kann man da nur blind den Code einspielen und
hoffen dass man nichts übersehen hat?
Holler schrieb:> kann man da nur blind den Code einspielen und> hoffen dass man nichts übersehen hat?
Klar, einen Debugger braucht man eh nur in Ausnahmefällen. Es hat auch
viele Projekte gegeben, bei denen ich ihn auch nicht mal vermisst hätte.
Holler schrieb:> Ok, habe verstanden dass ich mit dem MK2 besser wechsele.>> Und wie verwendet man den Mega8?> Ein ICE wäre übertrieben, kann man da nur blind den Code einspielen und> hoffen dass man nichts übersehen hat?
Solange sich dein Code nur um Taster und LED dreht, kann man das alles
wunderbar auch im Simulator debuggen. Dazu muss man nicht auf den
konkreten µc gehen. Im Simulator gibt es simulierte Ports. Wenn du einen
Taster drücken willst, dann klickst du auf den simulierten Portpin und
lässt dein Programm weiterlaufen (single step). Wenn eine Ausgabe an
einen Port kommt, dann siehst du in der simulierten Portansicht wie
dieses Bit von 0 auf 1 oder umgekehrt wechselt.
Allerdings: Taster und Led sind jetzt sooo kompliziert auch wieder
nicht, als das man das Programm nicht einfach auf den Mega laden und
ausprobieren könnte. Man schreibt ja ein Programm sowieso nicht in einem
Rutsch runter sondern beginnt erst mal ganz einfach und erweitert dann
laufend den Code bis man beim Ziel angekommen ist. Das funktioniert
eigentlich ziemlich gut und ist in der Praxis ein viel kleineres Problem
als du jetzt denkst.
Ok, mit dem ATMega wäre es für einen Anfänger wenig transparent was da
passiert.
Nochmal ne Frage an Frank k.: warum ist dW ein Krampf?
Wie gesagt, ich nutzte es vor 2 Jahren in einem ATXmega, allerdings
blieb der uC selten am Breakpoint stehen, meist rannte der noch etliche
Befehle weiter. Meinst du das?
Holler schrieb:> Ok, mit dem ATMega wäre es für einen Anfänger wenig transparent was da> passiert.>> Nochmal ne Frage an Frank k.: warum ist dW ein Krampf?>> Wie gesagt, ich nutzte es vor 2 Jahren in einem ATXmega, allerdings> blieb der uC selten am Breakpoint stehen, meist rannte der noch etliche> Befehle weiter. Meinst du das?
dW ist nur zum debuggen. Normalerweise hast Du ja einen Zyklus
Compilieren, Flashen + Debuggen, Bug im Editor ändern, Compilieren...
Flashen und Debuggen ist normalerweise ein Arbeitsschritt. Bei dW musst
Du aber per ISP Dein Binary flashen, dW anschalten, debuggen, dW
ausschalten, neues Binary flashen,... Das macht das ganze ziemlich
nervig.
Die XMegas nutzen PDI, das ist wieder was anderes.
Da lobe ich mir doch die PICs. Da kannst Du alle Modelle (es gibt ca
1000) von den kleinen 8 Bittern bis hin zu den 200 MHz 32 Bit PICs mit
dem gleichen Interface (ICSP) programmieren und bis auch ganz wenige
Ausnahmen auch debuggen. Und für die Ausnahmen gibts Debug Header, damit
das dort auch geht.
fchk
Frank K. schrieb:> Bei dW musst> Du aber per ISP Dein Binary flashen, dW anschalten, debuggen, dW> ausschalten, neues Binary flashen,... Das macht das ganze ziemlich> nervig.
Das kann ich nicht bestätigen. Mit dem dw kann man genau so gut flashen.
Hi
> Bei dW musst>Du aber per ISP Dein Binary flashen, dW anschalten, debuggen, dW>ausschalten, neues Binary flashen,... Das macht das ganze ziemlich>nervig.
Das ist falsch.
MfG Spess