Atmega 8 Board und mySmartUSB (Anfängerfragen)

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. :slight_smile:

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 stk500v1 wurde durch stk500v2 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 :slight_smile:

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.

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

Ich würde auch einen 16 MHz Quarz empfehlen (und 2 x 22 pF Karamikkondensatoren) - siehe Schaltbilder der Links von #8.

Übrigens ist das in dem Schaltbild, das du in #9 verlinkt hast kein Quarz sondern ein Keramik-Resonator, glaube ich (Edit: Falsch, es handelt sich um einen kompletten Oszillator). Ein Quarz hat nur 2 Anschlüsse ein Resonator hat 3 (Edit: Ein "kompletter Oszillator" hat auch 3 Anschlüsse).

Ein 16 MHz Resonator geht auch, ist ein wenig ungenauer (als ein Quarz) - das spielt aber kaum eine Rolle.

uxomm:
Ich würde auch einen 16 MHz Quarz empfehlen (und 2 x 22 pF Karamikkondensatoren) - siehe Schaltbilder der Links von #8.

Übrigens ist das in dem Schaltbild, das du in #9 verlinkt hast kein Quarz sondern ein Keramik-Resonator, glaube ich. Ein Quarz hat nur 2 Anschlüsse ein Resonator hat 3.

Ein 16 MHz Resonator geht auch, ist ein wenig ungenauer (als ein Quarz) - das spielt aber kaum eine Rolle.

Richtig, die Kondensatoren hab ich vergessen zu erwähnen.

In der Schaltung (Link) ist es sogar ein kompletter Oszillator.
Der hat auch einen Spannungsanschluss.

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

Kannst du nach einem ähnlichen Verfahren wie die programmers.txt in der boards.txt anpassen

Entweder ein extra Eintrag durch copy/paste und Namens-Änderung, oder einen vorhandenen nur modifizieren:

my4MHzboard.f_cpu=4000000L

In boards.txt wären auch andere Anpassungen erforderlich, wenn du deinen atmega8 statt des atmega328 behalten willst.

Aber, wie gesagt, 16 MHz Quarz + 2*18pf Kondensatoren wie im bereits erwähnten Link

und du könntest in der IDE behaupten, es sei ein echter "Uno".

ist das kein quarz? genau den hab ich den wollte ich nur austauschen da mein schönes selbst erarbeitetes platinen design :slight_smile: schon fertig ist (es fehlen nur eben die buchsenleisten aber rest ist alles schon verlötet)

Hallo
für den 328 und den "mySmartUSB Light" hab ich mir mal was aufgeschrieben.

Ebenso funktioniert bei mir auch einen Sketch aus der Arduino IDE über einen USB seriell Wandler auf einen Standalone zu laden.
Guckst du hier:
http://www.frag-duino.de/index.php/maker-faq/24-standalone-arduino-auf-einem-breadboard-aufbauen
Ich habe allerdings einen (ungepolten) 220nF statt des 1µF genommen.

Was ich noch nicht weiß?
?? In beiden Fällen muss der Bootloader vorhanden sein.
?? Der aus der Arduino IDE aufgespielte Bootloader setzt die Fuses.
?? In welchen Fällen wird der Bootloader wieder gelöscht

ATMEL 328P als Standalone brennen.pdf (124 KB)

ATMEL Programmer konfigurieren.pdf (93.7 KB)

michael_x:
Kannst du nach einem ähnlichen Verfahren wie die programmers.txt in der boards.txt anpassen

Entweder ein extra Eintrag durch copy/paste und Namens-Änderung, oder einen vorhandenen nur modifizieren:

my4MHzboard.f_cpu=4000000L

In boards.txt wären auch andere Anpassungen erforderlich, wenn du deinen atmega8 statt des atmega328 behalten willst.

Aber, wie gesagt, 16 MHz Quarz + 2*18pf Kondensatoren wie im bereits erwähnten Link
Gammon Forum : Electronics : Microprocessors : How to make an Arduino-compatible minimal board
und du könntest in der IDE behaupten, es sei ein echter "Uno".

sorry für den doppelpost:

heißt das mit einer geäönderten txt kann ich auch meinen atmega 8 behalten? könnte dann gleich was testen heute abend deswegen die frage.

PopoPirat:
TFT680 4 MHz Quarzoszillator DIP-14 CMOS 4.000 MHz 20.7 mm 13.1 mm 5.3 mm 1 St. kaufen

Das ist ein Oszillator. Den versorgt man mit 5V und der gibt dann von sich das Signal aus. Weiß nicht wie man da die Einstellungen anpassen muss (vielleicht muss man nur die Frequenz ändern), aber irgendwie wird es gehen.

Aber normal ist ein Schwingquarz und zwei Lastkondensatoren. Der wird dann mit 2 Pins (statt einem wie beim Oszillator) angeschlossen und bildet mit der internen Beschaltung des Controllers einen Schwingkreis.

?? In beiden Fällen muss der Bootloader vorhanden sein.

Die Frage verstehe ich nicht!
Aber ja, wenn man den ATMega mit einem USB Serial Adapter beschreiben will, brauchts einen Bootloader darauf.

?? Der aus der Arduino IDE aufgespielte Bootloader setzt die Fuses.

Du drückst auf Bootloader brenne, dann werden erst die Fuses gesetzt, und dann der Bootloader geschrieben.
Also nein!
Der Bootloader kann keine Fuses setzen.

?? In welchen Fällen wird der Bootloader wieder gelöscht

Wenn du das Anwendungsprogramm per ISCP aufspielst.
Dann solltest du aber auch die Fuses wieder passend dazu setzen.

Weiß nicht wie man da die Einstellungen anpassen muss (vielleicht muss man nur die Frequenz ändern), aber irgendwie wird es gehen.

Ja, das geht!
Da muss man die Fuses anpassen.
Und die Frequenz in der boards.txt.
Und es wird ein Pin frei.

Das dürfte dann "ext. Clock" sein, oder? (eine der oberen drei Optionen)

http://www.engbedded.com/fusecalc/