ATMega32L 32-16PU mit Ardiono und Alternativen

Hallo zusammen,
nach ein paar Jahren Stillstand (Nachwuchs und Hausbau) hat mich nun wieder das AVR basteln gepackt. Es ist schon erstaunlich was sich da in den letzten Jahren getan hat. Derzeit arbeite ich mit einem Uno R3.
Dieser versorgt nun ein 340x240 Touch Farb-TFT und da werden nun die Pins knapp.
Jetzt habe ich folgende Möglichkeiten:

  1. Mega2560 wobei das wieder ein fertiges Board wäre und etwas übers Ziel hinaus geschossen
  2. 2x Mega328 und diese mittels SPI/TWI/I2C oder sonst was kommunizieren lassen
  3. Ein Mega3216PU Da habe ich noch 4-5 rumliegen aus vergangenen Zeiten

3tens wäre mir im Moment am liebsten. Der Mega3216 hat genug Pins und ich kann alles in einem Chip unterbringen sowie auf eine eigene Platine (platzsparend) auflöten. Würde die Programmierung auch etwas einfacher halten.

2tens OK immer noch besser als ein viel zu grosses Mega2560 Board das ich nicht brauche. Weiterer Vorteil ich hätte einen Controller nur fürs LCD und sonst so allgemeines Zeug und einen Controller der die Ein und Ausgänge bedient und so gesehen doppelten Speicher :slight_smile: Nachteil ist das man nun zwei Controller hat die man programmieren und in Einklang bringen muss.

Kann man denn nun einen Mega3216PU problemlos mit Arduino programmieren?
Ich habe schon eine ganze Weile im Netz gesucht und nur Bröckchenweise was gefunden. Unter anderem folgendes:
https://github.com/eaconner/ATmega32-Arduino
Dachte mir da erst "hmm Ok wenn das so einfach ist"...aber wenn es so einfach wäre warum ist das dann nicht per DEFAULT von Arduino unterstützt. Oder fängt mit sowas die Bastelei erst an, weil man ggf. in irgendwelchen zusätzlichen Libs (UTFT,DS1820,Ultraschall,ect.pp) dann noch anfangen muss irgendwas zu ändern aufgrund anderem Pinout des AVR. Schliesslich sind die Libs ja auch nicht für einen 3216 geschrieben.
Und dann noch, gibt es denn einen Bootloader für die 3216 Controller? Klar braucht man eigentlich ja nur wenn man die nicht per ISP programmiert. Aber wäre ein "nice to have"

Ich nutze z.B die UTFT & UTouch von Henning Karslen. Dann noch eine Lib zum auslesen alter DS1820 Sensoren, einen Ultraschallsensor SRF04,EEprom speichern und lesen und und und. Wie das ja so ist ein Projekt wächst und wächst :slight_smile:

Danke schon mal im voraus

LG Dominic

PS: Projekt ist, wie es schon haufenweise gibt, ein Highspeed Trigger für meine DSLR der dann auf Ton,Kontakt,Licht, Lichtschranke, Intervall/Zeitraffer und was mir noch so einfällt reagieren kann. Ziel ist es um unter anderem Highspeed Aufnahmen zu machen mithilfe von Systemblitzen da diese eine extrem kurze Abbrenndauer haben.

Am besten ist sowas immer auf einen MCU zu bekommen aus dem Grund, denn du bereits nanntest. Was ist so verkehrt am 2560?

Welches 320x240 TFT?

Es gibt den 2560er auch im Arduino Uno Format. http://www.exp-tech.de/Mainboards/Seeeduino-Mega-Atmega-2560.html

Hi,
Oh das es den Mega2560 auch im Uno Format gibt wusste ich nicht.
Unabhängig davon hat man so halt immer ein komplettes Board das man fest verbaut. Wenn ich es auf eine eigene Platine löten kann dann kann ich das natürlich minimalistisch halten bzw. ich kann halt Ein-und Ausgänge direkt ab Platine mit Kabeln auf Stecker und so löten. Oder bei einer selbst gerouteten Platine die Pins direkt an entsprechende Stecker/Buchsen und weitere Peripherie hängen. Deswegen die Idee mit dem 3216. Den kann man noch vernünftig aufm Sockel verbauen. Den 2560 verlötet man ja nicht mehr einfach so.

TFT ist das hier: http://eud.dx.com/product/2-8-tft-lcd-touch-shield-module-for-arduino-silver-blue-black-844223437

LG Dominic

Wenn schon was in DIP40, dann einen Atmega1284. Der hat sogar mehr RAM als der Atmega2560. Und es gibt einen aktuellen Arduino Core dafür:
http://www.leonardomiliani.com/en/2014/atmega644p1284p-nuovo-core-per-lide-1-5-7-di-arduino/

Der sieht natürlich verdammt interessant aus. Da werde ich mal etwas genauer nachschauen. Ordentlich Flash, mehr RAM und 20MHZ. Das ist schon was. :slight_smile:

Das es eine Core gibt heißt?
Also auch das es dafür einen Bootloader gibt um den dann via USB (klar man braucht dann noch nen zusätzlichen Chip für USB<-> Seriel) zu programmieren? Wie bei den Standard-Boards?

LG Dominic

Wenn du mit der Arduino Software programmieren willst und entsprechende Libraries verwendest, dann brauchst du Dateien die diesen Code auf den entsprechenden Prozessor umsetzten. Und das gibt es nicht für alle Atmel Prozessoren. Der Atmega1284 bietet sich da an da er wirklich das perfekte Mittelstück zwischen 328 und 2560 ist. Viel Speicher, mehr Pins und zwei serielle Schnittstellen. Und das in DIP40.

Hab den noch gestern Abend bestellt. Hoffe das gute Stück kommt noch zum Wochenende (Warensendung). Dann kann ich da gleich mal losbasteln. :slight_smile:

LG Dominic

1284P-PU hoffentlich. Da muss etwas aufpassen.

Hier gibt es auch noch einen Core für die 1.0.5 Version wenn du nicht die ganz aktuelle Beta IDE hast:
http://www.leonardomiliani.com/?wpfb_dl=39

Wie es man es installiert ist in der Readme erklärt. Man kann da auch über USB programmieren, wenn du einen USB/TTL Wandler an die serielle Schnittstelle anschließt (was anderes machen die normalen Arduino Boards auch nicht) und den Bootloader installierst.
Da ist auch erklärt wie man einen anderen Arduino als Programmiergerät verwendet.

Diese Dateien basieren auf dem hier, aber sind aktueller:

Da stehen unten auch die Pin-Belegung mit den Arduino Pins

Was auch schön ist, dass man vier komplette Ports hat und die Nummerierung anders als auf den Arduino Boards oft nicht völlig durcheinander ist.

Was aber bei manchen Libraries sein kann, ist dass man sie etwas anpassen muss. Da das kein verbreiteter Prozessor ist - und manchen Libraries Fall-Unterscheidungen machen je nach dem was man hat - muss man manchmal ein entsprechendes Makro hinzufügen damit der richtige Code verwendet wird. Sowas:

#elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__)|| defined(__AVR_ATmega1284P__)

Vielen Dank für die ganzen Infos und Hinweise.
Ich werd mich ausgiebig dran versuchen :slight_smile:

LG Dominic