Forum: Mikrocontroller und Digitale Elektronik Wie kann man einen ATMEGA328P-PU programmieren?


von Em B. (mbrain)


Lesenswert?

Ich habe mir ein Mikrocontroller Lernpaket mit einem 
tastenprogrammierbaren HT46F47E Controller 
http://www.ak-modul-bus.de/stat/ht46f47e_mikrocontroller.html gekauft 
und komme damit auch schon so einigermaßen zurecht. Das gute dabei ist, 
das ich dazu keine Programmiersoftware brauche. Man kann ihn einfach mit 
Tastern programmieren, was ich allerdings gerade noch versuche zu 
verstehen.

Trotzdem habe ich mir heute gleich einen ATMEGA328P-PU dazu gekauft. 
Gehe ich richtig in der Annahme, das ich unbedingt einem Arduino oder 
einem Programmierkarte (Programmer) brauche um den zu programmieren?

Kann ich ohne Programmer nur auf dem Breadboard mit Bauteilen überhaupt 
erste Gehversuche mit dem Atmega wagen?

mfg

: Verschoben durch Moderator
von Magic S. (magic_smoke)


Lesenswert?

Für den ATMega brauchst Du mindestens einen AVR-ISP-Programmer. Wenn Du 
die Luxusversion willst, besorg Dir ein STK-500 oder so. Die Software 
gibts kostenlos im Internet, z.B. das AVR-Studio direkt von Atmel oder 
AVR-GCC.

von Mick (Gast)


Lesenswert?

Hallo Manuel

Du benötigst einen Programmer, um die Software aufzuspielen. Von Haus 
aus, macht der Mikrocontroller grundsätzlich nichts.

Programmieren kannst du den Chip auch über einen Arduino. Siehe hier: 
https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

Alternativ kannst du auch, wie von magic_smoke vorgeschlagen, einen 
teureren Programmer bschaffen. Da gäbe es auch noch die preiswerteren 
USBTinyISP und USBasp.

Am einfachsten nimmst du für erste Versuche die Arduino IDE. Da brauchst 
du nur wenig Aufwand, bis du eine lauffähige Entwicklungsumgebung hast.

Grüsse

von Em B. (mbrain)


Lesenswert?

Ok ich verstehe, super, danke für eure Antworten. Noch eine Frage: Den 
mit Arduino IDE programmierten Chip kann ich dann einbauen wo ich möchte 
oder? Also wenn ich jetzt mit dem Atmega Chip und der Arduino IDE eine 
Schaltung mit Feuchtigkeitssensor und Luftbefeuchter programmiere kann 
ich dann den Chip ausbauen, in eine "echte" Dose (ohne Arduino) 
einsetzen, verkabeln und das läuft?

mfg Manuel

: Bearbeitet durch User
von Wolfgang E. (Firma: janeeisklar) (whattheheck)


Lesenswert?

Manuel B. schrieb:
> Noch eine Frage: Den
> mit Arduino IDE programmierten Chip kann ich dann einbauen wo ich möchte
> oder?

So ist es.

von Carl D. (jcw2)


Lesenswert?

Du kannst auch alternativ einen A.Nano verwenden. Der einen ATeg328p, 
hat die Größe eines (breiten) DIL32 Gehäuses (also DIL40 eine ATmega32 
in etwas kürzer), paßt in Steckbrett oder Fassung und hat alles, was es 
braucht um ihn über MicroUSB zu programmieren (per A.IDE oder AVRdude).
Experiment verlaufen einfacher, wenn man nicht Rätseln muß, warum der 
Quarz nicht tut ;-)
Programme darf man natürlich in jeder Sprache schreien, solange sie 
AVR-MaschinenCode generiert. Das muß nicht "Arduinisch" sein.

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

magic s. schrieb:
> Luxusversion willst, besorg Dir ein STK-500

Luxusversion ist ein SDK600 + AVR ONE!

von Alex R. (itaxel)


Lesenswert?

Hallo Manuel,

ich arbeite unter anderem auch mit dem 328p (DIL28-Gehäuse).
Entweder du besorgst dir ein Arduino UNO oder duemilanove (den habe ich 
von Fritzing) oder du baust dir ein Arduino ISP Programemr.

Ich habe mir solch einen ISP-Programmer sowie einen normalen AVRISP mk2 
gebaut. Das ganze natürlich auf Arduino Basis.

Alle beide Programmer funktionieren über die Arduino-IDE sowie auch über 
das AtmelStudio. Diese Programmer habe ich mir gebaut um meine µC auf 
meinen eigenen Platinen zu programmieren.

Gruß Alex

von Em B. (mbrain)


Lesenswert?

Danke euch, ich werde mir einen Arduino Uno kaufen. Wenn ich den Chip 
auf einem Brett habe, kann ich den dann direkt mit einem 5V Adapter von 
der Steckdose betreiben oder muss ich dazu die Schaltung mit Kristall, 
Kondensatoren etc. wie hier ( https://www.arduino.cc/en/Main/Standalone 
) gezeigt bauen?

von Stefan F. (Gast)


Lesenswert?

Ja kannst du. Der Quarzt ist optional.

Aber auf den 100nF Kondensator nahe am Chip zwischen VCC und GND 
solltest du nicht verzichten.

Also im Minimalfall brauchst du ein  netzteil bzw Batterie, den Chip, 
einen Kondensator und natürlich eine Platine oder ein Steckbrett.

Falls du ohne die Arduino Umgebung (back to the Roots) arbeiten 
möchtest, hilft Dir vielleicht auch diese Anleitung: 
http://stefanfrings.de/avr_hello_world/index.html

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


Lesenswert?

Stefan U. schrieb:
> Ja kannst du. Der Quarzt ist optional.

Moment! Ein ATmega328 der auf einem Arduino Dienst tat (also den Arduino 
Bootloader drauf hat) der hat auch die Fuses so gesetzt daß er einen 
externen Quarz oder Resonator braucht.

Wenn man ihn in einer Anwendungsschaltung ohne Quarz betreiben will, 
dann muß man vorher die Fuses wieder auf den internen Oszillator 
umstellen. Wenn man allerdings so weit ist, daß man Fuses umstellt (wozu 
man sowieso einen ISP-Adapter braucht) dann stellt sich andererseits die 
Frage, warum dann überhaupt erst einen Arduino verwenden.

Langer Rede kurzer Sinn: der ATmega vom Arduino-Board braucht in der 
freien Wildbahn einen Quarz und zwei 22pF Kondensatoren.

von Andreas K. (andreasmc)


Lesenswert?

Manuel B. schrieb:

> Kann ich ohne Programmer nur auf dem Breadboard mit Bauteilen überhaupt
> erste Gehversuche mit dem Atmega wagen?

Nicht wirklich sehr praktikabel, aber: Könnte man wenn man seeeehr sehr 
verzweifelt oder gelangweilt ist das ISP-Programmieren nicht eigentlich 
auch "per Hand" mit ein paar Tastern machen? Hat ISP eine 
Mindesttaktrate? Ich meine mich zu erinnern dass die AVRs im Prinzip 
einen vollstatischen, also beliebig langsamen Betrieb erlauben...

Eine blinkende LED kann man z.B. in Assembler mit ca 40 Byte erschlagen. 
320 Bit, also 320 mal eine oder zwei Tasten drücken...

von Max (Gast)


Lesenswert?

Hallo,
für solche  Dinge mal auf Tiny.Systems und Elektronik-Labor.de 
nachsehen.Hier werden einfache Verfahren vorgestellt.
Gruss Max

von ??? (Gast)


Lesenswert?

Einer der günstigsten AVR Programmer ist der "mySmartUSB light". Liegt 
zwischen 16 und 17 Euro. Der hat allerdings keine "USB UART Bridge", die 
bis auf das Zielsystem reicht. Die nächste Stufe ist dann der der 
"mySmartUSB" (ohne "light" :>) ~30€

von Mick (Gast)


Lesenswert?

Sowas hier wäre auch möglich: http://www.fischl.de/avrusbboot/

Damit könntest du alles auf ein Breadboard stecken und den Chip dann 
ohne zusätzliche Hardware über USB programmieren. (Voraussetzung: der 
ATmega mit entsprechendem vorprogrammierten Bootloader)

von humus (Gast)


Angehängte Dateien:

Lesenswert?

wenn du einen parallelport am rechner hast, kannst du ganz einfach mit 
dem kostenlosen BASCOM AVR deine hex-files auf den controller schreiben.

aufbau siehe anhang

der parallelport sollte auf EPP gestellt sein, glaube ich (sonst wirds 
wackelig oder geht gar nicht).

die konfiguration unter BASCOM AVR wie hier gezeigt:
http://www.rowalt.de/mc/avr/progd.htm

einfacher und billiger gehts nimmer und läuft auch einwandfrei. größere 
hex-files brauchen aber ein paar sekunden, bis sie übertragen sind.
mit einem AVRISP MKII (den ich sehr empfehlen kann, ca. 40€) geht es 
wesentlich schneller.



mit BASCOM AVR kannst du den controller auch in BASIC programmieren.
ich selber arbeite lieber im AVR-Studio in C.

kostenloser download BASCOM AVR:
http://mcselec.com/index.php?option=com_docman&task=doc_download&gid=139&Itemid=54

von Malte S. (maltest)


Lesenswert?

humus schrieb:
> wenn du einen parallelport am rechner hast

Was heutzutage eher selten ist. Ansonsten ist die wahrscheinlich 
günstigste Variante ein Tiny85/VUSB basierter USBASP wie der guloprog (< 
5 €). Kann man auch mit Tiny85, ein wenig Hühnerfutter und einem 
abgeschnittenen USB-Kabel auf dem Breadboard mit aufbauen - hat dann 
natürlich ein Henne-Ei-Problem, den Programme zu programmieren.

von humus (Gast)


Lesenswert?

Malte S. schrieb:
> humus schrieb:
>> wenn du einen parallelport am rechner hast
>
> Was heutzutage eher selten ist. Ansonsten ist die wahrscheinlich
> günstigste Variante ein Tiny85/VUSB basierter USBASP wie der guloprog (<
> 5 €). Kann man auch mit Tiny85, ein wenig Hühnerfutter und einem
> abgeschnittenen USB-Kabel auf dem Breadboard mit aufbauen - hat dann
> natürlich ein Henne-Ei-Problem, den Programme zu programmieren.

wobei man mit dem Parallelportprogger und einem Steckbrett auch das 
Henne-Ei-Problem gut lösen kann - PP am Rechner vorausgesetzt.

von Malte S. (maltest)


Lesenswert?

Stimmt, oder der hier: http://electronics-diy.com/avr_programmer.php für 
den seriellen Port. So einen hatte ich seinerzeit zum Flashen des ersten 
AVR-basierten AVR-Flashers verwendet. Bisschen mehr Bauteile als die 
PP-Variante, aber hat gewonnen, weil serielles Kabel mit offenem Ende 
schon da war, paralleles nicht.
Viele Wege führen nach (Flash)ROM.

von humus (Gast)


Lesenswert?

Malte S. schrieb:
> Stimmt, oder der hier: http://electronics-diy.com/avr_programmer.php für
> den seriellen Port.

Hübsches Teil, gefällt mir! Läuft der auch an einem 
USB-to-Seriell-Modul?

Weil ich sowieso früher viel über PP gesteuert habe, konnte ich direkt 
auf die Kabelage für den SP12 zurückgreifen. Der ist auch immer super 
gelaufen.
Lässt sich halt nur nicht direkt vom AVR-Studio aus ansprechen, deshalb 
BASCOM AVR als Brennsoftware benutzt. Und ist etwas langsamer als die 
neueren Brenner.

Was bei mir immer wackelig gelaufen ist, war ein nach Anleitung gebauter 
USBASP. Trotz endloser Fehlersuchen und Einstellung der Takt-f auf alle 
möglicher Werte hat er höchstens bei jedem dritten Versuch einen 
vernünftigwn Flash hinbekommen.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

humus schrieb:
> Hübsches Teil, gefällt mir! Läuft der auch an einem
> USB-to-Seriell-Modul?

Genau das funktioniert NICHT !

Die USB zu Seriell Module funktionen (meines Wissens nach) alle nach der 
Methode, ein Byte komplett zu versenden.

Die seriellen "Programmer" bedienen sich aber des "Bit-Bangings" bei dem 
die Pins der seriellen Schnittstelle gezielt auf 1 oder 0 gesetzt werden 
(und deshalb der UART Chip des PC direkt angesprochen wird).

Zu diesem Zweck hab ich einen (extrem günstigen) alten Thin-Client 
Computer (klein und für Microcontrollerprogrammierung absolut 
ausreichend) aus der Bucht besorgt, die es ab 12 Euro gibt.

Auf dem Thin-Client läuft ein Porteus Linux im Textmodus mit 
installiertem AVR-GCC 4.8.1 und AVRDUDE und einer selbstprogrammierten 
IDE im Turbo C Stil von Borland (Free Vison).

AVRDUDE kann dann diesen gezeigten Programmer als "ponyser" bedienen.

Ursprünglich war dieses Mini-Linux System dafür gedacht, einfach nur ein 
Werkzeug an die Hand zu geben um einen USBTINY - Chip oder einen USBASP 
zu flashen.

Mittlerweile programmiere ich die Chips tatsächlich nur noch aus der 
Textmodeoberfläche (allerdings NICHT mit einem "ponyser" Adapter).

Bei Bedarf kann ich vllt. dieses komplett installierte Linux als Version 
für einen Bootstick ins Internet stellen (um sich eben einen Flasher 
selbst basteln zu können).

Vorraussetzung für so etwas ist allerdings immer, ein echter RS232 
Anschluß  im Computer.

von Arthur (Gast)


Lesenswert?

Beeindruckend, was du da machst!!!!!

So ein Thin-Client ist eine Art Laptop ohne Bildschirm und Tastatur, 
könnte man sagen?!?

von Alexander S. (alesi)


Lesenswert?

Ralph S. schrieb:
> Vorraussetzung für so etwas ist allerdings immer, ein echter RS232
> Anschluß  im Computer.

Was einigen vielleicht nicht bewusst ist:
Auch auf aktuellen Mainboards sind auf der Platine oft noch
Stiftleisten-Anschlüsse für die serielle und parallele Schnittstelle.
Man muss sie nur mit einem passenden Kabel und Slotblech
nach außen führen.

von M. K. (sylaina)


Lesenswert?

Alexander S. schrieb:
> Auch auf aktuellen Mainboards sind auf der Platine oft noch
> Stiftleisten-Anschlüsse für die serielle und parallele Schnittstelle.

Seriell ja aber parallel? Das hab ich seit Jahren schon auf keinem 
handelsüblichen Mainboard mehr gesehen. Das war ja schon praktisch 2000 
veraltet.

von Paul B. (paul_baumann)


Lesenswert?

Michael K. schrieb:
> Seriell ja aber parallel? Das hab ich seit Jahren schon auf keinem
> handelsüblichen Mainboard mehr gesehen.

Aber ich -z.B. in den Rechnern von Fujitsu-Siemens (Esprimo), wie hier
vorhanden. Diese Rechner sind wunderbar: klein, sehr leise, alle 
erdenklichen Schnittstellen (bis auf Firewire) Mehrkernprozessor geht 
rein und nicht unheimlich teuer. Kann ich nur empfehlen.

Siehe hier:
https://www.rrze.fau.de/dienste/hardware/beschaffung/db_esprimo_e5925.pdf

(Gibt's auch noch bei etlichen anderen Leuten, war nur der erste Treffer 
beim Suchen.)

MfG Paul

von Alexander S. (alesi)


Lesenswert?

Michael K. schrieb:
> Seriell ja aber parallel? Das hab ich seit Jahren schon auf keinem
> handelsüblichen Mainboard mehr gesehen. Das war ja schon praktisch 2000
> veraltet.

Nur als Beispiel
MSI B85-G41 PC Mate  (wird aktuell z.B. von ARLT angeboten, Handbuch
ist von 2013)

Im engl. Handbuch auf S. 1-28
JLPT1: Parallel Port Connector
This connector is used to connect an optional parallel port bracket.

(pdf in zip verpackt)

http://de.msi.com/support/mb/B85-G41-PC-Mate.html#down-manual

von Ulrich F. (Gast)


Lesenswert?

Ralph S. schrieb:
> Die USB zu Seriell Module funktionen (meines Wissens nach) alle nach der
> Methode, ein Byte komplett zu versenden.
>
> Die seriellen "Programmer" bedienen sich aber des "Bit-Bangings" bei dem
> die Pins der seriellen Schnittstelle gezielt auf 1 oder 0 gesetzt werden
> (und deshalb der UART Chip des PC direkt angesprochen wird).
Die typischen FTDI haben einen Bit-Banging Modus.

von Paul B. (paul_baumann)


Lesenswert?

Ulrich F. schrieb:
> Die typischen FTDI haben einen Bit-Banging Modus.

Ich habe so ein Ding. Damit geht es, aber: Man kann sich 2x rasieren, 
bevor man einen Attiny2313 geladen hat.
Damit habe ich aber nur mal aus Interesse probiert, auf die Dauer 
benutze ich mehrere sog. AVR-DOPER, die an allen möglichen Rechnern über 
USB hängen.

MfG Paul

von F. F. (foldi)


Lesenswert?

Manuel B. schrieb:
> erste Gehversuche mit dem Atmega wagen?

http://www.ebay.de/itm/Nano-V3-0-Controller-Board-Compatible-with-Arduino-Nano-CH340-USB-Driver-no-cabl-/371436661150?hash=item567b59a99e

Damit und mit der Arduino IDE anfangen. "Costa fast gar nix!"

von Ralph S. (jjflash)


Lesenswert?

Arthur schrieb:

> So ein Thin-Client ist eine Art Laptop ohne Bildschirm und Tastatur,
> könnte man sagen?!?

Nein, ein Thin-Client ist ein PC auf das allernötigste reduziert, von 
der Konzeption ist ein Thin-Client daraufhin ausgelegt, ein minimalstes 
System zu booten um dann alle Daten und Programme von einem Server zu 
beziehen. Daher haben sie in aller Regel wenig RAM, extrem wenig 
Massenspeicher (Festplatte) und einen eher langsameren Prozessor.

Eingesetzt werden sie in hochvernetzten Betrieben wie Banken, 
Versicherungen oder großen Betriebe.

Durch ihre abgespeckte Hardware sind sie preiswerter als vollwertige 
PC's und haben dadurch, dass Programme und Betriebssystem zentral auf 
einem Server liegen einen geringeren Bedarf an Softwarewartung 
(Programme müssen "nur" auf dem Server gepflegt werden und alle 
Teilnehmer haben immer dieselbe Software). Desweiteren haben sie in 
aller Regel eine stark verminderte Stromaufnahme (meine beiden TC's 
benötigen 12 Watt)

Viele Thin-Clients haben keine wirkliche Festplatte sondern einen 
Flash-Speicher um Daten zu sichern (sogenanntes Disk on Module 
https://de.wikipedia.org/wiki/Disk_on_Module ).

Ist ein Betriebssystem jedoch sehr sparsam mit den Resourcen (wie mein 
verwendetes und modifiziertes Porteus - Linux) ist dieses darauf 
lauffähig.

Mein Bastel-Thin-Client ist ein HP T5000 mit 800 MHz Via Eden CPU (x86) 
und 256 MB Ram und ein Siemens Futro S400.

Wichtig bei einem solchen System ist, dass er erstens einen x86 - 
kompatiblen Prozessor hat und dass es von einem USB-Device bootfähig 
ist.

Mit 256 MB Ram lässt sich zur Not ein LXDE Desktop starten, 128 MB 
reichen für den Textmodus, weniger als 128 MB Ram reichen nicht aus.

Damit ich dann doch etwas mehr Massenspeicher habe, ist ein Nano 
USB-Stick mit 8 GB ständig eingesteckt.

Beispiel für einen Thin Client aus der Bucht auf dem das System läuft 
ist:

http://www.ebay.de/itm/FSC-Futro-S400-Thin-Client-Lautlos-AMD-Athlon-1GHz-256MB-256MB-B-Ware-vergilbt-/301581381327?hash=item4637a6aecf

oder grundsätzlich (nicht die Bucht):

http://www.parkytowers.me.uk/thin/info/hp.shtml

Ralph

PS: gerade hab ich n bissi gesurft und festgestellt, dass die Preise für 
gebrauchte Thin Clients im vgl. zu letztem Jahr sehr deutlich angezogen 
haben und auch mal 30 Euro bringen (dafür würde ich mir keinen kaufen, 
dafür finde ich die zu teuer ... :-) vllt. setze ich ja mal so ein AVR 
Programmiercomputer für den Raspberry Pi B++ um damit)

von Bernd K. (prof7bit)


Lesenswert?

Paul B. schrieb:
> Ich habe so ein Ding. Damit geht es, aber: Man kann sich 2x rasieren,
> bevor man einen Attiny2313 geladen hat.

Das erzieht einen dazu ressourcensparend zu programmieren, man übt sich 
außerdem im mentalen Debuggen des Codes (wie Schachspielen ohne Brett), 
und außerdem schont es noch den Flash-Speicher vor Abnutzung ;-)

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.