Hallo Forum,
ich suche einen Programmer mit Debug-Funktion. Dieser sollte nach
Möglichkeit wenig Kosten und mit dem Atmel-Studio7 kompatibel sein. Der
Grund warum ich debuggen will ist, daß ich mich durch das Buch "AVR
Mikrocontroller - Programmierung in C" von Heimo Gaicher durcharbeite
und in diesem Buch sehr früh auf das Debuggen bzw. das Arbeiten mit
Registern eingegangen wird.
vorhandene Hardware:
-Pololu ISP v2.1 Programmer: (vorschnell gekauft, besitzt neben dem
6-poligen ISP Stecker noch einen 6-Pin-Header dessen Funktion sich mir
noch nicht ganz erschließt. Anschlüsse an diesem Header: GND, A, VCC,
TX, RX und B)
-Lenovo T420: versorgt Breadboard mit Spannung über vorhandenen USB 2.0
(High-Powered-Port) und an einem zweiten USB-Anschluss wird der µC
programmiert
-Breadboard mit ATMEGA8-16PU µC, Spannungsversorgung, ISP 6polig vom
Pololu, 1xLED m. vorwiderstand, erstmal ohne externen Quarz
vorhandene Software:
-Pololu Configuration Utility und Treiber, simuliert m.M.n. ein STK500
im Atmel-Studio
-Win 8.1
-ATMEL-Studio 7.0.1931
Erste Programmierversuche mit oben genannten Mitteln waren erfolgreich
und auch wiederholbar (blinkende LED mit verschieden Frequenzen bzw.
Zeiten für High und Low)
Nun zu meinen Fragen:
1. Gibt es eine Möglichkeit mit dem vorhandenen Programmer zu debuggen?
2. Falls nicht habe ich mir diese beiden alternativen Programmer
ausgesucht:
AVR Dragon
(https://www.reichelt.de/atmel-entwicklungstool-8-bit-und-32-bit-avr-at-avr-dragon-p97200.html,
teuer und groß)
USB AVRISP XPII
(https://www.robotshop.com/de/de/usb-avrisp-xpii-avr-programmierer.html?gclid=EAIaIQobChMIi7m1mted4QIV1pTVCh2TgQfpEAQYASABEgIb-fD_BwE,
recht günstig und mit Gehäuse)
Sind diese beiden Programmer uneingeschänkt Debug-fähig mit dem ATMEL
Studio7?
3. Gibt es eine billigere kleinere Lösung zum Programmieren und
Debuggen?
Als Programmier- und Debug-Software würde ich ausschließlich das
ATMEL-Studio benutzen, da dieses auch im Buch benutzt wird.
Danke im Voraus
Hummel030 schrieb:> ich suche einen Programmer mit Debug-Funktion. Dieser sollte nach> Möglichkeit wenig Kosten und mit dem Atmel-Studio7 kompatibel sein.
Kurz gesagt: du suchst ein rosa Einhorn.
> vorhandene Hardware:> -Pololu ISP v2.1 Programmer: (vorschnell gekauft> -Breadboard mit ATMEGA8-16PU µC
Der ATMega8 läßt sich mangels Debug-Schnittstelle gar nicht debuggen.
Der designierte Nachfolger ATMega88 hätte immerhin eine debugWire
Schnittstelle.
Schlußfolgerung: der Pololu ISP Programmer war nicht das einzige
vorschnell gekaufte Stück Hardware.
> Nun zu meinen Fragen:> 1. Gibt es eine Möglichkeit mit dem vorhandenen Programmer zu debuggen?
Nein.
> 2. Falls nicht habe ich mir diese beiden alternativen Programmer> ausgesucht:> AVR Dragon
Der kostet nicht wenig. Und ist relativ empfindlich.
> USB AVRISP XPII
Das scheint ein Nachbau des AVR ISP Mk2 zu sein. Das kann gar nicht
debuggen. Ist ein reiner ISP-Programmer.
> 3. Gibt es eine billigere kleinere Lösung zum Programmieren und> Debuggen?
Wie gesagt: das ist ein rosa Einhorn.
Die robuste(re) Alternative zum AVR Dragon ist das ATMEL ICE. Als nackte
Platine (kein Gehäuse, keine Kabel) ab €50,-
Vorteil: neben den AVR tiny/mega/xmega kann es auch die Cortex-M vom
Atmel(Microchip) programmieren und debuggen. Deinen mega8 aber natürlich
(aus prinzipiellen Gründen) auch nicht.
> Als Programmier- und Debug-Software würde ich ausschließlich das> ATMEL-Studio benutzen, da dieses auch im Buch benutzt wird.
Tja. Mehr Flexibilität könnte dir eine Menge Geld sparen.
Ich persönlich verzichte bei den AVR auf das in-circuit debugging und
spare damit eine Menge. Für das reine Programmieren reicht ein einfacher
usbasp ISP-Adapter. Für Cortex-M µC ist die Sache dank preisgünstiger
SWD-Adapter und openocd eine andere Geschichte.
Vielleicht solltest du nicht ganz so an diesem Buch kleben.
Axel S. schrieb:>> USB AVRISP XPII>> Das scheint ein Nachbau des AVR ISP Mk2 zu sein. Das kann gar nicht> debuggen. Ist ein reiner ISP-Programmer.
Ist das der Bruder vom LCD-Display? OK, IS-Programmer ist ein eher
negativ belasteter Begriff ;-)
Falk B. schrieb:> Ist das der Bruder vom LCD-Display? OK, IS-Programmer ist ein eher> negativ belasteter Begriff ;-)
ISP steht für InSystemProgramming, nicht für InSystemProgrammer.
Bedeutet, dass man einen Mikrocontroller oder anderen programmierbaren
Baustein auch im eingebauten Zustand über entsprechende Pins
programmieren kann.
Genau wie TPI, PDI oder JTAG.
Deswegen ist ISP-Programmer vollkommen in Ordnung.
Erstmal Danke für die Antworten vor allem die ausführliche von Axel!
Noch kurz zu meiner Person: abgeschlossenes Bachelor Studium
Elektrotechnik (FH). Im Studium bin ich mit dem MSP430 Launchpad +
Assembler (LEDS blinken lassen und die Register auslesen, Quellcode von
C nach Assembler) und einem ATMEGA? + C (LCD 16x2 als Ausgabe + Poti als
Analog-In und ein oder mehrere Digital-Outs als eigenes "Projekt") in
Kontakt gekommen. Allerdings wurde nicht auf das "Drumherum" wie
Programmer, Bus-Systeme, etc. eingegangen und deshalb würde ich mich als
µC-Anfänger betrachten. Die "Toolchains" wurden auch nicht erklärt,
sondern es wurde einem das Entwicklerboard + Programmer + PC vor die
Nase gesetzt man konnte "loslegen".
Axel S. schrieb:> Vielleicht solltest du nicht ganz so an diesem Buch kleben.
Möchte ich ehrlich gesagt auch nicht aber ich suche eine Möglichkeit ein
bisschen an die Hand genommen zu werden um erstmal tiefer in die Materie
einzutauchen. Ich habe natürlich schon in die beiden Tutorials
(https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial und
https://www.mikrocontroller.net/articles/AVR-Tutorial) reingelesen aber
speziell beim AVR-Tutorial wird m.M.n. ausschließlich auf Assembler
gesetzt und ersteres (AVR-GCC-Tutorial) ist auf den ersten Blick! nicht
so umfangreich wie das Assembler Tut.
Hier wäre meine Frage als Anfänger generell: Assembler oder C?
Das Assembler tiefer in die Maschinenebene geht ist mir klar aber
brauche ich das zum Einstieg?
Eine weitere Frage ist, brauche ich beim Einstieg die Möglichkeit zum
Debuggen oder komme ich mit meinem oben genannten Setup erstmal auf eine
"akzeptable" Wissensebene und kann danach weiter sehen?
Ist das Debuggen zum tieferen Vertändnis notwendig?
(Ich hoffe ich mache mit der Frage hier im Forum kein Fass auf ala 3
Leute 10 Meinungen)
Michael K. schrieb:> Hier wäre meine Frage als Anfänger generell: Assembler oder C?
Jehova, Jehova! ;-)
> Das Assembler tiefer in die Maschinenebene geht ist mir klar aber
Ja.
> brauche ich das zum Einstieg?
Nein.
> Eine weitere Frage ist, brauche ich beim Einstieg die Möglichkeit zum> Debuggen
Nicht zwingend.
> oder komme ich mit meinem oben genannten Setup erstmal auf eine> "akzeptable" Wissensebene und kann danach weiter sehen?
Ja.
> Ist das Debuggen zum tieferen Vertändnis notwendig?
Jain. Es hat aber schon viele Vorteile. Man kann sich das alles genauer
und Schritt für Schritt ansehen, Schleifen, Codeabschnitte etc.
Falk B. schrieb:>> Ist das Debuggen zum tieferen Vertändnis notwendig?>> Jain. Es hat aber schon viele Vorteile. Man kann sich das alles genauer> und Schritt für Schritt ansehen, Schleifen, Codeabschnitte etc.
Kann man auch in gewissen Grenzen mit dem Simulator+Debugger (ohne
Hardware) durchspielen. Mir hat das so gereicht. Dann habe ich mir einen
Debugger gekauft aber letztendlich liegt er fast nur herum und sammelt
Staub.
Stefanus F. schrieb:> Michael K. schrieb:>> Hier wäre meine Frage als Anfänger generell: Assembler oder C?>> Macht es hier noch Sinn, diese Frage zu beantworten? Ich halte mich mal> raus und empfehle Dir dazu die Suchfunktion.
Oh, das hätte ich mir allerdings auch selber denken können. Somit fällt
diese Frage weg! Sry!
Michael K. schrieb:> Eine weitere Frage ist, brauche ich beim Einstieg die Möglichkeit zum> Debuggen oder komme ich mit meinem oben genannten Setup erstmal auf eine> "akzeptable" Wissensebene und kann danach weiter sehen?> Ist das Debuggen zum tieferen Vertändnis notwendig?
Meiner Einschätzung nach nicht. Zumal du mit dem Atmel Studio doch einen
Simulator hast, oder (ich hab damit irgendwann zu D-Mark-Zeiten das
letzte mal gearbeitet...)?
Der Simulator kann zwar keine schnelle Hardware, aber so für das
Grundverständnis "wenn ich an diesen Pin einen LOW-Pegel anlege, dann
springt mein Code dorthin, und ändert an der Speicherstelle xyz diese
Werte" hilft der schon.
Und nur weil du gefragt hast: Meiner Einschätzung nach lohnt es sich,
das erste LED-Blink-Programm in Assembler zu schreiben und ab dann mit C
weiterzumachen, aber ab und zu in den vom Compiler generierten
Assembler-Code zu schauen.
MfG, Arno
Also nochmal Danke an alle Diskussionsteilnehmer. Ich werde jetzt bei C
und meinem Programmer bleiben und mich durch die pdfs von Stefanus
durcharbeiten und hoffe damit dann erstmal genug Grundlagen zu haben um
mich dann anderen Bücher oder Tutorials zu widmen.