Hallo,
da ich nun schon seit einiger Zeit Microchip-Mikrocontroller
programmiere, wollte ich auch einmal diese teilweise hochgelobte Objekt
ATMEl von Arduino probieren - nun stellt sich mir aber gleich am Anfang
eine entscheidende Frage: was benötige ich? Ja ich habe hier
(http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment) schon
gelesen, was ich theoretisch benötigte, werde daraus aber nicht
besonders schlau?
Bei Microchip sieht die Sache ja so aus:
1. Programmer/Debugger PICKit X
2. Demoboard PICDEM XXX
3. Mikrocontroller
Einstecken, anstecken, programmieren, rausholen, in eigene Schaltung
integrieren.
Wie sieht das bei Arduino aus? Benötige ich einfach das UNO R3 Rev3
Development Board? Oder auch einen Programmer, wie diesen hier:
https://www.fasttech.com/products/1023000?
Mit welcher Kombination kann ich den µC programmieren, auf dem Board
testen und anschließend ausbauen und in meine Schaltung integrieren?
Wäre über Antworten sehr dankbar!
LG
Andreas
Du benötigst:
- ein Arduino-Board (oder ein kompatibles)
- die Arduino Entwicklungsumgebung
- einen PC mit Java
Und der µC bleibt normalerweise auf seinem Board. Muss nicht, aber so
ist es gedacht.
Dominik S. schrieb:> Oh man... was ist bloß mit der Welt passiert? o.O
"Jo mei, so san's hoid, de junga Leid", wie der Bajuware zu sagen
pflegt. ;-)
@ Konrad: danke für die Antwort! Genau das möchte ich aber eigentlich
nicht, da ich mir ein Board selber bauen werde und nicht auf die
Dimensionierung des Herstellers angewiesen sein möchte bzw. nicht alle
Pins verwenden werde z.B. Bei Microchip funktioniert das wunderbar muss
ich sagen!
Wofür gibt es dann Dev. Boards und explizit ausgewiesene
Programmer/Debugger, wenn ich nur die 3 von dir angesprochenen Sachen
benötige? Heißt das z.B. dass ich nur dieses Board benötige:
https://www.fasttech.com/products/1001700
auf dieses Teil verzichten kann:
https://www.fasttech.com/products/1023000
Dann meinen µC programmiere, abstecke und dann in meiner Schaltung ganz
normal verwenden kann?
@ Wolfgang: Danke für den Link! Ich war zwar auf der Seite, aber nur im
hardware-Bereich.
Sieht für mich aus, als fehlt dir eine Information:
Arduino ist ein Projekt, die µC-Programmierung einfacher zu machen, mit
all seinen Vor- und Nachteilen. Du lässt dich auf die vordefinierte
Hardware ein, dafür bekommst du eine Entwicklungsumgebung mit einfacher
Programmiermöglichkeit, seriellem Bootloader auf den Mikrocontrollern
etc.
Du kannst natürlich genauso einen nackten Atmel nehmen, da per ISP
(dafür der Programmer oben) deine Software reinschieben, die du
traditionell mit dem Texteditor geschrieben und per Makefile kompiliert
hast. Das hat dann mit Arduino aber nichts zu tun, auch wenn der
Mikrocontroller dahinter evtl. das gleiche Produkt ist.
hm ok danke nochmal für die Infos - ich habe nur so viele Vor-und
Nachteile Beiträge bezgl. Microchip und ATMEL gelesen, dass ich mir
gedacht habe, es sei vielleicht gut zu wissen, wie der andere µC
funktioniert. Aber komplett von der Hardware abhängig zu sein, ist ein
zu großer Preis, den ich nicht zahlen will.
Im Grunde genommen müsste ich mir einfach das UNO Board kaufen und
folgende Schaltung nachbilden:
http://arduino.cc/en/Tutorial/ArduinoISP
soweit ich das verstanden habe?
Oder du schreibst einfach direkt Code für den Atmel, und lässt das ganze
Arduino-Framework weg. Tut auch wunderbar, genau so wurde es von vielen
Leuten all die Jahre gemacht.
Andreas schrieb:> Aber komplett von der Hardware abhängig zu sein, ist ein> zu großer Preis, den ich nicht zahlen will.
Bist Du nicht.
Eigentlich ist alles wie bei Microchip. Es gibt die Hersteller IDE:
MPLAB IDE -> Atmel Studio. Es gibt die verschiedenen Klassen von
Mikrocontrollern: PIC12, PIC16 .. PIC32 -> ATtiny, AT(x)mega .. AT32.
Es gibt die Programmierer der Hersteller: ICD3, Pickit -> AVROne!,
Dragon und die verschiedensten Clones davon.
Die Eval Boards der Hersteller: PicDemo -> STKxxx, sowie die der
Fremdanbieter.
Und dann kommt Arduino. Arduino ist nur eine Abstraktionsebene für die
Programmierung von Mikrocontrollern und setzt eben auf den Arduino
Boards auf. Die meisten Bisherigen setzen dabei auf die Atmel AVR
Controller. Das Due aber auf einen Atmel ARM.
Die Arduino Hard- und Software ist aber Open Source und wurde unter
Anderem auch für PIC32 portiert. http://chipkit.net/> Im Grunde genommen müsste ich mir einfach das UNO Board kaufen und> folgende Schaltung nachbilden:> http://arduino.cc/en/Tutorial/ArduinoISP
Da alle Schaltbilder offen liegen, kannst Du Dir auch ein Board
nachbilden ohne eines zu kaufen. Das habe ich genau so gemacht, sowohl
mit einem ATmega32U2 und als auch mit einem PIC32MX795F512L.
Und Du kannst auch einen Schritt weiter gehen und Dein vorhandenes Board
so in die Konfiguration der Arduino IDE eintragen, daß Du mit den
Standard-API's darauf zugreifen kannst. Das habe ich mit einer
Eigenentwicklung auf Basis eines ATxmega128A1U gemacht.
Andreas schrieb:> diese teilweise hochgelobte Objekt ATMEl von Arduino probieren
Ach, von wem wird das hochgelobt? om Hersteller der Platinen?
Gruss
Harald
Hallo Andreas,
eine weitere Möglichkeit ist ein aTeVaL (Atmel Evaluationsboard) ein zu
setzen [1,], [2].
Ein Atmel AVR-ISP MkII Programmer ist gleich mit drauf.
Du hättest dann die Möglichkeit verschiedene µC von Atmel [3] zu nutzen.
*Z.B.*
# 8 Pin: attiny13, attiny25, 45 und 85
# 20 Pin: attiny2313, attiny4313
# 28 Pin: atmega8, atmega48, atmega88, atmega168 und atmega328
# 40 Pin: atmega16, atmega32, atmega64, atmega324, atmega644 und
atmega1284
Als Programmiersprache gibt es neben C als avr gcc mit dem Atmel Studio
als IDE noch LunaAVR [4] als Entwicklungsumgebung.
_Link_:
[1] Shop
http://www.ehajo.de/Neuheiten/aTeVaL?source=2&refertype=1&referid=15
[2] Handbuch http://www.ehajo.de/data/datenblatt_0000027_1.pdf
[3] Atmel µC http://www.ehajo.de/Bauelemente/Aktiv/Mikrocontroller
[4] LunaAVR http://avr.myluna.de/doku.php
Andreas schrieb:> da ich nun schon seit einiger Zeit Microchip-Mikrocontroller> programmiere
Dann bleib dabei. Alles, was du mit einem AVR machen kannst, kannst du
auch mit einem PIC machen. Wenn du schon die passenden Tools für PIC
hast und dich in die Entwicklung eingearbeitet hast, gibt es keinen
Grund das System zu wechseln. Schon gar nicht zu Arduino.
mfg.
@ Moritz: Wie genau meinst du das? Wie kann ich den Code direkt auf den
µC übertragen bzw. in welcher Sprache? Denn die PICs habe ich z.B. in
Assembler oder C geschrieben.
@ Till: Danke für die ganzen Infos, aber das AVR One kostet zirka 600€
und das Dragon schaut nicht so aus, als ob ich jeden möglichen
Controller anschließen und programmieren könnte, oder sehe ich das
falsch?
Könntest Du mir vielleicht deine Entwicklung zukommen lassen? Bzw. eine,
die mir das zur Verfügung stellt, was ich möchte? Nämlich ein einfaches,
wie oben beschriebenes System: µC anstecken, Board an PC, mittels
Software (?) programmieren, debuggen, abstecken, µC rausnehmen und
verwenden.
@ Harald: Es gibt einige Leute im Internet, die darauf schwören - was
ich nicht nachvollziehen kann, da scheinbar sowohl die PICs als auch die
ATms ihre Vor- und Nachteile besitzen ...
@ Uwe: dein erster Link sieht vielversprechend aus! Dies ist aber dann
ein Board, wie oben von mir beschrieben oder? Dann würde ich mir einfach
dieses kaufen ... Wie würde ich es dann programmieren? Denn bei
Microchip gibts ja eine extra Software dafür.
lg
Andreas
Andreas schrieb:> Nämlich ein einfaches,> wie oben beschriebenes System: µC anstecken, Board an PC, mittels> Software (?) programmieren, debuggen, abstecken, µC rausnehmen und> verwenden.
Warum bist du eigentlich so wild drauf, deinen µC dauern hin und her zu
stecken. Brenn dir doch einmal über ISP einen Bootloader in dein
Zielsystem und dann kannst du munter über die Serielle Schnittstelle den
Code einspielen.
Du kannst mit nem 12 EUR Chinesen-Arduino schon ganz gut starten, mehr
braucht's im Idealfall nicht. Die Hardware ist gut und die
Chinesen-Hardware preiswert.
ABER:
Die Arduino IDE ist noch schwacher und hemdsärmliger als MPLAB, die
unterstützt dich praktisch in nix. Kein gescheites Syntax-Highlighting,
kein Intellisense, keine Codevervollständigung. Ab und zu kommt ein
übler Fehler: STK-500 Error out of sync (Wortlaut hier nicht exakt). Der
kann dich, falls du den 328P bzw den vorgeschalteten 16U2 nicht flashen
kannst, zum Wahnsinn treiben. Scheinbar ist der Bootlader nicht 100%
wasserdicht.
Arduino istn nettes Spielzeug wenn du eines der vielen Codebeispiele
einladen und vielleicht noch ne handvoll Zeilen Code ändern willst. Aber
zum ersthaften programmieren braucht's andere Werkzeuge, zB Atmel Studio
(die ist mMn geradezu luxuriös).
Ach ja noch was: Die 8-bit ATMegas halten nur 10.000 Flashzyklen aus.
Möglich ist sogar, daß das nur ein statistischer Mittelwert ist. Mir ist
mal einer beim Flashen einfach so kaputt gegegangen. Die PICs halten
länger - und die Gefahr des sich-selbst-Aussperrens hast du auch nicht.
Andreas schrieb:> @ Till: Danke für die ganzen Infos, aber das AVR One kostet zirka 600€> und das Dragon schaut nicht so aus, als ob ich jeden möglichen> Controller anschließen und programmieren könnte, oder sehe ich das> falsch?
Das sind nur zwei Beispiele, Atmel hat ( wie Microchip auch ) noch ein
paar mehr Programmer im Angebot.
> Könntest Du mir vielleicht deine Entwicklung zukommen lassen? Bzw. eine,> die mir das zur Verfügung stellt, was ich möchte? Nämlich ein einfaches,> wie oben beschriebenes System: µC anstecken, Board an PC, mittels> Software (?) programmieren, debuggen, abstecken, µC rausnehmen und> verwenden.
Wenn Du unbedingt diese Variante möchtest, dann bleibt Dir nur das Uno.
Alle Anderen, auch meine genannten Boards, verwenden SMD. Wenn Du auch
einen SMD Controller auf einem DIL-Board verwenden kannst, dann kommen
auch die Arduino Mini, Micro, Nano oder z.B. der mattairtech MT-DB-U2 in
Frage.
Das ist aber nicht Arduino pur!
Ein Arduino Board programmierst Du ohne Programmer, nur über die
serielle Schnittstelle oder über USB, im System per Bootloader.
Die Original Boards sind für die Verwendung mit den Shields und nur
geringe externe Beschaltung vorgesehen, die Mini, Micro und Nano zum
einstecken in Breadboards oder eigene Platinen. Trotzdem verbleiben die
Controller immer im Zielsystem.
Arduino ist keine IDE für jeden beliebigen Controller auf jedem Board.
Wenn Du nicht Arduino Boards verwendest, mußt Du jeden Controller mit
seiner Tool-Chain und seinem Board in der IDE konfigurieren.
Ich glaube, solange Du nicht Deinen Entwicklungsprozess umstellst, bist
Du mit einem Eval Board und einem Programmer besser bedient.
Hallo,
ich habe auch 10 Jahre PIC programmiert, jeden der Sorte bis 32 Bit und
vor allem die 8 Bitter mit Vorliebe für industrielle und
Hobbyanwendungen. Dann auf ARM7 uimgestiegen, nun auf Cortex.
Arduino seit 4 Wochen mit wachsender Begeisterung !!!
1. Arduino ist "Physical Computing", d.h. es gibt eine Unmenge Sensoren
und Platinchen, die alles mögliche messen und steuern für jedes
Platinchen hat irgendwer ne Library geschrieben, die dich davon
entbildet manchmal saukomplzierten C++ Code zu schreiben, den nur noch
der Experte versteht, der 10 Jahre Atmel gemacht hat und den GCC wie
seine Westentasche kennt. (Arduino kann auch an einer Hauptschule
eingesetzt werden ohne dass die damit intelektuell überfordert sind.)
2. Arduino ist durch die Kabelstecktechnik NICHT für gescheite
Anwendungen gedacht, da du ewig Wackelkontakte hast. Da hilft FRITZING
weiter, ein schönes grafisches Tool (ab Kindergarten aufwärts geeignet)
welches aus deiner Strippentechnik für Shields ein Board machen kann was
auf den Arduino gesteckt wird.
3. Arduino ist voll C++ kompatibel, d.h. wer mag kann auch RICHTIG
programmieren, d.h. mit allen Features die der Atmel zu bieten hat.
Richtige Lib einbinden und schon sind die internen Hardwarestrukturen
der CPU erreichbar. Die sind nämlich alle im Arduino Verzeichnis ablegt.
Dahinter werkelt der GCC Compiler. Die Italiener haben das schon ganz
clever gemacht.
Ich habe längst die grüne Popel Oberfläche durch einen komfortablen
externen Editor mit intelligenter Eingabe (Notepad++) ersetzt und nutze
die JAVA nur noch um mit Ctrl-R oder Cntrl-U zu kompilieren und
abzuloaden.
4. Den PIC kannste singestep debuggen in MPLAB, Luxus quasi - Arduino
NICHT! Und nach ein paar tausend Flash Zyxklen kannste den Arduino
wegwerfen was bei dem Preis aber egal ist, den Nano kriegste ab 8 Euro,
den Uno ab 12 Euro und den Mega ab 15 Euro beim freundlichen Chinamann.
Ich sag dr auch gleich was nicht geht mit Arduino: Du bist weg von der
Hardware der CPU, völlig egal was das für eine ist, ob ARM, PIC oder
Atmel. Du siehst nur die API der Libraries, befasst dich mit deinem
Projekt. Timer Register mit Capture und Compare, Interrupts, Power Modi,
zb nen Infrarot TSOP Sensor auslesen .... geht nicht (so einfach)!
Allerdings wird weiter entwickelt, inzwischen gibt es Funktionen wie
attachInterrupt.
Fazit: Arduino ist geil für schnelle Steuerungsaufgaben! Es gibt alles
fix und fertig als niedliches Platinchen, grün, rot oder blau, kostet
nicht mehr als 5 Euro das meiste. In eine Kiste einbauen, fertig! In 1
Stunde zimmer ich dir ne Rolladensteuerung zusammen oder eine
Blumenbewässerung für den Garten oder eine Steppermotoranwendung oder
eine 7-Segment-Uhr oder eine Wetterstation oder, oder, oder...
PS: Wobei ich für Profi Anwendungen auf den BASIC TIGER zurückgreifen
würde, weil das ein fix und fertig ausgereiftes System ist was natürlich
auch einiges mehr kostet und wo professsionelle Entwickler hinter
stecken.
Christian J. schrieb:> zb nen Infrarot TSOP Sensor auslesen .... geht nicht (so einfach)!
Kann man's in C und hat Ahnung wie Arduino tickt, dann kann man einfach
mal sowas wie IRMP einbinden. Das ist jetzt wirklich kein Hexenwerk.
Aber richtig Arduino ist's natürlich auch nicht mehr.
Man muss den Arduino auch nicht Arduino-like programmieren. Aber
möglicherweise ist dann andere Hardware besser geeignet. Arduino ist
eben für Leute gedacht/gemacht, die nichts mit Hardware-Basteln am Hut
haben. Als Entwicklungsplattform für Harware-Entwicklung ist Arduino
eher wenig geeignet. Und als Programmiergerät ist meiner Meinung nach
ein Arduino Uno voll daneben, da man µCs mit Arduino-Bootloader benötigt
(OK, kann man auch mit Bootloader kaufen).
Ich denke auch, um einen Vergleich zwischen PIC und Atmel machen zu
können, wäre das STK500 interessant. Dazu dann das neueste AVR Studio.
Aber auf Hochsprachen Ebene tut sich da nicht mehr viel.
Da ist es egal ob man einen 8-Bitter AVR, PIC, MSP, ... hat.
Richtig Programmiert sind dann deine Funktionen auf jeder Platform
nutzbar.
Wenn man in Assembler programmiert kann es etwas anders aussehen.
Ich bin auf der AVR Schiene gelandet. Aber für meine damalige Ausbildung
musste ich mich mit nem kleinen PIC auseinander setzen. Hab damals alles
in Assembler programmiert.
Im direkten verlgeich fand ich die Atmel Controller einfacher.
Da musste z.B. keine Registerbank umgestellt werden.
Inzwischen nehme ich immer noch die AVR einzi und allein aus dem Grund,
da ich da Erfahrung gesammelt habe und die entsprechenden Tools zum
Programmieren und Debuggen habe.
Die Arduinos habe ich mir auch angeguckt. Die IDE habe ich nur mal für
den Nachbau eines Projektes gebraucht und hab se sofort verflucht.
Die Boards an sich finde ich sehr Praktisch für "Rapid Prototyping".
Dafür habe ich den Arduino Bootloader durch PEDA's fastboot ersetzt.
Nun Programmiere ich im AVR Studio, teste das Programm auf dem Arduino
Board und später kann ich die Routinen dann in der Zielschatung
weiterverwenden.
Letztens habe ich noch diese Seite gefunden:
"Arduino, Thank you and good bye"
http://vpapanik.blogspot.gr/2012/08/arduino-thank-you-and-bye-bye.html
VG!
SE
Warum überhaupt umsteigen?
Wenn ich dich richtig verstanden habe kommt das arduino geraffel sowieso
nicht in frage.
Ich persönlich favorisiere auch die AVRs gegenüber den PICs, aber wenn
du dich mit den PICs bereits auskennst und die ganzen
Entwicklungswerkzeuge bereits besitzt, macht es absolut keinen sinn auf
AVR umzusteigen.
Wenn es unbedingt was neues sein soll, beschäftige dich lieber mit nem
Cortex M3 oder Cortex M4. z.B. die STM32 gefallen mir persönlich sehr
gut.
SE:
> Dafür habe ich den Arduino Bootloader durch PEDA's fastboot ersetzt.> Nun Programmiere ich im AVR Studio, teste das Programm auf dem Arduino> Board und später kann ich die Routinen dann in der Zielschatung> weiterverwenden.
Hallo SE,
Interessant! welche Bootloader meinst du genau? geht über RS232? kannst
eventuell das Bootloader hoch laden?