Hallo, ich bin neu hier und generell neu was Mikrocontroller angeht. Ich habe schon ein paar sehr grundlegende Erfahrungen mit Atmel Studio und einem ATMega 328 controller gesammelt (LEDs blinken lassen und so ..). Jetzt möchte ich mein erstes wirkliches "Projekt" umsetzen. Der ATMega 328 ist ja schön und toll, aber ich brauche viel (Programm-) Speicher und viele IOs. Warum viel Programmspeicher? Ich möchte nicht dass mir mitten während der Umsetzung meines Projekts der Speicher ausgeht und ich einen anderen Controller und die Schaltung bzw die Leiterplatte neu auslegen muss. Warum viel IOs? Weil ich einiges an "User Interface" - Zeug möchte. (ein großes 4x40 Zeichen LCD, eine 4x3 Tastatur für numerische Eingaben, ein paar Taster, Drehimpulsgeber, und dann natürlich noch ein paar IOs für die Kommunikation mit anderen Geräten, also I2C RS232 und so). Gut, soviel zu "was ich will". Jetzt zu den eigentlichen Fragen: Gibt es Mikrocontroller in "bastlerfreundlichen" (also kein BGA oder QFN) Gehäusen die sehr viel Programmspeicher haben und die mit Atmel Studio 6 und dem AVRISP mk2 programmer kompatibel sind? Den SRAM ("Datenspeicher") kann man ja ganz einfach mit externen Speicher Chips erweitern. Ist es möglich von externen Speichern Code auszuführen? Wäre toll wenn ich ein paar Antworten / Empfehlungen bekommen könnte.
Frodo G. schrieb: > Den SRAM ("Datenspeicher") kann man ja ganz einfach mit externen > Speicher Chips erweitern. Naja... Wenn ich mir ATMega328 anschaue, dann sehe ich da nix von "einfach". Frodo G. schrieb: > Ist es möglich von externen Speichern Code auszuführen? Es ist eine prinzipielle Eigenschaft, von Harvard µC, eben genau dieses nicht zu können. Es mag Exoten geben, welche dazu in der Lage sind. Vielleicht möchtest du dich ja doch mal in der STM32 Ecke umschauen..... Oder wenn es unbedingt Atmel Studio sein soll, gibt es die SAM Familie. Die auch auch ein paar besondere Exemplare in ihren Reihen aufzuweisen hat.
Vielleicht solltest du dich aus der 8-Bit Welt verabschieden. Ich habe letztens mit so etwas gespielt https://www.distrelec.de/de/board-stm32-nucleo-2mb-1mb-st-nucleo-h743zi2/p/30176564 Der hat 1M Flash und ähnlich Ram. Das reicht für Monate. Und dank der Arduino-ähnlichen Header kommt man an alle Signale. Man muss sich von der Arduino-Oberfläche verabschieden, aber STM hat eine Cube-IDE, die auch ganz gut funktioniert. Und irgendwann muß man den Laufstall ja verlassen.
" Schau dir den Arduino Mega 2560 an. " Ohhh, das sieht ziemlich gut aus! Mehr als genug IOs! 256 kB Flash Speicher? Keine Ahnung ob das zu viel, genug oder zu wenig ist ... Ich habe noch keine wirkliches Gefühl dafür was wieviel Programmspeicher braucht ... Ich habe ein wenig Erfahrung mit C++ Anwendung für PCs und selbst einfache Anwenungen sind meist riesengroß (hunderte KB bis einige MB). Ich weiß aber auch dass man das nicht vergleichen kann ... Also entschuldigung wenn ich falsche Ansprüche habe ...
:
Bearbeitet durch User
PittyJ schrieb: > Man muss sich von der Arduino-Oberfläche verabschieden, Die verwendet der TE gar nicht.
PittyJ schrieb: > Vielleicht solltest du dich aus der 8-Bit Welt verabschieden. > Ich habe letztens mit so etwas gespielt > https://www.distrelec.de/de/board-stm32-nucleo-2mb-1mb-st-nucleo-h743zi2/p/30176564 > Der hat 1M Flash und ähnlich Ram. Das reicht für Monate. > Und dank der Arduino-ähnlichen Header kommt man an alle Signale. > > Man muss sich von der Arduino-Oberfläche verabschieden, aber STM hat > eine Cube-IDE, die auch ganz gut funktioniert. > Und irgendwann muß man den Laufstall ja verlassen. Ich habe die Arduino "IDE" nie ernsthaft verwendet. (Ich habe nie verstanden warum dieses "Arduino"-Zeugs so beliebt ist) Wir haben damals in der Schule ein wenig was mit Atmel Studio gemacht, deswegen verwende ich das. Ja, ich verstehe dass die 8 bit Architektur nur eine gewisse Größe an Speicher unterstützt. Es muss nicht zwingend 8 bit sein, ich habe prinzipiell nichts gegen mehr bits.
Den ATmega 1284 gibt es im 40 Poligen PDIP Format. 128 kB Flash, 16 kB RAM Als externen Speicher empfehle ich FRAM mit I²C Schnittstelle. Das ist einfach anzuwenden und behält seine Daten bei Stromausfall, taugt allerdings nicht als Arbeitsspeicher. Zum Beispiel https://de.aliexpress.com/item/1005002592962987.html Frodo G. schrieb: > Ist es möglich von externen Speichern Code auszuführen? Bei den allermeisten AVR Modellen: nein
Frodo G. schrieb: > Warum viel Programmspeicher? > Ich möchte nicht dass mir mitten während der Umsetzung meines Projekts > der Speicher ausgeht und ich einen anderen Controller und die Schaltung > bzw die Leiterplatte neu auslegen muss. > > Warum viel IOs? > Weil ich einiges an "User Interface" - Zeug möchte. > (ein großes 4x40 Zeichen LCD, eine 4x3 Tastatur für numerische Eingaben, > ein paar Taster, Drehimpulsgeber, und dann natürlich noch ein paar IOs > für die Kommunikation mit anderen Geräten, also I2C RS232 und so). Ein Arduino MEGA hat mehr als genug Speicher und IOs, als daß du sie mit dem bissel Kram auslasten könntest.
Falk B. schrieb: > > Ein Arduino MEGA hat mehr als genug Speicher und IOs, als daß du sie mit > dem bissel Kram auslasten könntest. Gut, dann werde ich mir das wahrscheinlich zulegen.
Frodo G. schrieb: > Ist es möglich von externen Speichern Code auszuführen? Bei Mikrocontrollern eher nicht. Mikroprozessoren haben ein Speicherinterface, sowohl für SRAM als auch für Programmspeicher. > Warum viel IOs? Zusätzliche I/Os kann man in fast beliebiger Menge über I2C oder SPI anbinden.
H. H. schrieb: > Schau dir den Arduino Mega 2560 an. ich sehe nur 8K SRAM, da wäre mir der m1284p lieber. Gibts aber nur als Arduino Clones: Bobuino, mighty mini 1284p, sleeping beauty 1284p sind aber alle obsolet ergo zum ESP32 wechseln und büffeln, 3,3V hardware ist ein anderes Thema. Ports kann man leichter erweitern als SRAM Aber wer so fragt trollt oder schafft es ohne echte eigene Vorarbeit NIE sich in einen Prozessor einzuarbeiten, externe Hardware anzuschliessen, ein eigenes Programm zu schreiben, kein C&P.
Joachim B. schrieb: > Gibts aber nur als Arduino Clones Oder dort als Original: https://www.reichelt.de/8-bit-atmega-avr-mikrocontroller-128-kb-20-mhz-dip-40-atmega-1284p-pu-p112738.html https://www.reichelt.de/8-bit-atmega-avr-mikrocontroller-128-kb-20-mhz-tqfp-44-atmega-1284p-au-p112737.html
Ich weiss nicht weshalb du "Externen Speicher" willst, Vielleicht wegen der beliebig often Programmänderung? Wen ja gibt es da von der FR Serie der MSP430FRxxx. Diese sind beliebig oft "Reprogrammierbar" und der Programmspeicher lässt sich auch als NV-Ram verwenden. Und da gibt es recht einfache Typen. Wenn ich viel RAM benötige verwende ich externe SPI oder I²C Speicher. Dazu stellt TI extra Tools zur Verfügung.
Frodo G. schrieb: > sehr viel Programmspeicher Heißt was genau? Wenn Du keine Bankumschaltung machen willst ist bei 64KB Schluss bei den 8bittern. Mehr können die nicht adressierem Also was heißt viel? 128K? 1MB? 100TB? Reinen ausführbaren Programmspeicher? Wieviel Code kannst Du denn schreiben um compiliert >64KB zu bekommen? Datenberge kannst Du jederzeit auf SD Karte auslagern. IOs: Verwende I²C Bus Expander für das Pinwackel IO Gefriggel. Das erste 'richtige' Projekt und Du willst gleich in die Stratosphäre vordringen? Fang mal erstmal an und bekomme ein Gefühl dafür was Du wirklich brauchst.
Prokrastinator schrieb: > Frodo G. schrieb: >> sehr viel Programmspeicher > > Heißt was genau? > Wenn Du keine Bankumschaltung machen willst ist bei 64KB Schluss bei den > 8bittern. > Mehr können die nicht adressierem Ja, das macht Sinn, das ist ja der größte Nachteil bei den 8bits. > Also was heißt viel? > 128K? 1MB? 100TB? > Reinen ausführbaren Programmspeicher? > Wieviel Code kannst Du denn schreiben um compiliert >64KB zu bekommen? "Sehr viel Speicher" bedeutet dass ich ein paar sehr große Arrays (>> 10000 elemente pro array und ein paar davon) speichern möchte. Das bei einem µC der "Programmspeicher" und der "Datenspeicher" separat sind ist eine Tatsache an die ich mich erst noch gewöhnen muss. Also wahrscheinlich brauche ich nicht unbedingt so extrem viel Programmspeicher sondern nur extrem viel Datenspeicher, aber sicher ist sicher. Genug Speicher kann man nie haben, oder? > Datenberge kannst Du jederzeit auf SD Karte auslagern. Ich habe keine Ahnung wie man das macht. Aber ich denke um eine .txt Datei auf eine SD Karte zu schreiben bräuchte man irgendein OS das Treiber für solche Sachen hat, oder? Deshalb möchte ich vorerst noch von solchen Sachen wegbleiben. > IOs: > Verwende I²C Bus Expander für das Pinwackel IO Gefriggel. > > Das erste 'richtige' Projekt und Du willst gleich in die Stratosphäre > vordringen? > Fang mal erstmal an und bekomme ein Gefühl dafür was Du wirklich > brauchst. Was? Was an dem Wunsch nach viel Speicher ist denn so komplex? Vielleicht habe ich auch etwas falsch verstanden.
Unveränderliche Arrays können im Programmspeicher liegen.
Nicht Dein Wunsch ist komplex. Du hast nur noch fast keine Ahnung von MCUs und willst irgendein gigantoprojekt machen ohne irgendeine Vorstellung was Du dazu für eine MCU brauchst. Bei einem Raspi mit OS und MMU brauchst Du Dich um fast nix zu kümmern. Bei der MCU machst Du jedes, wirklich jedes scheiß klein klein selbst. Du hast aber keinen Plan wie Du SD karten ansprechen kannt und wie Du Daten von extern nach intern herumschaufelst. Du willst gigantische Arrays im Speicher halten, die dann von einer schmalbrüstigen MCU durchgeackert werden sollen? Nehm einen Raspi und tob Dich aus. Der Zero kost fast nix und bietet viel. Für massig IOs nimmt man doch nicht zwangsläufig eine riesen MCU. Dafür wurden Port expander gemacht. Stefan ⛄ F. schrieb: > Unveränderliche Arrays können im Programmspeicher liegen. Ja, Zeichensätze, Sinustabellen etc. Solange der TO die nicht bearbeiten will und genug Codespeicher hat, geht das.
Stefan ⛄ F. schrieb: > Unveränderliche Arrays können im Programmspeicher liegen. Ja, aber in diese Arrays soll geschrieben werden und aus den Arrays sollen Daten ausgelesen werden können. Ich denke ich werde für die Arrays einen fetten externen Speicher nehmen. 16 Giga-Bit dürften mehr als ausreichen ;-) https://www.digikey.at/product-detail/en/kioxia-america-inc/TH58NVG4S0HTA20/TH58NVG4S0HTA20-ND/6324780
Frodo G. schrieb: > Jetzt möchte ich mein erstes wirkliches "Projekt" umsetzen. > > Der ATMega 328 ist ja schön und toll, aber ich brauche viel (Programm-) > Speicher und viele IOs. > > Warum viel Programmspeicher? Am Anfang steht die Planung des Projektes - und da findest du heraus, wieviele Portpins du benötigen wirst. Ebenso findet man in der Phase der Planung heraus, ob und welche Pins mit Sonderfunktionen oder logisch zusammenhängende Pins man braucht. Dann weißt du zuvörderst, was für I/O dein Projekt benötigen wird. Und was ist bei Programmspeicher bei dir 'viel'? Abgesehen davon solltest du auch die dazu gehörige Firmware planen - und zwar bevor du mit der ersten Quellcode-Zeile beginnst. So etwas solltest du eigentlich wissen, ehe du dich an wirklich große Projekte heranwagst. Einen Punkt hattest du noch gar nicht angerissen: was dein Projekt denn an Rechenbedarf haben wird, ob du mit einem 8 Bitter zurecht kommst oder ob du besser von vornherein auf einen 32 Bit Controller orientierst und was der für Cores haben sollte (ob FP und DSP usw.) und wie schnell er arbeiten kann (ebenfalls auch die Waitstates beim Lesen aus dem Flash berücksichtigen). Das alles ist Thema der Projektplanung, mal abgesehen von der eigentlichen Elektronik für das eigentliche Projekt. Und da ist die Wahl des Controllers nur ein untergeordnetes Thema, das erst im Laufe der eigentlichen Planung anfällt. W.S.
Ok, dann fange ich erstmal mit der Planung an. Und in ein paar Monaten oder Wochen schau ich dann wie und ob es weitergeht ...
Mit ganz besonders viel RAM, kann auch der Stapelspeicher mal ueberlaufen. Bis er dann Teile des Codes erreicht, vergehen bei einem 8-Bitter schon ein paar Stunden... @ TO: Du bist nur ein Troll.
Also ein 8Bit µP mit 24Bit Adressraum wären so 65SC816 sehr einfach in der Programmierung und trotzdem 16 MByte Adressraum und 8 oder 16 Bit Mode ;-)
Frodo G. schrieb: > 16 Giga-Bit dürften mehr als ausreichen ;-) > > https://www.digikey.at/product-detail/en/kioxia-america-inc/TH58NVG4S0HTA20/TH58NVG4S0HTA20-ND/6324780 Also langsam glaube ich auch das Du uns trollst. Ein nand Flash mit paralleiinterface an eine MCU ohne externen Adress / Datenbuss ranklöppeln wollen aber vor Port Expandern und SD Cards kapitulieren? Ein 'bastelfreundliches' TFSOP-48 Gehäuse? Also entweder trollst Du uns oder Du solltest nochmal tief in Dich gehen was Du eigentlich willst. Zuindest ist bei dem derzeitigen Stand Beratung völlig sinnlos. Du wirfst wild mit irgendwelchem Halbwissen um Dich und verstehst nicht was man Dir sagt.
Frodo G. schrieb: > 16 Giga-Bit dürften mehr als ausreichen > https://www.digikey.at/product-detail/en/kioxia-america-inc/TH58NVG4S0HTA20/TH58NVG4S0HTA20-ND/6324780 Ich komme mir langsam verarscht vor. Schon beim Eröffnungsbeitrag dachte ich, dass du dir da zu viel auf einmal vornimmst. Anscheinend soll das so ein Universal-Projekt werden, dass alle eventuellen künftigen Bedürfnisse abdeckt. Doch du hast jetzt noch keine Ahnung, was du brauchen wirst, was du wollen wirst und wie man das sinnvoll umsetzt. Aus irgend einem Grund hast du dich jedoch auf das Atmel Studio und den AVRISP mk2 festgelegt. Wenn das die beste IDE der Welt wäre hätte ich dafür Verständnis, aber es ist eher genau anders herum. Außerdem schränkst du damit die Wahl der Mikrocontroller sehr stark ein. Alle Modelle (wirklich alle) die derzeit zum Experimentieren besonders interessant sind und wie gewünscht viel Speicher hätten, hast du damit schon ausgeschlossen. Und nun kommst du mit so einem NAND Flash Chip als RAM Ersatz an. An dieser Stelle wird es total absurd. Entweder bist du gar kein Anfänger, oder du überschätzt ganz heftig die Komplexität der Sache. Kannst du den überhaupt löten? Das war dir doch auch wichtig.
Also ich verstehe daraus, das der TO wohl eine Risige Datenbank verwalten will, Wenig µP Performance, dafür sehr viel Daten(So etwa Taschentelefonbuch) oder Taschenlexica? Und für jede Rubrik ein I/O Pin zum direkt anwählen? Oder ev. Sprachspeicher per IO Ereignisgesteuert? Na ja lassen wir den TO mal Planen dann sehen wir weiter...
:
Bearbeitet durch User
Prokrastinator schrieb: > ist bei 64KB Schluss bei den > 8bittern. > Mehr können die nicht adressierem Was hat die Datenbusbreite mit der Adressbusbreite zu tun? Richtig: Herzlich wenig!
EAF schrieb: > Was hat die Datenbusbreite mit der Adressbusbreite zu tun? > Richtig: Herzlich wenig! Theoretisch ist viel möglich. Doch zeige mir mal einen 8 Bit Mikrocontroller, der ohne Klimmzüge mehr als 64 KB Adressieren kann.
Stefan ⛄ F. schrieb: > Frodo G. schrieb: >> 16 Giga-Bit dürften mehr als ausreichen >> > https://www.digikey.at/product-detail/en/kioxia-america-inc/TH58NVG4S0HTA20/TH58NVG4S0HTA20-ND/6324780 > > Ich komme mir langsam verarscht vor. > > Schon beim Eröffnungsbeitrag dachte ich, dass du dir da zu viel auf > einmal vornimmst. Anscheinend soll das so ein Universal-Projekt werden, > dass alle eventuellen künftigen Bedürfnisse abdeckt. Doch du hast jetzt > noch keine Ahnung, was du brauchen wirst, was du wollen wirst und wie > man das sinnvoll umsetzt. > > Aus irgend einem Grund hast du dich jedoch auf das Atmel Studio und den > AVRISP mk2 festgelegt. Wenn das die beste IDE der Welt wäre hätte ich > dafür Verständnis, aber es ist eher genau anders herum. Außerdem > schränkst du damit die Wahl der Mikrocontroller sehr stark ein. Alle > Modelle (wirklich alle) die derzeit zum Experimentieren besonders > interessant sind und wie gewünscht viel Speicher hätten, hast du damit > schon ausgeschlossen. > > Und nun kommst du mit so einem NAND Flash Chip als RAM Ersatz an. An > dieser Stelle wird es total absurd. Entweder bist du gar kein Anfänger, > oder du überschätzt ganz heftig die Komplexität der Sache. Kannst du den > überhaupt löten? Das war dir doch auch wichtig. Ok, "Halbwissen" ist wohl der beste Begriff. Also fange ich mal von vorne an: Ich bin nicht komplett "ahnungslos" was Elektronik angeht. Ich kenne die "Grundlage" (Ohm'sches Gesetz, OPV-Grundschaltungen, Transistoren, digitale Logik) nur alles was irgendwie programmierbar ist (bis auf CPLDs) ist mir neu. Ich habe mal ein wenig mit dem programmieren von einfachen Anwendungen für den PC herumgespielt (C++ mit dem QT-Framework). Aber das war auch mehr "einfach drauflos programmieren" als wirkliche Software-Entwicklung. Also eigentlich nichts was auf µC Programmierung anwendbar wäre. Was Mikrocontroller angeht kenne ich ebenfalls die Grundlagen (oder ich denke das zumindest), also ich weiß wie die "Eingeweide" funktionieren (ALU, Programm-Counter, Flash, Timer, UARTs, ...). Was aber die wirkliche Anwendung angeht habe ich so gut wie kaum Ahnung (wie man sieht) Bezüglich der Behauptung "externe Speicher sind nichts für Anfänger": Ich habe bisher nur Erfahrung mit alten SRAMs und da ist es eigentlich ganz einfach: Gib dem SRAM eine Adresse und das Read/Write bit und du bekommst Daten an der jeweiligen Adresse bzw. schreibst die Daten in die jeweilige Adresse. Komplett egal ob der Controller das hardwaremäßig unterstützt, das könnte man sogar "von Hand" mit DIP-Schaltern und entprellten Tastern machen. Nein, ich möchte niemanden "verarschen".
Stefan ⛄ F. schrieb: > Mikrocontroller, der ohne Klimmzüge mehr als 64 KB Adressieren kann. Patrick L. schrieb: > 65SC816 sehr einfach in der Programmierung und trotzdem 16 MByte > Adressraum > und 8 oder 16 Bit Mode ;-)
Stefan ⛄ F. schrieb: > EAF schrieb: >> Was hat die Datenbusbreite mit der Adressbusbreite zu tun? >> Richtig: Herzlich wenig! > > Theoretisch ist viel möglich. Doch zeige mir mal einen 8 Bit > Mikrocontroller, der ohne Klimmzüge mehr als 64 KB Adressieren kann. Muss er gar nicht können! (So weit ich das verstehe) Du kannst ja auch mit zwei bits (Daten & Clock) unendlich viele Ausgänge ansteuern, mit einem Schieberegister.
Fang nochmal neu an, und zwar mit der Beschreibung deiner Anwendung. Dann bekommst du Empfehlungen für sinnvolle Bauteile die es nicht unnötig kompliziert machen.
Hi > Wenn Du keine Bankumschaltung machen willst ist bei 64KB Schluss bei den >8bittern. Wo steht das? 1. Der Programmspeicher wird in Words adressiert Datenblatt: ...the Flash is organized as 32K/64K/128K × 16 2. Wozu braucht der ATMega 24560/2561 einen 17 Bit Programmcounter Datenblatt: ...Program Counter (PC) is 15/16/17 bits wide, thus addressing the 32K/64K/128K program memory locations. MfG Spess
Patrick L. schrieb: > 65SC816 sehr einfach in der Programmierung > und trotzdem 16 MByte Adressraum Programmzähler, Stackpointer und Address Bus haben 16 Bit. Aus dem Datenblatt: "Words, arrays, records, or any data structures may span 64 KByte bank boundaries with no compromise in code efficiency." Auf 24 Bits kommt man mit einem "Bank Register", entsprechend den von mir genannten "Klimmzügen". Im übrigen ist das kein 8 Bit Mikrocontroller, sondern ein 16 Bit Mikroprozessor. Also eine ganz andere Kategorie.
> fange ich mal von vorne an Das solltest du selber mal woertlich nehmen. Controller sind Controller und keine UniversaldatenbanksonstwasComputer. Fuer den Anfang waere da ein kleiner PIC mit 1 kWorten und 64 Registern/RAM wohl am ehesten angezeigt. Um deine Vorstellung mal ein wenig zu erden... Fuer deine Hirnfuerzzze ist mir meine Zeit naemlich zu schade.
EAF schrieb: >> Program Counter (PC) is 15/16/17 bits wide > Das interessiert DIE doch gar nicht. Doch. Der Programmzähler ist aber nicht alles, was hier relevant ist. Sprunganweisungen sind eingeschränkt und beim Lesen von (const) Daten kannst du mit einem 16 Zeiger eben nicht den ganzen Speicher am Stück ansprechen. Es gibt bei AVR keine Zeiger mit mehr als 16 Bit.
Frodo G. schrieb: > Bezüglich der Behauptung "externe Speicher sind nichts für Anfänger" Hat wer gesagt? Bei MCUs arbeitest Du mit sehr begrenzten Recourcen. Hast Du null Konzept hast Du schnell Probleme. Das PC Konzept: Ich allokiere mal eben 3MB Speicher in denen ich rumfuhrwerke und es kümmert mich einen Dreck wo der herkommt und wie das OS auslagert und seine dienstbaren Geister wirken' kannst Du bei MCUs gepflegt vergessen. Du willst also 10K große Arrays und davon mehrere, sagen wir 5 Stk. Angenommen in jedem Array liegt eine 16bit Zahl, dann hast Du 100K Daten. Aber Du hast keinen Plan und kein Konzept wie Du die im internen Speicher vorhalten willst und wie Du mit 64K Adressraum 100K + xxx Variablen verwalten willst. 100K Daten mit einer 8bit AVR MCU durchzuackern und zu manipulieren ist so aufregend schnell wie Lack beim Trocknen zuzusehen. Du willst zwar I²C, SPI und so ein Gedöhns, aber wenn es darum geht mit I²C einen Port Expander anzusprechen oder mit SPI eine SD Card, geht Dir der Stift und Du willst das lieber erstmal lassen. Was denn nun? Meinst Du die Schnittstellen sehen einfach so für sich schick aus? Du hast Dir 0,0 Gedanken um Ausführgeschwindigkeit oder Speichertiefe gemacht ausser das es 'extrem viel' sein soll, was aus dem Arsch gezogen und nicht überlegt und berechnet ist. 100K ist für den Raspi lachhaft. Der hat 512MB Ram Die 100K durchzuarbeiten geht bei 1Ghz und 32 Bit vielleicht so ein klitzekleines bißchen schneller als mit einer langsamen uralt Gurke wie dem 16Mhz 8bit AVR aus dem letzen Jahrtausend. Du hast Dir um nichts, absolut nichts Gedanken gemacht ausser das es AVR und das rotzlangsame Atmelstudio mit dem Großvater MK2 sein soll. Alles andere ist nur Wurstkram was ich bisher von Dir gehört habe. Du kannst Flash und Ram nicht auseinanderhalten, Programmspeicher nicht von Datenspeicher, willst aber als erstes Projekt irgendwas richtig großes, statt erstmal Deine Hörner abzustoßen.
Stefan ⛄ F. schrieb: > Doch. Nein! Stefan ⛄ F. schrieb: > Sprunganweisungen sind eingeschränkt Relative Sprünge und rcall überwinden die 64K Grenze locker. Das könnten sie nicht wenn der Speicher gebankt wäre. Dann würde es ein Wraparound geben. Stefan ⛄ F. schrieb: > du mit einem 16 Zeiger eben nicht den ganzen Speicher ansprechen. > Es gibt bei AVR jedoch keine Zeiger mit mehr als 16 Bit, daher Pageing. Hier spricht du von einer Einschränkung des GCC. Du meinst C Zeiger. Ein Assemblerprogramm braucht keine Trampoline Section.
Tja, solche Threads enden meist in einem Glaubenskrieg. :-(
Prokrastinator schrieb: > Frodo G. schrieb: >> Bezüglich der Behauptung "externe Speicher sind nichts für Anfänger" > > Hat wer gesagt? > Bei MCUs arbeitest Du mit sehr begrenzten Recourcen. > Hast Du null Konzept hast Du schnell Probleme. > > Das PC Konzept: Ich allokiere mal eben 3MB Speicher in denen ich > rumfuhrwerke und es kümmert mich einen Dreck wo der herkommt und wie das > OS auslagert und seine dienstbaren Geister wirken' kannst Du bei MCUs > gepflegt vergessen. > >... > > Du hast Dir um nichts, absolut nichts Gedanken gemacht ausser das es AVR > und das rotzlangsame Atmelstudio mit dem Großvater MK2 sein soll. > Alles andere ist nur Wurstkram was ich bisher von Dir gehört habe. > > Du kannst Flash und Ram nicht auseinanderhalten, Programmspeicher nicht > von Datenspeicher, willst aber als erstes Projekt irgendwas richtig > großes, statt erstmal Deine Hörner abzustoßen. Du hast vollkommen recht. Ich habe mir noch nie in meinem Leben Gedanken über "Speicherplatz-Management" gemacht, sondern bei meinen PC Software "Machenschaften" nur so mit globalen Variablen, Vectors (Arrays mit dynamischer Größe) und dergleichen um mich geworfen ... Ich denke ich fange mit etwas überschaubarerem an. Irgendsowas wie ein µC gesteuertes Labornetzteil oder so ...
H. H. schrieb: > Tja, solche Threads enden meist in einem Glaubenskrieg. :-( Ja, weil es keine objektiv "perfekte" Lösung gibt. Oder in diesem Fall eine objektiv "perfekte" Architektur oder was auch immer ...
Ein
> Labornetzteil
soll vor allen Dingen zuverlaessig funktionieren und ist
ein ganz schlechtes Anfaengerprojekt.
Nimm noch etwas kleineres.
foobaz schrieb: > Ein >> Labornetzteil > soll vor allen Dingen zuverlaessig funktionieren und ist > ein ganz schlechtes Anfaengerprojekt. > Nimm noch etwas kleineres. Okay ... Ich bin ein wenig verwirrt ... Wieso bitte ist ein µC gesteuertes Labornetzteil ein schlechtes "Anfängerprojekt"?
Frodo G. schrieb: > Wieso bitte ist ein µC gesteuertes Labornetzteil ein schlechtes > "Anfängerprojekt"? Weil du dich zuvor fragen solltest, was der µC dort zu tun haben wird. So, wie ich das sehe, könnte er allerhöchstens zwei numerische Anzeigen für Spannung und Strom bedienen. Zum Einstellen ist mir bei einem solchen Gerät ein gewöhnliches 10-Gang Poti weitaus lieber - und vielen anderen geht es genau so. Und komme du lieber nicht mit Zehnertastatur und Einstellung über einen µC. Sowas ist zum einen nicht wirklich praktisch und zum anderen auch eine gefährliche Sache für die Probierschaltung, die aus dem LNG vesorgt werden soll. Man kann sich zu leicht vertippen. Wir sind mal wieder in der Planungs-Frühphase. Also nochmal mein Rat: zuerst planen (und gründlich dabei drüber nachdenken: was soll es werden und wie soll es sich benutzen lassen - aber nicht 'wie kann ich hier einen µC unterbringen?'). W.S.
Frodo G. schrieb: > Wieso bitte ist ein µC gesteuertes Labornetzteil ein schlechtes > "Anfängerprojekt"? welcher µC ist so schnell wie eine Analogrechner? Erst muss der fliessende Strom und die anliegende Spannung digitalisiert werden, dann fängt der Rechner an zu rechnen (hoffentlich ohne Pentiumbug) und dann erst wird eingegriffen? Bis dahin kann schon ne Menge magischer Rauch aus den Bauteilen entwichen sein!
Joachim B. schrieb: > Frodo G. schrieb: >> Wieso bitte ist ein µC gesteuertes Labornetzteil ein schlechtes >> "Anfängerprojekt"? > > welcher µC ist so schnell wie eine Analogrechner? > > Erst muss der fliessende Strom und die anliegende Spannung digitalisiert > werden, dann fängt der Rechner an zu rechnen (hoffentlich ohne > Pentiumbug) und dann erst wird eingegriffen? > > Bis dahin kann schon ne Menge magischer Rauch aus den Bauteilen > entwichen sein! Gut, ich verstehe. Ja, kein µC ist schneller als ein OPV. Der µC würde nur die "Soll"-Spannung an den OPV übergeben, der macht dann die eigentliche Regelung. Das selbe für die Strombegrenzung. Übertemperaturabschaltung und so würde ebenfalls analog gelöst werden. So würde ich das machen. Keine "sicherheitsrelevanten" Funktionen dem µC (oder sonst irgendeiner software / firmware) überlassen. Und ja, ich bin einer der wenigen Leute die eine numerische "Tastatur" bei Netzteilen dem üblichen Poti oder Drehimpulsgeber vorzieht. Wenn ich 12 V will, dann will ich 12V und nicht erst eine halbe Ewigkeit an einem Knopf herumdrehen. Aber da bin ich scheinbar der einzige ... Übrigens ich finde es richtig gut dass ich hier gesagt bekomme wie schwachsinning meine Ideen und Ansätze sind. Wenn man immer nur Zustimmung erhält, dann lernt man ja nie was neues sondern macht immer den selben Mist ...
Nur so nebenbei Erwähnt, es gibt Mikrocontroller, die Analogteile wie Komparatoren mit drin haben, da lässt sich die "Lahme" Rechenpower mit den schnellen programmierbaren Komparatoren kompensieren. Mit solchen baue ich Intelligente Labor-Netzteile, die kein "magischen Rauch" entwickeln. Nur so als Idee.
32k Programmspeicher muss man auf einem MC erstmal vollkriegen, sofern man sich in etwa an die Aufgaben hält für die diese Käfer bestimmt sind.
Patrick L. schrieb: > Mit solchen baue ich Intelligente Labor-Netzteile solange die Menschen immer mehr verdummen glaube ich nicht das Technik intelligenter wird.
H.Joachim S. schrieb: > 32k Programmspeicher muss man auf einem MC erstmal vollkriegen, sofern > man sich in etwa an die Aufgaben hält für die diese Käfer bestimmt sind. Ich muss einfach erstmal realisieren dass µCs keine geschrumpften "64 bit PCs mit 16 GB RAM und 20 TB Datenspeicher" sind. ;-)
Frodo G. schrieb: > Und ja, ich bin einer der wenigen Leute die eine numerische "Tastatur" > bei Netzteilen dem üblichen Poti oder Drehimpulsgeber vorzieht. > Wenn ich 12 V will, dann will ich 12V und nicht erst eine halbe Ewigkeit > an einem Knopf herumdrehen. > Aber da bin ich scheinbar der einzige ... Nein, sowas kann man ja sogar von der Stange kaufen.
H. H. schrieb: > Frodo G. schrieb: >> Und ja, ich bin einer der wenigen Leute die eine numerische "Tastatur" >> bei Netzteilen dem üblichen Poti oder Drehimpulsgeber vorzieht. >> Wenn ich 12 V will, dann will ich 12V und nicht erst eine halbe Ewigkeit >> an einem Knopf herumdrehen. >> Aber da bin ich scheinbar der einzige ... > > Nein, sowas kann man ja sogar von der Stange kaufen. Ich weiß, wir haben viele davon in der Firma ... Die meisten haben beides, Tastatur und "Drehknopf".
Erzähl uns doch mal, für was du den großen Speicher benötigst. Was ist die Anwendung?
Maxe schrieb: > Erzähl uns doch mal, für was du den großen Speicher benötigst. Was ist > die Anwendung? Das sollte eine Art Datenlogger werden. Per RS232, I2C oder was-auch-immer sollte das Einlesen von Analogwerten gestartet oder gestoppt werden oder auf sonstige Funktionen wie Mittlewert aller bisher gemessenen Werte zugegriffen werden können. Wie gesagt, nichts weltbewegendes.
Frodo G. schrieb: > Das sollte eine Art Datenlogger werden. Dan wäre ja ein kleiner MC und ein externes FRAM die ideale Lösung dazu. Aber warum so viele IO's?
:
Bearbeitet durch User
Frodo G. schrieb: > Das sollte eine Art Datenlogger werden. Ist doch ein nettes Projekt. Ich wuerde als Speicher eine SD-Karte verwenden, die kannst du dann auch mal am PC auslesen. Ansonsten einfach anfangen, welche Ressourcen man letztlich braucht, muss man erst sehen, das laesst sich ohne einschlaegige Erfahrung kaum abschaetzen.
Frodo G. schrieb: > Warum viel Programmspeicher? > Ich möchte nicht dass mir mitten während der Umsetzung meines Projekts > der Speicher ausgeht und ich einen anderen Controller und die Schaltung > bzw die Leiterplatte neu auslegen muss. Programmier, was Du brauchst, auf Deiner bekannten Plattform. Dann hast Du eine grobe Vorstellung. Nimm dann 10x soviel Speicher und gut ist. Wieviel Pins weißt Du dann auch. > Warum viel IOs? > Weil ich einiges an "User Interface" - Zeug möchte. > (ein großes 4x40 Zeichen LCD, eine 4x3 Tastatur für numerische Eingaben, > ein paar Taster, Drehimpulsgeber, und dann natürlich noch ein paar IOs > für die Kommunikation mit anderen Geräten, also I2C RS232 und so) Das ist auf hundertausend eval-boards Standard. Nimm eines, Klatsch Dein Zeugs dran, programmiere und mache dir danach Gedanken um Typ und Layout. Mache also den ersten Entwurf für die Tonne. Danach den uC zu wechseln ist kein Mehraufwand.
A. S. schrieb: > Das ist auf hundertausend eval-boards Standard. Nimm eines, Klatsch Dein > Zeugs dran, programmiere und mache dir danach Gedanken um Typ und > Layout. > > Mache also den ersten Entwurf für die Tonne. Danach den uC zu wechseln > ist kein Mehraufwand. Gut, werde ich so machen!
Frodo G. schrieb: > Gut, werde ich so machen! Es gibt übrigens genug Boards die grad ein SD Leser oder Flasch/Ram zusätzlich drauf haben. Da währe ein solches mit SD-Slot zu empfehlen.
Esp32 mit Fram.. kommt halt drauf an wie viele Pins man benötigt und wie schnell das ganze laufen soll. Bastelfreundlich ist wohl nur der atmega1284p, wobei Stm32 und esp32 Breakout Boards auch schon fast so klein wie DIP40 sind, dann brät man halt die auf das Lochraster. Wenn man das ganze auf Arduino programmiert kann man die Hardware wechseln ohne umzuschreiben aber trotzdem noch für jedes Framework wie bei Avr Code wie im Studio benutzen. Dann nimmt man halt platformIO als IDE. Wer das beruflich macht sagt halt ganz klar Arduino ist Schrott, jeder Anfänger spart da halt Zeit und Nerven. Du arbeitest dich jetzt in AVR ein, dann hast du Wochen investiert und merkst das Stm32 vielleicht doch besser ist und werkelst einige Wochen in den Datenblättern.. am Ende brauchst noch WLAN weil es aktuell ist und arbeitest dich wochenlang ins esp-idf ein. Das passiert dir zwar auch in der Arduino, aber da hat man dann wenigstens einen zentralen Punkt mit dem man klarkommt. Und es war nichts umsonst.
Frodo G. schrieb: > Das sollte eine Art Datenlogger werden. Na, bei sowas kommt's natürlich darauf an, welche Datenmengen über welchen Zeitraum anfallen. Deswegen fängt man auch damit an, erstmal dies klarzustellen. DANACH kann man sich dann Gedanken machen, womit man die Anforderungen am besten erfüllen kann. Sonst könnte nämlich passieren, dass du einen Ferrari kaufst, obwohl du eigentlich nur in die Fußgängerzone zum Bäcker fahren willst. und dann stellst du fest, dass dir die vielen hundert Ferrari-PS und seine ganze geile Technik dir hier überhaupt nix nützen, weil du damit erstens nicht in die Funßgängerzone fahren darfst und zweitens schon eine große Tüte Brötchen und zwei Torten nicht mehr in den Kofferaum passen...
Es ist doch wieder einmal wie so oft, dass jemand völlig "unbedarft" auf eine geile Idee kommt und anstatt das erst mal selbst ein wenig durchzudenken, geht man stattdessen in ein Fachforum und und stellt das Breitellerchen auf den Tisch. Da der TO nach eigenen Angaben zumindest der LED-Blinkerei nicht ganz abhold ist, könnte er allein über die Programmgröße so eines Mini-Übungsprogramms schon mal abschätzen, ob sein Vorhaben eher einen Laptop der Königsklasse erfordert oder ob vielleicht auch ein kleiner Kontroller mit etwas (nicht bombastischer!) Peripherie für sein Vorhaben ausreicht. Das dabei insgesamt sicher noch ganz gehörige Grundkenntnisse fehlen, macht die ganze Sache zu einem "totgeborenen" Kind! (Programmausführung aus Flash oder Ram ist fundamentales, notwendiges Wissen...aber was reg' ich mich auf... Rainer
Rainer V. schrieb: > Es ist doch wieder einmal wie so oft Erst erzählt er was von 'Programmspeicher' und dann kommt plötzlich raus, das er einen Datenlogger will. Da wäre man wohl etwas früher auf die SD Karte gekommen...
Ich versuche mir gerade vorzustellen, wie man 2 Gigabytes seriell mit 115200 Baud auf den PC überträgt ...
Stefan ⛄ F. schrieb: > 115200 Baud auf den PC überträgt . Man meldet Ferien an, und wenn man schön Braungebrannt zurückkommt, ist er fertig. Wo liegt das Problem? LOL
Stefan ⛄ F. schrieb: > Ich versuche mir gerade vorzustellen, wie man 2 Gigabytes seriell mit > 115200 Baud auf den PC überträgt ... Gemächlich. Aber das Schicke ist: man muß da nicht daneben stehen und irgendeine Kurbel drehen oder sowas. Das könne die kleinen Bitschaufler dann ganz alleine abhandeln. Man startet den Transfer und geht ein paar Bier mit Kumpels trinken. Wenn man wieder nüchtern ist, ist auch der Transfer erledigt. Insofern eine perfekte Synergie zwischen Mensch und Maschine. Sie läßt den Raum für unverzichtbare soziale Kontakte.
c-hater schrieb: > Aber das Schicke ist: man muß da nicht daneben stehen und > irgendeine Kurbel drehen oder sowas. Bei Windows muss man zwischendurch ein paar mal Updates ablehnen, sonst rebootet der Rechner zwischendurch eigenmächtig :-) War Spaß, soooo lange dauert es nicht. Aber man muss die Updates aussetzen, sonst kann es doch überraschend passieren - zumindest bei der Home und Pro Edition.
Hallo, Stefan ⛄ F. schrieb: > Bei Windows muss man zwischendurch ein paar mal Updates ablehnen, sonst > rebootet der Rechner zwischendurch eigenmächtig :-) Da brauche ich keine Updates dazu. Wenn ich abends gewohnheitsäßig den Rechner runterfahre fällt mir gleich hinterher ein, daß ja noch eine TV-Aufnahme vom USB-Stick lief oder ein Ordner zum NAS kopiert wurde. Wäre ja auch blöd, wenn Win da warnen würde, daß macht es nur bei völlig unwichtigen Programmen... Gruß aus Berlin Michael
Mein Standard Controller ist der 644, und falls ich viele IOs, resp mehr wie 2 Uarts benoetigem den 2560. Ich hatten in einem Mega 32 auch schon mal einen Webserver fuer das Userinterface drin, Zur Sicherheit (gegen Knappheit) habe ich die Seiten allerdings in einem SPI Flash AT45DB161 abgelegt. War aber nicht noetig. Die Seiten waren statisch plus etwas Javascript. Ein 644 sollte sonst eigentlich genuegen. Floating point und printf() sollte man allerdings vermeiden.
:
Bearbeitet durch User
Frodo G. schrieb: > Warum viel Programmspeicher? > Ich möchte nicht dass mir mitten während der Umsetzung meines Projekts > der Speicher ausgeht und ich einen anderen Controller und die Schaltung > bzw die Leiterplatte neu auslegen muss. > Warum viel IOs? > Weil ich einiges an "User Interface" - Zeug möchte. > (ein großes 4x40 Zeichen LCD, eine 4x3 Tastatur für numerische Eingaben, > ein paar Taster, Drehimpulsgeber, und dann natürlich noch ein paar IOs > für die Kommunikation mit anderen Geräten, also I2C RS232 und so). - Zerlege Dein Projekt in Unterprojekte. - Realisiere jedes Unterprojekt als allein lauffähiges Programm. - Füge abschließend alle Unterprojekte zu einem großen Programm zusammen. Der Vorteil ist, dass Du jedes Unterprojekt mit dem schon Dir bekannten ATMega328 realisieren kannst. Dabei lernst Du... - wieviele GPIOs - wieviel Flash - wieviel RAM Du in Summe benötigst. Answchließend kannst Du dann den passenden µC dafür aussuchen. Dieses Vorgehen hat auch den Vorteil, dass Du nicht direkt in Deinem Großprojekt "ertrinkst" vor lauter Bäumen.
Purzel H. schrieb: > Floating point und printf() > sollte man allerdings vermeiden. Warum denn? float, scanf, printf paßt sogar noch in einen ATmega8. Man darf nur nicht vergessen, den float Support mit dazu zu linken:
1 | -lm |
2 | -Wl,-u,vfprintf -lprintf_flt |
3 | -Wl,-u,vfscanf -lscanf_flt |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.