Forum: Mikrocontroller und Digitale Elektronik Grundsätzliches zum Atmega256


von Dirk (Gast)


Lesenswert?

Hallo zusammen.
Für ein neues Projekt (RGB Cube) möchte ich endlich mal einen Atmega mit 
256kB verwenden. Muss ich da etwas bestimmtes beachten?

1. Verläuft die Grundbeschaltung wie bei kleineren Atmega (z.B. 
Atmega8)? Das heißt Quarz mit zwei mal 22pF, ISP über MISO MOSI & Co 
oder gibt es da Unterschiede oder Zusätze, die ich beachten muss? Im 
Grunde soll der Atmega vernünftig laufen, über ISP (10 poliger 
Wannenstecker) programmierbar sein und alle PortPins auf Wannenstecker 
führen. Ich ätze die Platine und frage lieber, bevor ich etwas vergesse 
:)

2.
Gibt es einfache Sprungbefehle ala jmp und call oder ähnlich, mit denen 
ich in Funktionen und zurück springen kann? Hatte über Probleme mit 
Adressgrößen und SPrungweiten gelesen... Sonst würde ich einen Atmega 
mit 128 kB nehmen, wenn das sonst zu aufwendig wird.

3.
Ich programmiere den Atmega256xx in Assembler mit AVR Studio 4. Das 
sollte kein Problem für ACR STudio sein, gell? Blöde frage...

Liebe Grüße und vielen Dank,
Dirk

von Falk B. (falk)


Lesenswert?

@  Dirk (Gast)

>Für ein neues Projekt (RGB Cube) möchte ich endlich mal einen Atmega mit
>256kB verwenden. Muss ich da etwas bestimmtes beachten?

Mehr oder weniger.

>1. Verläuft die Grundbeschaltung wie bei kleineren Atmega (z.B.
>Atmega8)?

Ja.

>Gibt es einfache Sprungbefehle ala jmp und call oder ähnlich, mit denen
>ich in Funktionen und zurück springen kann?

Ja sicher.

>Ich programmiere den Atmega256xx in Assembler mit AVR Studio 4.

Einen Controller mit 256kB Flash per Assembler programmieren ist nicht 
sonderlich sinnvoll. Bei solchen Größen nimmt man C.

> Das
>sollte kein Problem für ACR STudio sein, gell? Blöde frage...

In der Tat.

MFG
Falk

von Dirk (Gast)


Lesenswert?

Hallo Falk.

Schonmal danke für die ersten Infos.
Warum kein Assembler? Komme damit ganz gut klar und weiß gerne, wieviel 
Takte der Mikrocontroller nun wirklich braucht.

Ein großer Teil des Flashspeichers fülle ich ja mit Bilddaten. Die 
eigentlichen Funktionen und Programmabläufe sind insgesamt vielleicht 
1-2 kByte groß. Also so unübersichtlich wird es sicher nicht.


Gruß,
Dirk

von Thomas R. (Gast)


Lesenswert?

Dirk schrieb:
> ISP über MISO MOSI & Co
> oder gibt es da Unterschiede oder Zusätze, die ich beachten muss?

Das geht da nicht, da werden die UART-Pins verwendet.

von spess53 (Gast)


Lesenswert?

Hi

>Grundsätzliches zum Atmega256

Einen ATMega256 gibt es nicht. ATMega2560 oder ATMega2561.

> ISP über MISO MOSI & Co

Kommt auf den ATMega an:

ATMega2560   MSIO, MOSI und Co
ATMega2561   TXD0, RXD0, SCK

MfG Spess

von Dirk (Gast)


Lesenswert?

Also mit einem Atmega 2560 sollte ich meine geliebte ISP Schnittstelle 
nutzen können, gell?

Vielen Dank für den Hinweis. Denn 12 Euro sind schon ärgerlich für nenn 
Controller, der sich dann nicht programmieren lässt.

Jetzt kenn ich auch endlich mal einen Unterschied zwischen ATmega2560 
und 2561.

Dankeschön!
Dirk

von Falk B. (falk)


Lesenswert?

@  Dirk (Gast)

>Warum kein Assembler?

Weil man bei 256kB Programm mal fix den Überblick verliert.

>Komme damit ganz gut klar und weiß gerne, wieviel
>Takte der Mikrocontroller nun wirklich braucht.

Braucht man nur selten. Und auch in C kann man im Simulator Takte 
zählen.

>Ein großer Teil des Flashspeichers fülle ich ja mit Bilddaten. Die
>eigentlichen Funktionen und Programmabläufe sind insgesamt vielleicht
>1-2 kByte groß. Also so unübersichtlich wird es sicher nicht.

Dann ist das OK. Wenn gleich man dann möglicherweise mit einem seriellen 
EEPROM oder Flash besser dran ist.

MfG
Falk

von Dirk (Gast)


Lesenswert?

Vielen Dank Leute für die Hilfe. Sehe mich nun Fit für erste Versuche 
mit dem Atmega2560.

Aber eins interessiert mich noch. Wieso kann der nur einen 16 und keinen 
20 MHZ Quarz ab? Der Atmega644 hatte das noch super hinbekommen...

MfG,Dirk

von spess53 (Gast)


Lesenswert?

Hi

>Also mit einem Atmega 2560 sollte ich meine geliebte ISP Schnittstelle
>nutzen können, gell?

Das ist die ISP-Schnittstelle. Bei den 64-poligen AVRs werden nur 
statt der MISO/MOSI-Pins, TXD0/RXD0 verwendet.

MfG Spess

von Detlev T. (detlevt)


Lesenswert?

Dirk schrieb:
> Ein großer Teil des Flashspeichers fülle ich ja mit Bilddaten.

Auch einmal an einen externen Speicherbaustein gedacht? Dataflash?

von Dirk (Gast)


Lesenswert?

Hab noch nie etwas mit externen Datenbausteinen gemacht. Wie krieg ich 
denn die Daten da hinein? Und wie von da in den Atmega?

Am besten wäre natürlich ich packe Bilddaten auf einen USB Stick und 
schließ den an die Platine (Mikrocontroller) an. Aber wie aufwendig wird 
das wohl...?


Bleib erstmal bei meinen 256kB RiesenFLASH :D Das Projekt hat Baustellen 
genug.

Gruß,Dirk

von ... (Gast)


Lesenswert?

Dirk schrieb:
> Am besten wäre natürlich ich packe Bilddaten auf einen USB Stick und
> schließ den an die Platine (Mikrocontroller) an. Aber wie aufwendig wird
> das wohl...?
Vergiss es.

Wenn Du allerdings SD/MMC Karten in Erwägung ziehen würdest, dann wäre 
sowas möglich. Beispiele dafür findest Du hier im Wiki/in der 
Codesammlung mehr als genug.

von Detlev T. (detlevt)


Lesenswert?

Dirk schrieb:
> Am besten wäre natürlich ich packe Bilddaten auf einen USB Stick und
> schließ den an die Platine (Mikrocontroller) an. Aber wie aufwendig wird
> das wohl...?

Das geht nicht, aber eine SD-Card lässt sich leicht auslesen und am PC 
beschreiben. Ein Dateisystem braucht es da nicht unbedingt.

von spess53 (Gast)


Lesenswert?

Hi

Warum wird eigentlich die kompliziertere Variante favorisiert. Alles im 
AVR zu haben ist doch wohl die einfachere Sache.

MfG Spess

von ... (Gast)


Lesenswert?

spess53 schrieb:
> ... Alles im AVR zu haben ist doch wohl die einfachere Sache.

Solange die Bilddaten da nur einmal rein müssen und sich nicht mehr 
ändern, hast Du sicher recht.
Bei neuen Bilddaten jedesmal den AVR neu flashen zu müssen wäre mir aber 
auf Dauer zu blöd. Und die Idee mit dem USBStick kam ja schließlich vom 
TO selber.

von Dirk (Gast)


Lesenswert?

So, jetzt hat der Mikrocontroller(Atmega2560) auf jeder Seite einen GND 
und ein VCC. Muss ich die alle verbinden, oder reicht es, wenn ich Masse 
und 5V an eine Seite davon lege?

Gruß,
Dirk

von Falk B. (falk)


Lesenswert?

@  Dirk (Gast)

>So, jetzt hat der Mikrocontroller(Atmega2560) auf jeder Seite einen GND
>und ein VCC. Muss ich die alle verbinden,

Ja.

> oder reicht es, wenn ich Masse
>und 5V an eine Seite davon lege?

NEIN!

MFG
Falk

von spess53 (Gast)


Lesenswert?

Hi

Und alle VCC-GND-Paare wollen eine Abblockkondensator.

MfG Spess

von Dirk (Gast)


Lesenswert?

...also immer 100 nF zwischen GND - Vcc ?

Danke für die Info!

Ich zeichne grad einen Schaltplan. Wenn ich den fertig habe, stell ich 
ihn mal rein. Wäre super wenn ihr mal drüber guckt. Keine Sorge, kommt 
nur das nötigste drauf. Schön Schlank...

Dirk

von guest (Gast)


Lesenswert?

Wenn Du Stackoperationen ausführst darauf achten,
dass bei Unterprogrammen drei Bytes in den Stack
geschoben werden und nicht zwei.
AVCC auch anschließen.

von Dirk (Gast)


Lesenswert?

Stackoperationen sind doch die einfachen pop und rol Befehle. Muss ich 
da etwas ergänzen?

Avcc auch mit Kondensator gegen Masse?

Gruß Dirk

von ... (Gast)


Lesenswert?

Dirk schrieb:
> Avcc auch mit Kondensator gegen Masse?

Ja

von Dirk (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Schaltplan. Ich bitte um Kritik :)

Vielen Dank,
Dirk

von Thomas R. (Gast)


Lesenswert?

Der AREF-Kondensator fehlt.

von ... (Gast)


Lesenswert?

Wozu soll die Diode da am Reset-Pin gut sein?

von ... (Gast)


Lesenswert?

Ok, mit der Diode hab ich falsch gesehen. Kann man so machen.

von Dirk (Gast)


Lesenswert?

Die Reset Beschaltung habe ich aus einem Fachbuch übernommen. AREF 
brauche ich doch nur, wenn ich den AD Wandler nutzen will, oder?

Will eigentlich nur viele hundert RGB LEDs ein- und ausschaltung :)
...über Schieberegister.

Gruß,
Dirk

von Thomas R. (Gast)


Lesenswert?

Dirk schrieb:
> AREF
> brauche ich doch nur, wenn ich den AD Wandler nutzen will, oder?

stimmt!

von Dirk (Gast)


Lesenswert?

Beim Atmega32 hatt ich mal ein Problem, dass sich ein paar Pinne vom 
PortC nicht nutzen ließen, da sie auf JTAG eingestellt waren. Habe das 
nie so richtig verstanden. Gibt es beim ATmgea2560 auch dieses Problem, 
dass mir an einen einem Port nicht alle Pinne zur Verfügung stehen?

Kennt jemand das Problem?

Gruß,
Dirk

von spess53 (Gast)


Lesenswert?

Hi

>Beim Atmega32 hatt ich mal ein Problem, dass sich ein paar Pinne vom
>PortC nicht nutzen ließen, da sie auf JTAG eingestellt waren. Habe das
>nie so richtig verstanden. Gibt es beim ATmgea2560 auch dieses Problem,
>dass mir an einen einem Port nicht alle Pinne zur Verfügung stehen?

Ja. Aber dort liegt das JTAG-Interface auf PortF. Einfach per JTAG-Fuse 
oder Software deaktivieren, fertig.

MfG Spess

von ... (Gast)


Lesenswert?

Dirk schrieb:
> Kennt jemand das Problem?

Ja, beim 2560 sind es die Pins PF4-PF7, steht auf Seite 89 im 
Datenblatt.
Man sollte auch den Rest ab Seite 296 lesen, insbesondere die Seiten 297 
und 308.

Kurz: Wenn JTAG enebled ist (das ist der default), dann sind diese Pins 
nicht als IO nutzbar. Disablen kann man JTAG auf zwei Arten, entweder 
per JTAGEN Fuse oder programmatisch durch Setzen des JTD Bits im MCUCR 
Register.

von Dirk (Gast)


Lesenswert?

Vielen Dank euch. Denke, das kriege ich hin.
Wenn ich JTAG per Software im MCUCR Register deaktiviere, ist das dann 
für immer deaktiviert, auch wenn ich mal ein anderes Programm in den 
Flash brenne? Oder stellt ein Reset den alten (JTAG aktiv) Zustand 
wieder her?

Fusebits lassen sich nicht per Software setzen, oder?


Woher habt ihr soviel Ahnung von Atmegas? WOW! :) Arbeitet ihr beruflich 
damit? Werden Atmega Mikrocontroller viel in der Wirtschaft eingesetzt 
oder sind es fast reine Hobby Controller?

Mache in einem Monat meinen Abschluss als Elektrotechniker und überlege 
mich im Bereich Mikrocontroller und Programmierung zu bewerben. Berufe 
mit AVRs wären natürlich mein Traum!

Gruß, Dirk

von ... (Gast)


Lesenswert?

Dirk schrieb:
> Wenn ich JTAG per Software im MCUCR Register deaktiviere, ist das dann
> für immer deaktiviert, auch wenn ich mal ein anderes Programm in den
> Flash brenne?

Nein

Dirk schrieb:
> Oder stellt ein Reset den alten (JTAG aktiv) Zustand
> wieder her?

Ja

Dirk schrieb:
> Fusebits lassen sich nicht per Software setzen, oder?

Nein

Dirk schrieb:
> Woher habt ihr soviel Ahnung von Atmegas?

Datenblatt lesen!!!

Dirk schrieb:
> Arbeitet ihr beruflich damit?

Nein

von ... (Gast)


Lesenswert?

Noch vergessen

Dirk schrieb:
> Woher habt ihr soviel Ahnung von Atmegas?

Foren lesen :)
Insbesondere hier und die englische Variante http://www.avrfreaks.net

von spess53 (Gast)


Lesenswert?

Hi

>Foren lesen :)

Brauchst du nicht, wenn du die Datenblätter und die AppNotes richtig 
liest.

MfG Spess

von Alles im Lot (Gast)


Lesenswert?

Dirk schrieb:
> Werden Atmega Mikrocontroller viel in der Wirtschaft eingesetzt
> oder sind es fast reine Hobby Controller?

LOL Hobby Controller. Wenn eine Firma extra für Hobbyisten entwickeln 
würde, die alle winzigste Stückzahlen kaufen, müssten sie wahrscheinlich 
dreistellige Beträge für einen Tiny verlangen.

von Dirk (Gast)


Lesenswert?

Hi, nochmal eine Frage.

Gibt es einen Sockel für SMD mit 100 Pinnen, damit ich den Atmega 2560 
nicht anlöten muss? Sollte ich den doch irgendwie verfusen oder anders 
zerstören, würde ich ungern alle 100 Lötpunkte lösen...
Bei Reichelt gibts nur Sockel bis 64 Pin. Was macht ihr denn, wenn ihr 
so einen großen Mikrocontroller verbaut?

Gruß,
Dirk

von spess53 (Gast)


Lesenswert?

Hi

>Gibt es einen Sockel für SMD mit 100 Pinnen, damit ich den Atmega 2560
>nicht anlöten muss? Sollte ich den doch irgendwie verfusen oder anders
>zerstören, würde ich ungern alle 100 Lötpunkte lösen...

Gibt es schon. Aber den willst du nicht wirklich bezahlen. Sieh dir mal 
das an:

http://www.elk-tronic.de/Products/Adapter/SolderAdapter/SolderAdapter.htm#QFP100

>Bei Reichelt gibts nur Sockel bis 64 Pin.

Aber nicht für TQFP.

>Was macht ihr denn, wenn ihr so einen großen Mikrocontroller verbaut?

Keine Fehler.

MfG Spess

von Dirk (Gast)


Lesenswert?

Mein größte Sorge sind ja die Fuse Bits. Habe da noch nicht soviel 
Erfahrung. Will ja auf einen externen 16 Mhz Quarz umstellen und JTAG 
deaktivieren um alle Ports komplett nutzen zu können.

Auch hab ich Angst den Controller zu "grillen" wenn ich so viele Pinne 
anlöte.

Gebe ihm einfach abkühlpausen und werde nochmal Hilfe Schreien wenn ich 
bei den Fuses bin und genau schreiben, was ich mit den Fusebits 
bezwecken und wie ich die setze. Wäre total nett, wenn sich das dann 
jemand mal anschaut, bevor ich den Atmega versaue.

Gruß,
Dirk

von spess53 (Gast)


Lesenswert?

Hi

Bist du sicher, das du überhaupt den 100-pol. brauchst? Mit 256k-Flash 
gibt es auch noch den ATMega2851 im etwas freundlicheren 64-Pin-Gehäuse.

MfG Spess

von Dirk (Gast)


Lesenswert?

Du meinst ATMega2561, oder?

So viele Port Pins sind schon schön :)

Ist ja für nenn RGB-Cube mit 8x8x8 LEDs.
Will diese mit 8 Ports (64) Leitungen ansteuern. An jeder Leitung noch 
ein 8bit-Schieberegister um auf die 512 zu kommen. Über den ULN2803 
ziehe ich die LEDs dann auf Masse.

Über Multiplexing schalte ich dann abwechselnd Spannung an die einzelnen 
Farbkanäle der RGB LEDs. Dafür nehme ich Mosfets. So der Plan.

Hab dann sogar noch ein paar Leitungen für Bedien- oder Anzeigeelemente 
frei. 86 Portpins sind schon geil :) Will einfach mal was umfangreiches 
bauen.

...und ja ich weiß, man kann Schieberegister auch kaskadieren. Will 64 
Bit nunmal parallel ausgeben. Ist ein paar Takte schneller.

Gruß, Dirk

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.