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?
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
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?
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.
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.
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.
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.
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.
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.
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.
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!
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 :-)
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....
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.
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.htmlhttp://stefanfrings.de/avr_tools/index.html
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.
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.
> 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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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?
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.
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?
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
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.
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!