Forum: Mikrocontroller und Digitale Elektronik Suche µC Empfehlung


von Alex C. (tuxedo0801)


Lesenswert?

Hallo zusammen,

ich suche einen µC der möglichst folgende Anforderungen erfüllt:

* DIP Package
* möglichst klein, 8 Pins z.B.
* "Arduino" tauglich, d.h. ich will den µC mit Hilfe der Arduino IDE 
bespielen können
* möglichst sparsam im Energieverbrauch, <10mA wären schon ausreichend 
sparsam
* 3.3V oder 5V Spannungsversorgung wären okay
* möglichst ohne externe Beschaltung

Der µC soll ein serielles Signal mit 9600bit/s entgegen nehmen, 
decodieren, die empfangenen Daten ein wenig Umformen und idealerweise 
nach RS232 Manier (19200-8-E-1) weitergeben. Daraus ergibt sich:

* Es wäre vorteilhaft wenn der µC am einem der Eingangspins 
interrupt-fähig ist. Damit ließe sich das Eingangssignal einfacher lesen

* Zuminest SoftSerial sollte Ausgangsseitig neben dem seriellen Eingang 
möglich sein

Für weitere Steuerungszwecke sollten vorhanden sein:

* analoger Eingang: Ich muss eine Spannung überwachen.

* weiterer digitaler IO Pin als Ausgang

Sowas wie der ATTiny85 klingt ganz praktisch. Kleiner DIP-8 µC, recht 
viel Leistung bei recht wenig Strombedarf.
Da ich aber nur mit größeren Atmels Erfahrung habe (328p, 32u4, SAMD21), 
bin ich mir unsicher ob der ATTiny85 den Anforderungen gerecht wird. 
Gerade was das Thema serielles Signal decodieren angeht: So "richtig 
Interrupt" scheint nicht zu gehen. Und so "richtig UART" scheint ja auch 
nicht vorhanden zu sein.
Bei einem 328p bin ich mir sicher dass er das Ausstattungs- und 
Leistungsmäßig packt. Aber der wäre deutlich größer und ich bräuchte nur 
einen kleinen Teil seiner IOs.


Ich bin mir bewusst dass die Anforderungen schon recht stark 
einschränken.. Aber vielleicht findet sich im Dialog ja noch eine andere 
Idee.

Gruß
Alex

von Reiner_Gast (Gast)


Lesenswert?

Hallo,

der ATTiny85 kann Interrupts.

Und mit Hilfe von USI kann der auch Serielle Kommunikation senden und 
empfangen. Google liefert da so einige Beispiele, z.B.:

http://becomingmaker.com/usi-serial-uart-attiny85/
http://becomingmaker.com/usi-serial-send-attiny/

Abhängig von dem was du vorhast, kann dir allerdings der kleine Flash 
Speicher von nur 8kb einen Strich durch die Rechnung machen.

Hinzu kommt noch relativ viel Overhead den die Arduino Umgebung im Code 
erzeugt.

Hast du einen ISP Adapter mit dem du den ATTiny flashen kannst?
Wenn du den ATTiny vorher noch mit einem Boot Loader ausstatten musst, 
um den zu Flashen, wird es noch enger.

Spricht etwas gegen die Verwendung einer anderen IDE, z.B. AVR Studio?

von Alex C. (tuxedo0801)


Lesenswert?

Mit 8K komm ich denke ich zurecht. Der Code dürfte nicht sooo komplex 
werden. Es kommen "Nachrichten" mit ein bis zwei Dutzend Bytes rein, die 
muss ich etwas umformen und dann weiter geben.

Hier hab ich bedenken bzgl. der zwei seriellen Schnittstellen. Die eine 
muss ich quasi "manuell" einlesen, da sie bis auf die 9600bit/s keinem 
herkömmlicher seriellen Schnittstelle entspricht, und die andere ist 
dann schon eine 19200-8-e-1 Schnittstelle.
Klappt das leistungsmäßig mit dem Attiny85?

Was mich verunsichert ist auch der knappe RAM. Hatte bisher mind. das 
5-fache zur Verfügung, und so der "extrem µC Entwickler" bin ich noch 
nicht. Werde mich da ggf. etwas zusammenreißen müssen und sparsam 
entwickeln.

Atmel Studio geht mir betriebssystembedingt zum einen gegen den Strich. 
Zum anderen möchte ich den Otto-Normale-Entwickler der mit der Arduino 
IDE klar kommt nicht "abhängen". Wenn alle Stricke reißen, werde ich die 
Arduino IDE doch liegen lassen müssen. Aber ich denke das werde ich 
einfach ausprobieren müssen.

von Peter D. (peda)


Lesenswert?

Alex C. schrieb:
> So "richtig
> Interrupt" scheint nicht zu gehen.

Doch, alle 6 IOs können einen Pin-Change Interrupt auslösen.

Alex C. schrieb:
> Und so "richtig UART" scheint ja auch
> nicht vorhanden zu sein.

Es gibt Beispiele für SW-UART mit Interrupt und FIFO. 9600 Baud sind 
damit überhaupt kein Problem.
Vorzugsweise sollte man ein Baudratenquarz verwenden, z.B. 7,3728MHz.

von Michael U. (amiga)


Lesenswert?

Hallo,

ich fange mal am etwas "ungeliebten" Ende an: ArduinoIDE.
Spricht prinzipiell nichts dagegen, man kann da auch ohne den 
Arduino-Code einfach C reintippen. Einfach setup() und loop() im leeren 
Sketch löschen und anfangen...

Was ich unbedingt machen würde: programmieren mit einem ISP-Programmer 
den die IDE kennt. Keinen Bootloader, kostet Platz und ist bei den Tinys 
in der IDE umständlich.
Wie es vom Zeitverhalten hizubekommen ist, wäre zu prüfen.

Aber: Soft-UART nur Senden mit 19200 ist machbar, wie es sich mit dem 
USI bei 9600 Empfnagen verhält? Keine Ahnung.
Dazu kommt: Du willst Even Parity, die mußt Du auch noch in Software 
erledigen.
Du willst Daten umformen. Byteweise? Datenblöcke?
Ich würde aus Bequenlichkeit wohl doch eher einen Mega328 nehmen.

Gruß aus Berlin
Michael

von HildeK (Gast)


Lesenswert?

Bei deiner gewünschten Zahl an Ein- und Ausgängen ist ein DIP8 µC nicht 
optimal. Für die UART-Geschichte, speziell die 19200bit/s, sollte ein 
quarzstabiler Takt verwendet werden, der braucht zwei Pins für den Quarz 
bzw. bei externer Taktzufuhr mindestens einen Pin.
Gut, man könnte auch den Resetpin zweckentfremden, aber dann wird die 
Arduino-Umgebung zur Programmierung nicht mehr verwendbar sein -> 
HV-Programmierung notwendig!

Bei 9200bit/s sollte man in ziviler Temperaturumgebung zwar auch mit 
internen Oszillator hinkommen, für Debugzwecke mache ich das 
gelegentlich auch. Es kann halt sein, dass du ggf. für jedes Device 
nachkorrigieren musst. Ob das aber langzeitstabil ist - k.A.

Ein richtiger UART ist, wie du bemerkt hast, nicht vorhanden. Trotzdem, 
per Software ist das kein Problem und auch die Flashgröße würde gut 
ausreichen.
Gut, Details über das Vorhaben hast du nicht genannt, aber die 8kB sind 
schon einiges.

Wie das aber mit zwei UART-Geschwindigkeiten gleichzeitig aussieht kann 
ich nicht sagen.

von Peter D. (peda)


Lesenswert?

Alex C. schrieb:
> Was mich verunsichert ist auch der knappe RAM.

512 Byte sind ne Menge. Damit kannst Du z.B. je 200 Byte Sende- und 
Empfangs-FIFO einrichten. Die restlichen 112 Byte reichen als Stack usw.

von Michael U. (amiga)


Lesenswert?

Hallo,

Peter D. schrieb:
> Alex C. schrieb:
>> Was mich verunsichert ist auch der knappe RAM.
>
> 512 Byte sind ne Menge. Damit kannst Du z.B. je 200 Byte Sende- und
> Empfangs-FIFO einrichten. Die restlichen 112 Byte reichen als Stack usw.

ich würde das vermutlich in meinem alten Atmel-Studio in ASM 
zusammenklöppeln.
1x UART-RX, 1x UART TX, 1x ADC, 1x DigitalOut sind 4 nötige IO.
Interner 8MHz Takt, calibriert und notfalls mit dem internen 
Temperatursensor nachkorrigieren.
C geht mit Sicherheit auch, hinge von meiner Laune ab. ;)

Gruß aus Berlin
Michael

von Christopher J. (christopher_j23)


Lesenswert?

Alex C. schrieb:
> * DIP Package
> * möglichst klein, 8 Pins z.B.

Ich gehe mal von Stückzahl eins aus, also keine Serie. Controller im 
DIP-Package sind heute in der Industrie jedenfalls nicht mehr zeitgemäß 
und die Auswahl deswegen entsprechend gering. Wenn du dich von der 
harten Anforderung an ein DIP-Package losreißen kannst, dann wird die 
Auswahl gleich um einiges größer.

Du könntest z.B. einen SAMD11C4A im SOIC-14 nehmen und den auf ein 
Breakout-Board löten. Wenn dir selbst DIP-14 (halber 328p) zu groß ist, 
dann nimm den SOIC-14 und löte den im Dead-Bug-Modus an ein 
Breakout-Board deiner Wahl, also DIP-8 oder DIP-10 oder was auch immer. 
Das ganze geht natürlich auch mit TSSOP-14 und TSSOP-20. Die sind 
allesamt kleiner als DIP-8 und mit TSSOP stünde dir fast die gesamte 
Welt an ARM-Controllern offen. Atmel, NXP, ST, Infineon und noch ein 
paar mehr Hersteller haben Controller in solchen Packages. Such dir den, 
der dir am besten passt.

Hier mal so ein Beispiel wie ich das meine:
https://www.evilmadscientist.com/2011/basic-kludges-5-minute-soic-dip-adapter/

Nicht schön aber funktioniert. Bei SOIC kann man dank 0.05"-Pinabstand 
auch gewöhnliche Streifenraster nehmen und den Streifen mit einem Cutter 
zerteilen und dann "normal" auflöten.

Der Vorteil von den ARM-Controllern ist halt, dass du ohne weiteres mit 
dem internen RC-Oszillator einen UART befeuern kannst. Bei den 
STM32F042F6 ist sogar USB ohne Quarz möglich. Flash und RAM haben die 
ebenfalls mehr als genug und teuer sind die auch nicht.

von spess53 (Gast)


Lesenswert?

Hi

>ich würde das vermutlich in meinem alten Atmel-Studio in ASM
>zusammenklöppeln.

Das setzt aber, abgesehen von ASM, voraus, das der TO programmieren 
kann. Und da melde ich Zweifel an.

MfG Spess

von Alex C. (tuxedo0801)


Lesenswert?

Danke für die vielen Antworten und Anregungen.

> ich würde das vermutlich in meinem alten Atmel-Studio in ASM
zusammenklöppeln.

Mit ASM komm ich nicht klar... Das ist a) zu lange her dass ich das 
zwischen den Fingern hatte und b) war ich da nie wirklich gut drin.

> 512 Byte sind ne Menge.

Wenn man so genauer drüber nachdenkt... ja, sollte reichen.

> Ich gehe mal von Stückzahl eins aus, also keine Serie.

DIP-Package kommt daher, weil die finale Schaltung in einem DIY Bausatz 
enden soll, die auch ein nicht ganz so geübter zusammen bekommt. Und ich 
könnte ohne viel Aufwand die µCs Vor-Programmieren.

DIP8 kommt daher, weil eigentlich alles sehr klein sein muss. Ja, SMD 
wäre deutlich besser was den Platzbedarf betrifft. Aber das ist für die 
Zielgruppe nicht optimal, und ich hätte mehr Aufwand den µC ohne 
einlöten mit dem notwendigen Programm zu versehen.
Platz für ICSP und Co. ist eigentlich nicht. Ich hatte auch gehofft mit 
dem internen Oszillator auszukommen, so dass ich extern quasi keine 
Beschaltung (und damit noch mehr Platz) brauche.

Hab mir nun ein paar Attiny85 geordert und probiere einfach mal. Wenn 
alle Stricke reißen muss ich halt schauen dass ich den nächst größeren 
verwende und irgendwie Platz schaffe. Oder dann halt über 
Breakout-Adapter irgendwas basteln.. Ginge auch noch. Muss ich mir mal 
Gedanken machen.

Aber je länger ich drüber nachdenke: Kleinen aber performanten µC, mit 
einem Custom-Breakoutboard das auf einen DIP-Sockel passt, und das ich 
ggf. mit Pogopins programmieren kann. Wäre ne Idee. Damit würde der 
Bausatz-Ansatz noch funktionieren, wenn ich den fertigen µC auf dem 
Breakout liefere. Hab ich dann nur den "Aufwand" mit dem Breakout.

Mal schauen. Jedenfalls Danke für die vielen Anregungen und 
Einschätzungen. Hat mir weiter geholfen.

Gruß
Alex

von Frank L. (hermastersvoice)


Lesenswert?

ich werf mal den Arduino Beetle in den Ring. Da werkelt ein 32U4 und man 
kann die Dinger mit der Arduino Software programmieren. Schön klein ist 
es auch und kostet nicht viel.

von Stefan F. (Gast)


Lesenswert?

Bei deinen Anforderungen kommt eigentlich nur der ATtiny85 in Frage.

Für Dich könnte es allerdings vorteilhaft sein, einen Mikrocontroller 
mit mehr Pins und Speicher zu verwenden. Da gibt es eine ganze Menge mit 
SMD Gehäuse, die letztendlich nicht viel mehr Platz benötigen - 
allerdings womöglich eine Adapterplatine.

Viel mehr Speicher und drei echte serielle Schnittstellen bietet der 
STM32F103C8T6, der ebenfalls von der Arduino IDE unterstützt wird. Ist 
aber vom Form-Faktor aber eher wie ein Arduino Nano Modul. Du könntest 
für diesen Chip eine eigene Adapterplatine entwickeln, welche nur die 
benötigten Pins heraus führt und dementsprechend kleiner ist.

von Christopher J. (christopher_j23)


Lesenswert?

Hatte die Anforderung mit Arduino zur Programmierung glatt überlesen. 
Dann kommt es natürlich noch darauf an ob auch der Empfänger des 
Bausatzes mittels Arduino an dem Teil etwas verändern können soll. Ein 
STM32F042F6P6 würde sich dafür dank des integrierten USB-Bootloaders 
sehr gut eignen. Der kostet aber deutlich mehr als etwa ein 
STM32F030F4P6 (1,30€ vs 0,76€ @ 100St.), der sogar günstiger als ein 
ATTiny85 ist (0,88€ @ 100 St.).

Bei dem Bausatz würde ich dann das SMD-Teil vorbestücken. Wenn man etwas 
Übung hat kann man TSSOP20 problemlos von Hand löten. Mit Lötpaste und 
Heißluft geht das sogar fast mit verbundenen Augen. Ich würde das aber 
nicht jedem x-beliebigen Bausatzbastler zumuten wollen, der eigentlich 
einen Through-Hole-Bausatz erwartet und weder eine Heißluftpistole, noch 
Lötpaste besitzt.

von Frank K. (fchk)


Lesenswert?

Ich schlage einen PIC16F324 vor. Der kommt im 14-Pin DIL daher, hat zwei 
komplette UARTs in Hardware eingebaut, und läuft mit 2.3-5V. Analoge 
Eingänge, weitere digitale IOs usw sind auch da. Das wäre dann immer 
noch von Anfängern lötbar. Gut, Arduino ist dann natürlich nicht.

fchk

: Bearbeitet durch User
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.