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
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?
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.
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.
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
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.
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.
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
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.
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
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.