Forum: Mikrocontroller und Digitale Elektronik USB-Serial Programmierboard für Atmel uC


von Jimbo (Gast)


Lesenswert?

Hi Leute! Vom Arduino bin ziemlich verwöhnt was das Flashen angeht, nur 
ein usb kabel ans Board und PC ran und das wars. Seit einiger Zeit 
beschäftige ich mich mit aber näher mit dem Controller um alles genauer 
zu verstehen, sozusagen under the hood schauen
Ich würde gerne ein universelles Programmierboard für den atmega 168a 
und 328 haben, es soll breadboardtauglich sein, einen usb anschluss 
haben und den avr ü er die serielle schnittstelle programmieren, ich 
will keine Programmierpins aufm Breadboard herausführen müssen. Könnt 
ihr mir nen Fingerzeig auf was geben?

von Einer K. (Gast)


Lesenswert?

Eigentlich:
Der Nano hat genau das, was du willst!

von Jimbo (Gast)


Lesenswert?

Ich habe nichts derartiges finden können.

von Jimbo (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Eigentlich:
> Der Nano hat genau das, was du willst!

Ok stimmt, aber wie programmiere ich den dann ohne die Arduino ide?

von Einer K. (Gast)


Lesenswert?

Du benötigst mindestens die AVR-gcc Toolchain und AVRdude.
Die Arduino IDE ist nicht nötig.

Andererseits, kannst du auch mit der Arduino IDE arbeiten und trotzdem 
auf das gesamte Framework verzichten.
C, C++ und ASM stehen zur Auswahl

von Jimbo (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Andererseits, kannst du auch mit der Arduino IDE arbeiten und trotzdem
> auf das gesamte Framework verzichten

Wie mache ich das? Einfach setup() und loop() weglassen?

von Einer K. (Gast)


Lesenswert?

Jimbo schrieb:
> Wie mache ich das? Einfach setup() und loop() weglassen?

Richtig!

Einfach stattdessen eine main() anlegen.

von Jimbo (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Jimbo schrieb:
>
>> Wie mache ich das? Einfach setup() und loop() weglassen?
>
> Richtig!
> Einfach stattdessen eine main() anlegen.

Habe gelesen, dass dann auch der usb-serial programmer nicht mehr 
nutzbar ist, stimmt das? Es gibt ja dann aber immer noch den ISP Header, 
über den sollte es gehen hoffe ich.

von Wolfgang (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Richtig!
>
> Einfach stattdessen eine main() anlegen.

Hääh?
Bei Arduino gibt es genauso ein main().
setup() und loop() sind dort Funktion, die von main() aufgerufen werden.

von Beden Kenträger (Gast)


Lesenswert?

Jimbo schrieb:
> Einfach setup() und loop() weglassen?

Dem verwöhnten Arduino User wird das erst mal schwer fallen,
denn er wird sich erst mal um eine ganze Menge mehr an Arbeit
kümmern müssen.

Aber wenn die ersten Schritte aus dem Urschleim gelungen sind
ist die Freude gross was man ohne Arduino Framework alles
machen kann.

von Beden Kenträger (Gast)


Lesenswert?

Wolfgang schrieb:
> Bei Arduino gibt es genauso ein main().

Im Arduino Framework wird die jedoch dem User vorenthalten.

von Einer K. (Gast)


Lesenswert?

Jimbo schrieb:
> Habe gelesen, dass dann auch der usb-serial programmer nicht mehr
> nutzbar ist, stimmt das?
Nein!
Der hat damit nichts zu tun.
Dafür benötigst du den Bootloader.
Aber der ist ja auf dem Nano drauf, solange du da nicht mit einem ISP 
Adapter dran gehst.

von Einer K. (Gast)


Lesenswert?

Wolfgang schrieb:
> Hääh?
> Bei Arduino gibt es genauso ein main().
> setup() und loop() sind dort Funktion, die von main() aufgerufen werden.
Wenn keine setup() und loop() existieren, erwartet der Builder, dass der 
Arduino User eine eigene main() erstellt.
Und das tut der Builder, egal ob dir das schmeckt, oder auch nicht.

Allerdings ist das Framework dann kaum noch nutzbar, da die Timer und 
das restliche Gedönse nicht mehr vorbereitet wird.
Aber das ist hier ja auch das Ziel.

von Jimbo (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Nein!
> Der hat damit nichts zu tun.
> Dafür benötigst du den Bootloader.
> Aber der ist ja auf dem Nano drauf, solange du da nicht mit einem ISP
> Adapter dran gehst.

Ich kann den AVR also aus der Arduino IDE heraus ohne das Framework in 
C/C++ programmieren und das auch noch mit der super bequemen USB-Serial 
Schnittstelle, wie genial ist das denn :-)
Demnach könnte ich auch meinen Atmega168a vom UNO stecken lassen und 
dasselbe tun.

von Einer K. (Gast)


Lesenswert?

Jimbo schrieb:
> Demnach könnte ich auch meinen Atmega168a vom UNO stecken lassen und
> dasselbe tun.
Gibt zwar keinen UNO mit Atmega168a, aber ja!
Du kannst in den UNO jeden Pin kompatiblen AVR reinstecken und 
betreiben.
Einen Bootloader benötigst du dann noch, das Problem ist aber lösbar.

Jimbo schrieb:
> wie genial ist das denn :-)
Sach das nicht!
Die Arduino Hasser hier, möchten sowas sicherlich nicht hören.

von Jimbo (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Gibt zwar keinen UNO mit Atmega168a,

Stimmt da steckt der 328er drin.
Auf alle Fälle habe ich meine Antworten und bin höchst zufrieden damit 
:-) Vielen Dank!

von Jimbo (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Die Arduino Hasser hier, möchten sowas sicherlich nicht hören.

Wer den Vorteil hier nicht sieht dem kann man aber auch nicht helfen :-)

von Alexander S. (alesi)


Lesenswert?

Jimbo schrieb:
> aber wie programmiere ich den dann ohne die Arduino ide?

https://www.mikrocontroller.net/articles/Umstieg_von_Arduino_auf_AVR

von Einer K. (Gast)


Lesenswert?

Alexander S. schrieb:
> Jimbo schrieb:
>> aber wie programmiere ich den dann ohne die Arduino ide?
>
> https://www.mikrocontroller.net/articles/Umstieg_von_Arduino_auf_AVR

Habe ich gerade mal überflogen....
Ein paar Unsauberkeiten sind da ja drin.

>  (das Arduino-Framework ist in C++ geschrieben).
Große Teile sind in C geschrieben.
Vieles in C++
Wenige Fragmente in ASM

> Die meisten Arduino-Sketches eher in C geschrieben
In C++!
Alle.

> Allen anderen kann ich nur wärmstens empfehlen, ein C-Buch
Darum auch eher ein C++ Buch.

> Die meisten Arduino-Sketches eher in C geschrieben sind,
Falsch!
> mit Ausnahme der Arduino-Libraries und derer Objekte
Halb richtig.
Die meisten Arduino Libraries sind in C++ geschrieben, ja.
Aber einige auch in reinem C.
Ganz wenige in ASM
Einige bestehen aus einer Mischung von *.h, *.c, *.cpp und *.S Dateien.

> Zuerst einmal: delays sind so gut wie immer schlecht!
Aber danach wird konsequenter Weise _delay_ms(1000); verwendet.


Ansonsten geht der Artikels schon....

von µµµ (Gast)


Lesenswert?

> super bequemen USB-Serial Schnittstelle

Was Dumpfbacken für bequem halten.
Naja, wer nur Kellerfenster und Holzschemel gewöhnt ist.

von Stefan F. (Gast)


Lesenswert?

Jimbo schrieb:
> Ich würde gerne ein universelles Programmierboard für den atmega 168a
> und 328 haben, es soll breadboardtauglich sein, einen usb anschluss
> haben und den avr ü er die serielle schnittstelle programmieren, ich
> will keine Programmierpins aufm Breadboard herausführen müssen.

Das nennt sich USB-UART Adapter. Aber dann musst du vorher den 
Bootloader in den µC laden.

Also kannst du vermutlich auch gleich einen ISP-Adapter verwenden, dann 
brauchst du keinen Bootloader und hast die serielle noch für andere 
Zwecke frei. Wenn du jetzt meinst, dass dir dann aber drei statt zwei 
Pins verloren gehen: Nein, die Pins kann man während des Betriebes (mit 
winzigen Einschränkungen) normal nutzen, denn der ISP Adapter schaltet 
auf hochohmig, solange er nicht benutzt wird. Also gewinnst du damit 
sogar Pins.

Warum Arduino auf USB-UART setzt, ist mir ein Rätsel. Vielleicht wollten 
sie zum Ur-Arduino kompatibel bleiben. Das ist nun aber schon 15 Jahre 
her. Irgendwann sollte man alte gammelige Zöpfe abschneiden.

Im übrigen sind Arduino Boards nach meinem Kenntnisstand die einzigen 
Entwicklungsbaords, die über UART programmiert werden. Alle anderen 
enthalten entweder einen vollwertigen Programmieradapter mit Debugger 
(!) oder einen USB-Bootloader der schon ab Werk im Chip drin ist.

von ein anderer (Gast)


Lesenswert?

Jimbo schrieb:
> sozusagen under the hood schauen

Dieser Wahnsinn ist anscheinend nicht mehr aufzuhalten.

von Stefan F. (Gast)


Lesenswert?

Jimbo schrieb:
> Ich kann den AVR also aus der Arduino IDE heraus ohne das Framework in
> C/C++ programmieren und das auch noch mit der super bequemen USB-Serial
> Schnittstelle, wie genial ist das denn :-)
> Demnach könnte ich auch meinen Atmega168a vom UNO stecken lassen und
> dasselbe tun.

Ja

Und wenn du dich doch mal von der Arduino IDE lösen willst, geht auch 
das ohne Hardwarewechsel. Siehe dazu:
http://stefanfrings.de/avr_hello_world/index.html
http://stefanfrings.de/avr_tools/index.html

von Ralph S. (jjflash)


Lesenswert?

Stefan ⛄ F. schrieb:
> Im übrigen sind Arduino Boards nach meinem Kenntnisstand die einzigen
> Entwicklungsbaords, die über UART programmiert werden. Alle anderen
> enthalten entweder einen vollwertigen Programmieradapter mit Debugger
> (!) oder einen USB-Bootloader der schon ab Werk im Chip drin ist.

Vielleicht deshalb, weil ein ATmega328 nativ keine USB Hardware 
beherbergt, ein Arduino UNO in all seinen Entwicklungsstufen 
(Gehäusebauform) immer ein ATmega328 ist und eine UART-USB Bridge die 
preiswerteste Möglichkeit ist, eine USB-Verbindung herzustellen?

Außerdem: Never touch a running system! Das Flashen eines Arduino UNO 
funktioniert absolut problemlos und bei einer Speicherkapazität von 32k 
sind auch die Flashzeiten absolut gering.

Für den Anfang ist die Hardware eines Arduino-UNO doch super. 
Letztendlich ist es vollkommen egal, wie ein Binary in den Controller 
kommt.

Einzig die Debugmöglichkeit fehlt, aber dafür gibt es externe 
Programmer.

von Stefan F. (Gast)


Lesenswert?

Ausgerechnet beim Arduino UNO ist der USB Adapter ein zweiter (AVR) 
Mikrocontroller. Da hätte man ohne Aufpreis sowohl den USB-UART als auch 
einen ISP Programmer unterbringen können.

In diesem Thread reden wir aber primär vom Arduino Nano, der ist 
tatsächlich etwas billiger aufgebaut.

von µµµ (Gast)


Lesenswert?

> tatsächlich etwas billiger aufgebaut

Noch viel billiger schafft es ein Controller ohne irgendwelches 
Gedöhns.
Seltene Ausnahme sind vom Hersteller gesponsorte FPGAs.

> Never touch a running system!

Dann wären wir heute noch beim Flipflop mit einer ECC962 bzw. einigen 
Tausend davon.

von Einer K. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Da hätte man ohne Aufpreis sowohl den USB-UART als auch
> einen ISP Programmer unterbringen können.

Hat man doch!
Der ATMega16U2 des UNO lässt sich recht problemlos, auch ohne ISP 
Adapter, zu einem ISP Adapter machen.
Der UNO kann also ohne Zusatzhardware seinen Bootloader selber brennen.

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Der ATMega16U2 des UNO lässt sich recht problemlos, auch ohne ISP
> Adapter, zu einem ISP Adapter machen.

Schade, dass Arduino keine solche Firmware enthält.

von Einer K. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Schade, dass Arduino keine solche Firmware enthält.

Schade, dass Arduino keine Flügel hat, dass es nicht schwimmen und nicht 
radieren kann. Es hat auch keine roten Tupfer auf verspiegelter 
Oberfläche.

So gut wie nie, braucht man einen ISP Adapter, in der Arduino Welt.
Außer, man möchte nackte AVR vorbereiten.
Oder eine andere Extrawurst backen.(z.B. die Fuses anfassen)

Und dann gibts genau dafür "Arduino as ISP".
Die ISP Firmware befindet sich also doch im Lieferumfang.
Entgegen deiner Ansage!

Merke:
Arduino stellt Grundfunktionalität zur Verfügung.
Extrawürste bastelt man sich selber, oder lädt die passenden/nötigen 
Boardefinitionen/Libraries von extern dazu.

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Und dann gibts genau dafür "Arduino as ISP".
> Die ISP Firmware befindet sich also doch im Lieferumfang.

Ja schon, aber damit machst du nicht den Atmega16U2 zum ISP Adapter, 
sondern den ATmega328.

von Einer K. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> aber damit machst du nicht
Falsch!
Du kannst das nicht.
Ich schon.... (und viele andere könnten das auch, wenn sie 
wollten/müssten)

Da sind wir wieder bei der Projektion/Fantasie.....

Du hast ein fertiges Bild/Urteil von/über Arduino.
Und das projizierst du auf Arduino, genau so wie ein Diaprojektor es 
tut.
Dann siehst du natürlich das Bild, welches du selber darauf wirfst.
Dummerweise, hat das nur bedingt was mit der Realität zu tun.

Auch wenn es für dich kaum/nicht vorstellbar ist, dass "Arduino as ISP" 
auf einem ATMega16U2 lauffähig ist.
Es ist.
So wie es auch auf allen(?) anderen Mikrokontrollern (mit UART oder USB) 
lauffähig ist, für die es eine Gcc Toolchain gibt.
Wie kommst du nur auf die lustige Fantasie, dass der ATMega16U2 da so 
was besonders ist, dass das nicht geht?

von Stefan F. (Gast)


Lesenswert?

Es ist nicht nötig, mich in diesem Tonfall zu beschimpfen. Habe ich dir 
etwas böses angetan? Das war jedenfalls nicht beabsichtigt.

Ich habe durchaus Interesse, mir eine entsprechende Anleitung 
anzuschauen. Kennst du eine?

Was mit diesem "Arduino as ISP" Sketch dann aber wiederum fehlt ist die 
USB-UART Funktion. Es ging doch gerade darum, diesen einen Chip für 
beide Funktionen (ISP und UART) zu nutzen. Das das irgendwie technisch 
möglich ist, muss mir niemand erklären. Das weiß ich, deswegen habe ich 
es ja auch oben als Wunsch geäußert. Ich finde nur schade, dass das so 
nicht bereits im Lieferumfang bzw. mit ein paar Klicks in der IDE 
enthalten ist.

von Einer K. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich finde nur schade, dass das so
> nicht bereits im Lieferumfang bzw. mit ein paar Klicks in der IDE
> enthalten ist.

Dazu sagte ich schon:
> Arduino stellt Grundfunktionalität zur Verfügung.
> Extrawürste bastelt man sich selber, oder lädt die passenden/nötigen
> Boardefinitionen/Libraries von extern dazu.

Leider kann es nicht alle Wünsche, dieser Welt, "Out of the Box" 
befriedigen.
Es ist ein Bastelapparat und bleibt ein Apparat zum basteln.


Stefan ⛄ F. schrieb:
> Ich habe durchaus Interesse, mir eine entsprechende Anleitung
> anzuschauen. Kennst du eine?
Hier rate ich dir zu "Nico Hood" bzw zum "Hoodloader".
Der hat sich ausgiebig mit dem ATMega16U2 (und anderen) beschäftigt.

von Axel S. (a-za-z0-9)


Lesenswert?

Jimbo schrieb:
> Vom Arduino bin ziemlich verwöhnt was das Flashen angeht, nur
> ein usb kabel ans Board und PC ran und das wars.
...
> Ich würde gerne ein universelles Programmierboard für den atmega 168a
> und 328 haben, es soll breadboardtauglich sein, einen usb anschluss
> haben und den avr ü er die serielle schnittstelle programmieren

Wozu? Ab Werk können die ATMega168 und 328 nur mit ISP programmiert 
werden. Durch die Festlegung auf die serielle Schnittstelle geht es nur 
mit einem Bootloader. Den mußt du aber per ISP aufspielen. Du brauchst 
also ISP und USB-serial Converter. Da kannst du auch gleich bei 
Arduino bleiben.

> will keine Programmierpins aufm Breadboard herausführen müssen

Warum? Ich nutze einen Adapter um die 2x5 Stiftleiste auf die Breite 
eines IC zu bringen und stecke den ins Breadboard. Dann verkabele ich 
ihn mit Steckbrücken mit dem µC. Danach kann ich einfach irgendeinen 
ISP-Adapter drauf stecken. Meist den usbasp, der kann den Krempel auch 
gleich versorgen.

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Hier rate ich dir zu "Nico Hood" bzw zum "Hoodloader".

Das ist offenbar auch kein kombinierter ISP+UART Adapter. Aber lass gut 
sein, das Thema ist nicht so wichtig. Wenn ich das brauche kann ich 
STM32 Nucleo Boards verwenden, die haben das gewünschte ab Werk drauf.

von Einer K. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Das ist offenbar auch kein kombinierter ISP+UART Adapter.
Alles klar....
Er macht den 16U2 zu einem vollwertigen nutzbaren USB zu ISP Adapter.
Aber es ist kein "ISP+UART Adapter"?

Man macht den 16U2 zu dem, was man gerade braucht!
Soll er USB Serial Adapter spielen, dann gut, dann die originale 
Firmware drauf.
(ist im Lieferumfang)
Soll er ISP spielen, dann eben "Arduino as ISP"

Bei einem Auto kannst du doch auch nicht aus 2 Türen gleichzeitig 
aussteigen.
Oder?





Stefan ⛄ F. schrieb:
> Aber lass gut sein, das Thema ist nicht so wichtig.
Vielleicht nicht.
Aber vielleicht poppt es hier wieder auf, und dann wäre es doch gut, 
wenn deine Aussagen etwas realitätsnäher wären.
Oder?

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Bei einem Auto kannst du doch auch nicht aus 2 Türen gleichzeitig
> aussteigen. Oder?

Mein Auto hat auf beiden Seiten Türen, damit ich es nicht jedes mal 
umbauen lassen muss, wenn jemand auf der anderen Seite aussteigen 
möchte.

> Aber vielleicht poppt es hier wieder auf, und dann wäre es doch gut,
> wenn deine Aussagen etwas realitätsnäher wären.

Das ist absolut realitätsnah, sonst würde ST nicht alle 
Entwicklungsboards mit so einem Kombi-Adapter (namens ST-Link) 
ausstatten.

Ich glaube dir, dass du damit nichts anfangen kannst. Dann glaube du mir 
bitte auch, dass ich es aber gebrauchen kann. Man ist nicht automatisch 
blöde, bloß weil man andere Bedürfnisse hat als du.

von Einer K. (Gast)


Lesenswert?

Das Thema war AVR und Arduino, nicht irgendwelche STM32 Entwicklerboards 
vom Hersteller selber.

Ach, dein ST Geblubber ist doch nur eine Nebelkerze, die verdecken soll, 
dass ich dich wieder mal bei lustig falschen Argumenten erwischt habe.

Stimmt es, oder habe ich recht?

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> dass ich dich wieder mal bei lustig falschen Argumenten erwischt habe.

Jaja, du hast mich "erwischt". Glaube das mal ruhig, wenn du dich dann 
besser fühlst. tssssss

von Einer K. (Gast)


Lesenswert?

Deine Arbeitskollegen tun mir leid.
Mit denen gehst du doch auch so um, oder?

Stefan ⛄ F. schrieb:
> Arduino Fanboy D. schrieb:
>> Hier rate ich dir zu "Nico Hood" bzw zum "Hoodloader".
>
> Das ist offenbar auch kein kombinierter ISP+UART Adapter.

Drei Minuten hast du gebraucht, um das bei Google ein zu tippen, alles 
zu lesen, ein veritables Vorurteil aus zu bilden und sofort ins Forum zu 
blasen.
Das ist eine Leistung, die ihres gleichen sucht.
Quasi: Eine Glanzleistung.

von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> Drei Minuten hast du gebraucht

Na und?

Willst du mir damit sagen, dass ich mich irre und dieses Projekt 
tatsächlich  Firmware für einen kombinierten ISP+UART Adapter enthält? 
Zeige mal, wo das steht!

von Alexander S. (alesi)


Lesenswert?

Arduino Fanboy D. schrieb:
>> https://www.mikrocontroller.net/articles/Umstieg_von_Arduino_auf_AVR
>
> Habe ich gerade mal überflogen....
> Ein paar Unsauberkeiten sind da ja drin.

Hallo Fanboy,
das ist ein Wiki-Artikel, der von jedem (angemeldeten) Nutzer editiert, 
erweitert oder verbessert werden kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.