Forum: Mikrocontroller und Digitale Elektronik Atmega328pb Klon mit Atmel Studio 7 verbinden?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mans A. (mansmaak)


Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Community,

ich habe ein Arduino UNO R3 Board, welches in meinem Starter Kit mit 
enthalten war!
Eins will ich vorwegnehmen - ich bin ein absoluter Anfänger!
Ich möchte nun mit der Software Atmel Studio 7 meinen uC programmieren!
Ist es auch mit einem Klon möglich?
Ich habe irgendwo gelesen, dass es nur mit Boards geht, die über eine 
DIP-Funktion verfügen? Was ist das?
Und noch einige Begriffe die ihr mir bitte erklären müsst:)
Debugging
Programmer
Bootloader

Ihr müsst ja nicht alles beantworten!
Ich bin über jede Hilfe dankbar!

: Bearbeitet durch User
von Veit D. (devil-elec)


Bewertung
1 lesenswert
nicht lesenswert
Hallo,

auf einem Arduino Uno R3 Board sitzt ein Atmega328P, nicht Atmega328PB.

Diese Boards sind über die gewohnte USB Schnittstelle nur mit der 
Erweiterung von 'visualmicro' in Atmel Studio 7 nutzbar. Welche nach dem 
Testzeitraum Geld kostet.

Wer schon zu AS7 greift, sollte einen ISP Programmer nehmen und den µC 
dann eben direkt per ISP flashen. Der Bootloader ist dann erstmal weg. 
Kann aber wieder geflasht werden. Den Bootloader benötigt aber nur wenn 
man über USB flashen möchte.

Ob der µC in DIP oder SMD Bauform vorliegt ist vollkommen egal. Das 
Arduinoboard besitzt trotzdem eine ISP Schnittstelle.

Hardware Debugging ist je nach Programmer möglich oder auch nicht. Beim 
Programmer kann ich dir keine Empfehlung geben, außer wenn Geld keine 
Rolle spielt, einen Atmel ICE, damit kannste alles machen.

Debugging:
Dient zur Fehlersuche im Programm/Code.
In welcher Form man das macht sagt der Name noch nicht aus.

Programmer:
Stück Hardware zur programmieren > flashen des µC. Der kompilierte Code 
wird übertragen.

Bootloader:
Ein Stück Miniprogramm was verschiedene Aufgaben erfüllen kann. Meistens 
zum flashen verwendet um nicht über ISP zu gehen. Bsp. Arduino(IDE) 
einfach über den vorhandenen USB>Serial-Wandler und schwups ist das 
Programm auf dem µC, ohne zusätzlichen Programmer.

: Bearbeitet durch User
von der nixwois (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Mans A. schrieb:

> Programmer
Der AVR-Dragon ist ein günstiger Programmer!
Damit lassen sich Programme auf den MC übertragen.
Ebenso kann man damit Debugging machen oder HV- Programmierung
wenn man seine Fuses falsch eigenstellt hat.
Hatt ne ISP und JTAG -Schnittstelle.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
der nixwois schrieb:
> Der AVR-Dragon ist ein günstiger Programmer!

Ja, und sau empfindlich. Ich würde das Ding keinem Anfänger empfehlen.

von Stefan ⛄ F. (stefanus)


Bewertung
2 lesenswert
nicht lesenswert
Wenn du auf das Debugging verzichten kannst, genügt ein nicht originaler 
Programmieradapter, sofern er denn STK500 kompatibel ist.

Wenn du Debuggen willst, musst du mehr Geld ausgeben. Meine Meinung 
dazu: Darauf kann man gut verzichten.

Ich habe einen Debugger, trotzdem benutze ich ihn nur selten. Denn viele 
meiner Anwendungen kann ich nicht einfach anhalten, ohne dass sie völlig 
durcheinander geraten oder gar ihre Mechanik zerstören.

Stell Dir mal einen Tintendrucker im laufenden Betrieb vor. Wie willst 
du da das Programm zum Debuggen anhalten?

Ich untersuche Probleme primär mit Hilfe von Debug-Meldungen die ich 
seriell ausgebe und mit lese (oder später auswerte).

: Bearbeitet durch User
von Energieverheizer (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Denn viele meiner Anwendungen kann ich nicht
> einfach anhalten, ohne dass sie völlig durcheinander geraten oder gar
> ihre Mechanik zerstören.

Das ist dann aber ganz schlecht designt.

von Stefan ⛄ F. (stefanus)


Bewertung
2 lesenswert
nicht lesenswert
Energieverheizer schrieb:
> Das ist dann aber ganz schlecht designt.

Ich wusste, dass diese Argument kommen wird. Ist ja nicht das erste mal.

Dann halte mal einen Tintendrucker mitten in Aktion an. Oder einen PDI 
Fahrtenregler. Oder eine Anlage, die flüssige Produkte mischt und 
abfüllt.

Wenn du da das Programm im falschen Moment stoppst, kannst du es nicht 
mehr sinnvoll funktionierend fortsetzen. Und der Moment ist dort fast 
immer der falsche.

Es gibt viele zeitkritische Dinge.

Lassen wir unsere Kommentare mal stehen und einwirken. Der TO muss 
selbst über seine Fälle nachdenken. Debugger sind ein tolles Werkzeug, 
aber kein Allheilmittel.

: Bearbeitet durch User
von Mans A. (mansmaak)


Bewertung
-3 lesenswert
nicht lesenswert
Vielen Dank! Sehr einfach und verständlich erklärt!


Mein Prof benutzt bzw. empfiehlt das Easy Module Shield.
Aber habe ich das richtig verstanden. Man hat diesen Programmer nur 
deshalb, um verschiedene Sachen damit zu machen. Also RGB ansteuern usw.
Dafür habe ich doch mein Steckbrett? Da kann ich auch eine RGB 
ansteuern, LEDs zum leuchten bringen. Was ist der Unterschied?

Am Anfang habe ich mit der Arduino-Software programmiert (siehe Anhang),
was ist der Unterschied zwischen dieser Software und Atmel Studio 7 bzw. 
MBLABX?


Viele benutzen die Befehle pinMode(), digitalWrite(),...
Damit komme ich in meinem Studium nicht weit, da wird mit 
Bitmanipulation gearbeitet etc.

von Veit D. (devil-elec)


Bewertung
0 lesenswert
nicht lesenswert
Nein, nein, nein ...

Wir haben es vielleicht verständlich erklärt, irgendwie kam es dennoch 
nicht an, so sagt mir mein Gefühl.

Shields sind Aufsteckboards damit man nicht löten oder verkabeln muss.

Programmer sind keine Shields. Das sind Übersetzer in Hardware die 
zwischen deiner Programmierumgebung (IDE) und dem µC fungieren. Der 
kompilierte Code
wird vom Rechner zum µC übertragen und in den µC geschrieben.

Die Arduino IDE ist im Grunde ein aufgebohrter Texteditor. Einfach aber 
effizient. Ich nutze den sehr gerne. Man wird von keinem Firlefanz 
abgelenkt.

Atmel Studio und Co sind ausgewachsene Editoren mit erweiterten 
Funktionsumfang. Richtig fette IDE's. Nutze ich auch wenn ich diese 
Funktionalität benötige. Zum Bsp. kann man sehr schnell zu 
Implentierungen springen oder im µC Headerfile nachschauen usw.

pinMode, digitalWrite sind keine Befehle. Vergiss das bitte. Das sind 
Funktion- bzw. Methodennamen um das programmieren einfacher zu machen. 
Ich verstehe nicht warum man damit nicht weiter kommt. Das könnte 
genauso gut von dir programmiert sein um nicht jedesmal mit Bits 
handieren zu müssen. Das machen aber wohl eher C++ Programmierer.  :-)

Aber wenn du das nicht magst, dann musst du das nicht verwenden. Kein 
Problem. Dann nimmst du das Arduinoboard nur als günstiges 
Programmierboard, vergisst das Arduino draufgedruckt ist und 
programmierst alles zu Fuss. Je nach Vorlieben oder Notwendigkeit.

Am besten du fängst einfach an. Die Arduino IDE bringt viele Beispiele 
mit. Und auch hier im Artikel Wiki gibts gute Anleitungen wie man mit 
Bits und Bytes in den AVR Registern rumwerkelt. Für jeden ist was dabei. 
Und man kann es auch kombinieren. Je nach Vorlieben oder Notwendigkeit.

Arduino Referenz.
https://www.arduino.cc/reference/en/
Vieles wirst du dir früher oder später in ähnlicher Form 
nachprogrammieren wenn du keine Arduino IDE zur Verfügung hast. In 
ausgewachsener Form nennt man das dann "Libs".

Grundlagen.
https://www.mikrocontroller.net/articles/Kategorie:AVR-GCC-Tutorial

Ob man das hier zwingend muss steht auf einem anderen Blatt.
https://www.mikrocontroller.net/articles/Umstieg_von_Arduino_auf_AVR

Entscheiden musst du selbst. Wichtig ist das du Shields und Programmer 
nicht durcheinander würfelst. Hat nichts miteinander zu tun.

Luft holen, verstehen, machen. In diesem Sinne.  :-)

: Bearbeitet durch User
von René F. (therfd)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> der nixwois schrieb:
>> Der AVR-Dragon ist ein günstiger Programmer!
>
> Ja, und sau empfindlich. Ich würde das Ding keinem Anfänger empfehlen.

Und abgekündigt ist das Teil aus gutem Grund auch schon längere Zeit.

Ich verstehe sowieso die Notwendigkeit eines Programmers hier nicht, er 
hat nen Arduino mit Bootloader und avrdude lässt sich als externes Tool 
auch im Atmel Studio einbinden.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Mans A. schrieb:
> Aber habe ich das richtig verstanden. Man hat diesen Programmer nur
> deshalb, um verschiedene Sachen damit zu machen.

Hmm, was soll man dazu sagen?

Ich habe auch Messer und Gabeln, um damit verschiedene Dinge zu machen.

Auf dem Easy Module Shield befinden sich ein paar Bauteile, mit denen 
man erste Programmierversuche anstellen kann ohne sich großartig mit 
Steckbrett, Kabeln und Bauteilen befassen zu müssen. Für die ersten 
Schritte ist das keine schlechte Idee, denn wenn du sowohl Hardware als 
auch Software gleichzeitig selber aufbaust und es funktioniert nicht, 
wird die Fehlersuche wesentlich schwerer.

Aber klar, du kannst deine Peripherie auch auf einem Steckbrett zusammen 
stöpseln. Wenn man klein und einfach anfängt, spricht nichts dagegen. 
Außerdem gibt es ja auch viele vorgefertigte Module, die man auf dem 
Steckbrett verwenden kann.

Für ein paar einzelne LEDs spielt die Frage "Modul oder nicht" ohnehin 
keine Rolle.

> Am Anfang habe ich mit der Arduino-Software programmiert
> (siehe Anhang), was ist der Unterschied zwischen dieser
> Software und Atmel Studio 7 bzw. MBLABX?

Die Arduino IDE wird mit dem Arduino Framework verwendet. Das ist ein 
Baukasten mit (überwiegend) sehr einfachen anzuwendenden 
Software-Modulen. Wenn du mit Arduino programmierst, arbeitest du primär 
mit der Dokumentation von Arduino.

> Viele benutzen die Befehle pinMode(), digitalWrite(),...
> Damit komme ich in meinem Studium nicht weit, da wird mit
> Bitmanipulation gearbeitet etc.

Dann möchtest du auf die Nutzung des Arduino Frameworks verzichten. Im 
Prinzip hindert dich die Arduino IDE nicht daran, direkt auf Register 
zuzugreifen und einzelne Bits zu manipulieren. Du musst nur wissen, dass 
Arduino einen Timer für sich beansprucht.

Was ich in der Arduino IDE am meisten vermisse ist die automatische 
Eingabeergänzung und die Möglichkeit, mit Strg-Mausklick zwischen 
Dateien hin und her zu springen. Also wenn du z.B. den Quelltext von 
digitalWrite() sehen willst, würdest du mit Strg-Klick auf diesen Namen 
zu dessen Quelltext springen. Und wenn du "digi" eintippst, listet die 
IDE alle Funktionen auf, deren Namen damit beginnt. Außerdem zeigt die 
IDE Fehler schon während der Eingabe an, nicht erst beim compilieren. In 
"richtigen" Entwicklungsumgebungen sind das seit den 90er Jahren völlig 
selbstverständliche Funktionen.

Ich benutze das Arduino Framework ausschließlich für Projekte mit dem 
ESP8266. Als Editor benutze ich aber eine "richtige" IDE.

Atmel Studio und MPLABX sind ausgewachsene Entwicklungsumgebungen. Ob du 
sie mit oder ohne Framework verwendest, bleibt dir überlassen. Die 
meisten Entwickler scheinen es ohne Framework zu benutzen. Wenn du ohne 
Framework programmierst, arbeitest du primär mit der Dokumentation vom 
Chip-Hersteller. Bis also näher an der Hardware. Anstatt Funktionen 
aufzurufen, schriebst du bestimmte Zahlen in Register, so dass der 
Mikrocontroller tut, was er soll.

Ein großer Unterschied ist, dass du mit der Arduiono IDE nicht debuggen 
kannst, mit den anderen aber schon - sofern du einen entsprechenden 
Adapter (Atmel ICE) hast. Debuggen bedeutet, du kannst das Programm zu 
beliebigen Zeitpunkten pausieren und die den Inhalt des Speichers und 
den Zustand der Register angucken. Du kannst das Programm auch Zeile für 
Zeile ausführen und dabei beobachten, wie sich der Inhalt von Variablen 
verändert.

Wenn du es mit dem Atmel Studio oder MPLABX einfach haben willst, dann 
besorge dir einen Programmieradapter, der STK500 kompatibel ist. Damit 
kann man nicht Debuggen. Wenn du Geld hast, dann lieber einen "Atmel 
ICE", denn damit kannst du auch debuggen.

Den Arduino Bootloader kann man (wie René schrieb) auch benutzen, indem 
man Fremdsoftware (nämlich avrdude oder eine GUI dazu) in das Atmel 
Studio einbindet. Avrdude überträgt das compilierte Programm über USB 
zum Bootloader, der sich im Mikrocontroller befindet. Und dieser 
"brennt" es in den Flash Speicher ein. Ist ein bisschen umständlicher, 
aber daran gewöhnt man sich schnell. Genau genommen muss das fremde 
Programm nicht einmal "einbinden", man kann es auch parallel zur IDE 
starten und benutzen.

: Bearbeitet durch User
von Ingo E. (ogni42)


Bewertung
0 lesenswert
nicht lesenswert
Mans A. schrieb:
> Vielen Dank! Sehr einfach und verständlich erklärt!
>
>
> Mein Prof benutzt bzw. empfiehlt das Easy Module Shield.

Welche Uni/HAW.

Da sollte alles in Deinen Praktikumsunterlagen beschrieben sein.

von Mans A. (mansmaak)


Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten 🙏🙏

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.