Atmega 8 Board und mySmartUSB (Anfängerfragen)

Hallo Zusammen,

ich denke bestimmt wurde diese Frage des öfteren gestellt:

Habe mir selbst ein kleines Board mit einen Atema8 zusammengelötet und habe zusätzlich den mySmartUSB Programmer.

Kann ich da trotzdem mit eurer IDE arbeiten?

Ist zu Bascom wirklich nur der unterschied das man mit Basic programmiert?

Möchte ein paar Spielereien mit LED machen und weis net ob ich da gleich C++ lernen soll.

Da es ja schon viele Bibliotheken in C++ fertig gibt gibt es da spezielle Tutorials wo man net gleich lerne ganze PC Programme zu erstellen sondern wirklich nur "beschränkt" für den uC?

Danke für die hoffendlich freundlichen Antworten :-)

Was ich von Bascom “weiss”, reicht nur, dass ich da nichts mit zu tun haben möchte, kann dir also die genauen Unterschiede nicht aufzählen. Ist auch, glaube ich, nicht hilfreich, so anzufangen.

Es gibt zig Beispiele in der IDE.
Und es gibt die Adruino Reference, die nicht nur die vorhandenen Funktionen, sondern auch C++ selbst in Grundzügen beschreibt.

Und jede Library sollte ausreichend Examples mitbringen.

Daraus kann man schon eine Menge lernen.

Generell gilt, dass Variablendefinition in C wichtiger ist als in Basic (Namen sind case sensitiv, Datentypen gibt es viele).

Ansonsten kann man immer auch in “richtigen” C / C++ Referenzen nachschauen.
Musst erstmal nur so weit gehen, bis du vorhandene Sachen verstehst. Vieles was in c++ möglich ist, sollte dich erstmal nicht verwirren, wenn du es nicht brauchst.

Irgendwie wirst du im Lauf der Zeit “C++ für den Hausgebrauch” lernen, das lässt sich nicht vermeiden.

Ja also ich will jetzt nicht richtig in die Programmierung einsteigen und quasi C++ lernen sondern eher einfach einen uC ansteuern können und bissle Spielen.

Man möcht quasi nur das an C++ lernen was ich auch nur brauche. Ich will keine dicken Programme unter Windows oder Spiele programmieren. Auch wenn das doof klingt.

Geht halt nur darum mit welche Lektüre man anfängt da alle ja net in die richtung uC’s gehen sondern eher halt Anwenungen entwickeln oder Spiele etc.

Grüße

PopoPirat: Habe mir selbst ein kleines Board mit einen Atema8 zusammengelötet und habe zusätzlich den mySmartUSB Programmer.

Kann ich da trotzdem mit eurer IDE arbeiten?

Ist zu Bascom wirklich nur der unterschied das man mit Basic programmiert?

Also die Kombination von ATmega8 und mySmartUSB-Programmer und Arduino-IDE und wenig Erfahrung ist möglicherweise nicht ganz ideal - finde ich.

Der ATmega8 wird nicht von Haus aus von der IDE unterstützt. Es ist zwar möglich ihn zu verwenden, aber nur mit ein paar "Kunstgriffen" - nicht sooooo anfängertauglich.

Den mySmartUSB-Programmer kann man zwar mit der Arduino-IDE verwenden, es ist aber auch ein kleiner "Kunstgriff" nötig, damit es funktioniert (bei BASCOM wird er übrigens direkt unterstützt). Auch das ist nicht soooo anfängertauglich.

Es könnten also ein paar Frustrationen "vorprogrammiert" sein. :)

Mein "Werdegang" mit Mikrocontrollern (ich bin kein Profi) hat folgende "Bereiche" berührt: Assembler mit PICs, AVRs mit BASCOM und dann AVR GCC (Win-AVR) und auch die Arduino-IDE. Bei den letzten beiden bleibe ich mal - denke ich. Das ist meiner Meinung nach ein guter Kompromiss: eine Hochsprache, wodurch man sich nicht um "alles selbst" kümmern muss und andererseits doch eine gewisse Hardwarenähe und Flexibilität, ausserdem eine große Community und viele Beispiele, Librarys, Tutorials - mit sehr unterschiedlicher Qualität ;) und und und.

Die größten Stärken spielt die Arduino-IDE mit der Hardware aus, für die sie (eigentlich) gedacht ist, nämlich mit (zum Beispiel) dem Arduino UNO (ATmega328P). Jedem "Anfänger" würde ich empfehlen damit anzufangen, denn gerade zu Beginn gibt es viele "Stolpersteine" woran die ersten kleinen Projekte leicht scheitern können.

"Später" kann man auch andere AVR-Mikrocontroller mit der Arduino-IDE programmieren, etwa aus der ATtiny-Serie und einige andere mehr.

Edit: Ob es wohl eine gute Idee ist, in einem Forum in dem C/C++ "gesprochen" wird die Frage zu stellen, ob BASCOM/BASIC nicht besser wäre ... :) ;) :)

PopoPirat: Ja also ich will jetzt nicht richtig in die Programmierung einsteigen und quasi C++ lernen sondern eher einfach einen uC ansteuern können und bissle Spielen.

Man möcht quasi nur das an C++ lernen was ich auch nur brauche. Ich will keine dicken Programme unter Windows oder Spiele programmieren. Auch wenn das doof klingt.

Geht halt nur darum mit welche Lektüre man anfängt da alle ja net in die richtung uC's gehen sondern eher halt Anwenungen entwickeln oder Spiele etc.

Genau dafür ist der Arduino doch ideal.

Aber da solltest du nicht mit einem "Exoten" anfangen, sondern dir einen "echten" Arduino anschaffen und wenn genügend Erfahrung vorhanden ist, kannst du es mit dem Atmega8 durchaus probieren.

Damit zu starten, kann ich dir nicht empfehlen. Du musst dir für den Atmega8 erst eine Board.txt besorgen/schreiben, damit du diesen in der IDE programmieren kannst. Ob die zahlreichen Bibliotheken dann auch für den Atmega8 passen, wage ich zu bezweifeln.

Aber wenn du deine "selbstbau-Platine" verwenden möchtest, kannst du doch darauf einen Atmega328 setzen. Der ist, soweit ich weiß, pinkompatibel und kann direkt in der IDE programmiert werden.

Edit: uxomm war schneller. ;)

Da ist doch der Spaß zum selber löten ja weg :-(

naja ich werds mir mal ankucken.....vllt bleibe ich doch beim bascom

PopoPirat: Da ist doch der Spaß zum selber löten ja weg :-(

Das kannst du ja weiterhin machen, nur eben mit einem anderen Controller drauf.

Atmega8 und Atmega328 sind vom Prinzip her kein riesiger Unterschied. Das ist eher evolutionär. Mehr Speicher, minimal andere interne Register, mehr interne Funktionen (glaube ich). Aber die Prozessoren sind doch sehr ähnlich aufgebaut.

Ein paar Grundkenntnisse in C/C++ brauchst du halt. Sieht man hier immer wieder:

1.) Variablen und Datentypen 2.) Grundlagen zu Funktionen. Wie schreibt man eine einfache Funktion 3.) Vielleicht ein paar Grundlagen zu Arrays

Du musst auch nicht gleich alles dazu lernen, aber man sieht hier immer wieder dass Leute die größten Probleme haben, weil sie nicht verstehen was eine Funktion ist, oder was der Unterschied zwischen byte und int ist. Wenn du von BASIC kommst sollte das nicht so schlimm sein.

Arduino wird manchmal damit beworben, dass da absolute nicht-Programmierer Sachen machen können. In der Praxis klappt das aber einfach nicht. Schon wenn man zwei Sketche kombinieren will muss man wissen was man tut.

Wenn du gerne selbst lötest, dann nimm doch einen ATmega328P und du kannst dir praktisch einen UNO selbst basteln (zumindest fast). Wenn du ohnehin schon einen ISP-Programmer hast sollte auch das Programmieren kein allzu großes Problem sein.

Siehe: arduino.cc/en/Tutorial/ArduinoToBreadboard gammon.com.au/breadboard

ich hab halt mir schon ein board gebaut nach dem plan wie der atmega 8 betrieben wird.

Einfach durch den ATmega328P austauschen ? Pinbelegung ist zumindest gleich aber von den Kondensatoren usw. halt die Werte ob das auch passt.

Ja, sollte gleich sein. Die Prozessoren sind vom prinzipiellen Aufbau her praktisch identisch

aber kollege oben meinte ich muss erst vorarbeit leisten um meinen programmer in betrieb nehmen zu können?

Einen Unterschied gibt es.

Mit welcher Frequenz/Quarz betreibst du den Atmega8 ?

Den Atmega328P kannst du extern (Quarz oder Keramikresonator) mit 16 MHZ betreiben. Intern mit 8 oder 1 Mhz.

Alles andere ist kompatibel, siehe auch die Links von uxomm.

Ein 4MHz externer Oszillator ist kein wirkliches Problem, aber etwas ungewöhnlich. Ein atmega328p mit 5V wird "bei Arduino" üblicherweise entweder mit 16MHz Quarz/Resonator oder mit 8 MHz internem Takt betrieben.

Wenn du mit möglichst wenig Problemen die Millionen Sketche und Libraries, die du im Internet findest, ausprobieren willst, solltest du lieber zum 168/328 wechseln.

Wenn du sowieso eine USB-serielle Schnittstelle zum PC verwendest, kannst du dich, statt mit Programmer zu hantieren, auch vom Bootloader verwöhnen lassen.

PS: " mysmartusb arduino " kann man googlen

PopoPirat:
aber kollege oben meinte ich muss erst vorarbeit leisten um meinen programmer in betrieb nehmen zu können?

Welche Vorarbeit und welcher Kollege?

Du kannst Beiträge einfach zitieren wenn du zuvor im entsprechenden Post auf “Quote” klickst.

uxomm: Also die Kombination von ATmega8 und mySmartUSB-Programmer und Arduino-IDE und wenig Erfahrung ist möglicherweise nicht ganz ideal - finde ich.

Der ATmega8 wird nicht von Haus aus von der IDE unterstützt. Es ist zwar möglich ihn zu verwenden, aber nur mit ein paar "Kunstgriffen" - nicht sooooo anfängertauglich.

Den mySmartUSB-Programmer kann man zwar mit der Arduino-IDE verwenden, es ist aber auch ein kleiner "Kunstgriff" nötig, damit es funktioniert (bei BASCOM wird er übrigens direkt unterstützt). Auch das ist nicht soooo anfängertauglich.

Es könnten also ein paar Frustrationen "vorprogrammiert" sein. :)

das meinte ich

PopoPirat: das meinte ich

Ah, ok.

Also mit dem "mySmartUSB-Programmer" habe ich auch keine Erfahrung, somit scheint das tatsächlich eine Hürde zu sein.

Hier wurde er offensichtlich zum Laufen gebracht. Notfalls einen anderen (USBasp) besorgen, der auch funktioniert.

Wenn ein Bootloader drauf ist, geht es auch mit einem USB-Serial-Wandler.

Ich glaube, der gemeinte Kollege bin ich.

Also um den mySmartUSB-Programmer* mit der Arduino-IDE verwenden zu können, muss man in "programmes.txt" einen Eintrag ändern bzw. einen zusätzlichen Eintrag erzeugen. "programmers.txt" ist Teil der Arduino-IDE. Das "interessante" daran ist, dass diese Datei gleich an mehreren Stellen zu finden ist. Je nach Betriebssystem (ich meine damit im Speziellen mal "Windows-Version") und Arduino-IDE kann das an verschiedenen Stellen sein. Aber nur eine dieser Dateien ist die "relevante".

Zum Beispiel hier: C:\Dokumente und Einstellungen\user\Anwendungsdaten\Arduino15\packages\arduino\hardware\avr\1.6.5\programmers.txt

Am einfachsten: Man startet eine Suche auf der gesamten Festplatte und nimmt die folgenden Veränderungen in allen gefundenen Dateien "programmers.txt" vor (zur Sicherheit vorher eine Kopie sichern).

Hintergrund: Der Progammer mySmartUSB hängt "über USB" an der seriellen Schnittstelle und emuliert (unter anderem) einen stk500v2 Programmer. So eine Kombination gibt es leider unter den "normalen" Programmern der Arduino-IDE nicht (es gibt nur welche mit skt500v1).

Eintrag verändern Am aller einfachsten ist, du veränderst den ersten Eintrag, den du in "programmers.txt" findest. Der Original-Eintrag:

avrisp.name=AVR ISP
avrisp.communication=serial
avrisp.protocol=stk500v1
avrisp.program.protocol=stk500v1
avrisp.program.tool=avrdude
avrisp.program.extra_params=-P{serial.port}

Der gänderte Eintrag (für mySmartUSB)

avrisp.name=AVR ISP
avrisp.communication=serial
avrisp.protocol=stk500v2
avrisp.program.protocol=stk500v2
avrisp.program.tool=avrdude
avrisp.program.extra_params=-P{serial.port}

Also das stk500v*1* wurde durch stk500v*2* ersetzt.

Als Programmer stellst du dann für deinen mySmartUSB einfach den "AVR ISP" ein.

Zusätzlicher Eintrag Du kannst natürlich auch einen eigenen Programmer-Eintrag für "deinen" Programmer machen. Zum Beispiel so:

mySmart.name=mySmartUSB
mySmart.communication=serial
mySmart.protocol=stk500v2
mySmart.program.protocol=stk500v2
mySmart.program.tool=avrdude
mySmart.program.extra_params=-P{serial.port}

Dann gibt es (nach Neustart der IDE) einen Zusätzlichen Eintrag bei den Programmern, nämlich "mySmartUSB".

Alles bezieht sich auf die Arduino-IDE 1.6.x. Für andere Versionen sind teilweise abweichende Einräge nötig.


*) Es gibt ja mehrere mySmartUSB Programmer: mySmartUSB MK2 mySmartUSB MK3 mySmartUSB light den letzten verkauft z.B. auch Conrad in seinen Läden, welhalb er eine gewisse Verbreitung hat. Ich beziehe mich auf eben diesen, weil ich auch so einen besitze und ihn erfolgreich zur Zusammenarbeit mit der Arduino-IDE gebracht habe :)

habe meinen auch vom conrad geklauft dann wird das schon passen.

vielen dank! sobald das board fertig ist werde ich es testen.

muss ich denn quarz dann austauschen in ein größeren?

PopoPirat: habe meinen auch vom conrad geklauft dann wird das schon passen.

vielen dank! sobald das board fertig ist werde ich es testen.

muss ich denn quarz dann austauschen in ein größeren?

Der Quarz hängt davon ab, welche Fuses du "brennst".

Ich würde dir einen 16 MHz Quarz empfehlen.