Ich baue eine Tastatur (70 Tasten) und da es sich um ein Schulprojekt handelt, muss ich eine 8051 MCU verwenden. Ich würde eine Platine dafür entwerfen und sie dann bei PCBWay etc. kaufen, aber ich weiß nicht genau, welche 8051- (oder 8051-kompatible) MCU ich verwenden soll. Es gibt im Grunde nur zwei Anforderungen: ~20 I/O-Pins für die Tastenmatrix (kein RGB oder irgendetwas, nur eine normale Tastatur) und eine USB-Schnittstelle oder genügend Pins, um so ein externes USB-Ding zu verwenden (bin auch offen für Vorschläge dazu). Es gibt so viele Modelle vom 8051, habt ihr entweder eine konkrete Empfehlung, die ich hier in Deutschland ohne monatelange Wartezeit kaufen könnte oder eine Art Vergleichsseite? Vielen Dank
Hallo Alex. Der 89C5122 wurde genau dafür (Tastatur, USB) entwickelt, wird aber leider nicht mehr produziert. Vielleicht lassen sich aber noch ein paar Exemplare organisieren. Gruß. Tom
Wir nehmen für so was den hier, kann direkt an USB angeschlossen werden, interner Oszillator, und hat USB Bootloader, also kein Programmer erforderlich. EFM8UB20 QFP32 https://www.silabs.com/mcu/8-bit-microcontrollers/efm8-universal-bee Aber Lieferung 09-Dez-22 https://www.mouser.de/ProductDetail/Silicon-Labs/EFM8UB20F64G-B-QFP32?qs=OycAS1CGnlj3PApaQXt1oA%3D%3D Gibt Keil C-Compiler umsonst und USB Beispiel-Code: https://www.silabs.com/developers/simplicity-studio Oder VS Code / SDCC: https://code.visualstudio.com/ https://sdcc.sourceforge.net/ Oder Arduino IDE / SDCC: https://github.com/DeqingSun/ch55xduino
Periphere Geraete mit einem
> USB Bootloader
finde ich immer doof, wenn sie ihre Firmware aus dem Treiber ziehen.
Ich hatte mal einen USB-Seriell-Wandler (Spantree) der funktionierte
genau nur dann, wenn er beim Systemstart schon am Rechner steckte.
Nach einem Suspend, was ja bei Notebooks mal vorkommt, war
der Kamerad schon ablebig. Abhilfe: Booten.
Irgendwann bin ich dann auf Prolifics umgestiegen und hab Glueck gehabt.
Es waren alle mit PL2303HX bestueckt :).
- Cypress FX2 series - AT89C5131A-M von Atmel - CH558/9 von WCH
Sagt mal, findet ihr es nicht etwas bizarr was Kinder heute als "Schulprojekt" leisten sollen? Das koennen die doch von der Komplexizitaet niemals in einem ueberschaubaren Zeitrahmen leisten, ausser sie stoepseln da fertige Software zusammen ohne gross zu verstehen was sie da machen, aber was soll das dann? Olaf
Das ist leider heutzutage so, der Fortschritt ist so krass das man nicht immer von NULL anfangen kann. Ehlich gesagt, fand ich das Assembler Gedöns in meiner Ausbildung stets zum Kotzen ;-) Welche Klasse und Schule betrifft das denn?
:
Bearbeitet durch User
Olaf schrieb: > Sagt mal, findet ihr es nicht etwas bizarr was Kinder heute > als "Schulprojekt" leisten sollen? > Das koennen die doch von der Komplexizitaet niemals in einem > ueberschaubaren Zeitrahmen leisten Computer wirken auf Enduser heute sehr viel einfacher, als noch in den 80er Jahren. Sie sind tatsächlich einfacher zu benutzen, aber frage mal einen Softwareentwickler wie er das sieht. In den 80er Jahren warst du schon Experte, wenn du ein paar DOS Befehle und die Parameter vom CD-ROM Treiber auswendig kanntest. Heute ist derartiges Know-How nichts wert. Selbst wenn du alle Powershell und Bash Befehle auswendig lernst bist du noch weit davon entfernt, ein durchschnittliches Programm schreiben zu können. Die Technik hinter der schönen Fassade ist viel komplexer geworden. Sogar so komplex, dass so manches Projekt außer Kontrolle geraten ist. Der berühmte Satz "Das Internet ist kaputt" beruht unter anderem darauf, dass man sich bei den Security Konzepten verzettelt hat. Jetzt blickt da keiner mehr so richtig durch, was es besonders unsicher macht. Aber den ganzen Code wieder zu entfernen ist auch keine Option.
:
Bearbeitet durch User
P.Loetmichel schrieb: > Periphere Geraete mit einem >> USB Bootloader > finde ich immer doof, wenn sie ihre Firmware aus dem Treiber ziehen. Das hast Du falsch verstanden. Der wird einmal über den USB-Bootloader geflasht und ist dann programmiert und unabhängig. Gruß Jobst
Hier im Forumsmarkt verkauft doch Roger welche? Beitrag "[V] 8St. 8051er Philips P89C51RC+IA PLCC44 (6€)" Schnell verfügbar und eigentlich sogar günstig ;-) 73 55
Alex schrieb: > und eine > USB-Schnittstelle oder genügend Pins, um so ein externes USB-Ding zu > verwenden (bin auch offen für Vorschläge dazu) das ist schon eine "krasse" Anforderung! Soll die zu bauende Tastatur sich an einem PC als Tastatur ausgeben (und wie eine solchige verwendet werden)? Wenn dem so ist, ist das schon sehr sehr sportlich für einen Schüler. Eine USB-Kommunikation zu implementieren selbst bei im Chip implementierter USB-Peripherie ist schon eine große Herausforderung. Ich kann mir nicht vorstellen, dass ein Lehrer eine solchige Aufgabe verteilt (es sei denn, er hat selbst keine Ahnung davon, wie aufwändig das werden wird). Alternativ hierfür, gäbe es "fertige" Programmbeispiele für Tastaturtreiber auf AVR-Basis, realisiert mit einem (eher unschönen, weil Spezifikation verletzendem) V-USB. Da das ganze allerdings ein MCS51 System werden soll ist das schon sehr "krass"
OT: P.Loetmichel schrieb: > war der Kamerad schon ablebig. Abhilfe: Booten. <doof>Ich habe dabei an einen Dienst namens "kamerad" denken müssen, und erst nach dem dritten Lesen ... Aahhhh! Das können die Linux Menschen bestimmt verstehen. (Ich brauch ne Mittagspause)</doof> Steve schrieb: > Die Technik hinter der schönen Fassade ist viel komplexer geworden. > Sogar so komplex, dass so manches Projekt außer Kontrolle geraten ist. JOAAH :OT
:
Bearbeitet durch User
Ralph S. schrieb: > Da das ganze allerdings ein MCS51 System werden soll ist das schon sehr > "krass" Da sich da 2 Welten treffen (USB und MCS51), kann ich mir nur vorstellen, das der Tutor da was ganz bestimmtes im Auge hat - oder völlig weltfremd ist.
Matthias S. schrieb: > Ralph S. schrieb: >> Da das ganze allerdings ein MCS51 System werden soll ist das schon sehr >> "krass" > > Da sich da 2 Welten treffen (USB und MCS51), kann ich mir nur > vorstellen, das der Tutor da was ganz bestimmtes im Auge hat - oder > völlig weltfremd ist. Ich verstehe das mit den 2 Welten oder dass das krass sein soll nicht ... In vielen leistungsfähigen USB-Devices finden sich MCS51 wieder. z.B. in USB2 (HS) -> ATAPI Brücken. Die laufen dann z.B mit 30 MIPS. (bsp. TUSB6250 den man für dieses Projekt auch benutzen könnte.) Die SI Bees sind noch flinker. AVRs sind da weiter von weg ... Gruß Jobst
Ralph S. schrieb: > Alternativ hierfür, gäbe es "fertige" Programmbeispiele für > Tastaturtreiber auf AVR-Basis, realisiert mit einem (eher unschönen, > weil Spezifikation verletzendem) V-USB. Wobei die Verletzungen sich in diesem Falle noch in Grenzen halten, im Gegensatz zum Versuch Bulk-Transfers (z.B. serial Devices) über LowSpeed abzuwickeln.
Jobst M. schrieb: > In vielen leistungsfähigen USB-Devices finden sich MCS51 wieder. z.B. in > USB2 (HS) -> ATAPI Brücken. Die laufen dann z.B mit 30 MIPS. Da wird wahrscheinlich aber eine Menge Hardware-Unterstützung dabei sein, mindestens DMA? Mit 30 MIPS die 60 MByte/s zu übertragen könnte doch etwas knapp werden? Steve schrieb: > Die Technik hinter der schönen Fassade ist viel komplexer geworden. > Sogar so komplex, dass so manches Projekt außer Kontrolle geraten ist. In der Tat, viel Projektarbeit besteht darin, verschiedene komplexe Komponenten unter einen Hut zu bringen. Früh damit anzufangen, sich mit fertigen Libraries (die natürlich immer mies dokumentiert, verbuggt, schlecht portabel, ineffizient sind) herumzuschlagen, ist vielleicht gar nicht so falsch.
Olaf schrieb: > Sagt mal, findet ihr es nicht etwas bizarr was Kinder heute > als "Schulprojekt" leisten sollen? Vielleicht ist es das Gesellenstück in der Berufsschule ...
Niklas G. schrieb: > Früh damit anzufangen, sich mit > fertigen Libraries [...] herumzuschlagen, ist vielleicht gar > nicht so falsch. Und sobald man sie beherrscht, sind sie wieder obsolete. Oder DAS: https://www.golem.de/2209/168134.html 'Fürn Ar***'
:
Bearbeitet durch User
Ralph S. schrieb: > Ich kann mir nicht vorstellen, dass ein Lehrer eine solchige Aufgabe > verteilt (es sei denn, er hat selbst keine Ahnung davon, wie aufwändig > das werden wird). Genau deshalb verteilt er sie, er hofft, die Schüler lösen sein Problem.
Ralph S. schrieb: > Ich kann mir nicht vorstellen, dass ein Lehrer eine solchige Aufgabe > verteilt (es sei denn, er hat selbst keine Ahnung davon, wie aufwändig > das werden wird). Naja, Lehrer eben. Selbst wenn sich der Schüler die Aufgabe selbst ausgesucht hat, wird der Lehrer sie nicht einschätzen können ... "Okay, ich verteile dann mal die Aufgabenstellungen für die Projekte. Kevin: Gravitationsfreiheit in der Nähe von großen Massen. Chantal: Gewinnung elektrischer Energie aus Umgebungstemperatur. Justin: Reisen mit Überlichtgeschwindigkeit ohne negativen Zeitablauf. Ihr habt 4 Wochen Zeit inklusive eines ansatzweise funktionierenden Versuchsaufbaus!" Reaktionen der Schüler: Ein genervt, gelangweiltes "Okay" Niklas G. schrieb: > Jobst M. schrieb: >> In vielen leistungsfähigen USB-Devices finden sich MCS51 wieder. z.B. in >> USB2 (HS) -> ATAPI Brücken. Die laufen dann z.B mit 30 MIPS. > > Da wird wahrscheinlich aber eine Menge Hardware-Unterstützung dabei > sein, mindestens DMA? Mit 30 MIPS die 60 MByte/s zu übertragen könnte > doch etwas knapp werden? Natürlich läuft da DMA. Wesentlich mehr als 30MB/s fließen dort dennoch nicht, da die 480MBit/s von USB HS für beide Richtungen zusammen gelten. IdR. schreibt oder liest man von der HDD, nicht jedoch gemischt. Das würde nicht nur bei mechanischen Platten länger dauern, als dies hintereinander zu tun. Dennoch sollte die CPU recht flink reagieren. Eigentlich ging es mir aber nur darum zu zeigen, dass USB und MCS51 nicht zwei Welten sind. Gruß Jobst
Äh schrieb: > Braucht kein usb host somit > Ch552 ja aber wo nimmst du die Portpins Pins her die er haben will?
Jobst M. schrieb: > Eigentlich ging es mir aber nur darum zu zeigen, dass USB und MCS51 > nicht zwei Welten sind. Hey, das soll eine Aufgabe für Schüler/Azubis sein, und ich wette, das es zwar solche USB/MCS-51 Devices gibt, du aber selber auch keine Lust hättest, da ein HID Device drauf zu implementieren, wenn es keinen schlüsselfertigen HID Stack für gibt. Das ist nicht mal eben so programmiert.
:
Bearbeitet durch User
Matthias S. schrieb: > Hey, das soll eine Aufgabe für Schüler/Azubis sein, und ich wette, das > es zwar solche USB/MCS-51 Devices gibt, du aber selber auch keine Lust > hättest, da ein HID Device drauf zu implementieren, wenn es keinen > schlüsselfertigen HID Stack für gibt. > Das ist nicht mal eben so programmiert. Für eine Tastatur dürfte ein externer UART-to-USB Wandler ausreichend sein. Den könnte eine andere Gruppe auf dem CH552 implementieren. Dunkel in meiner Erinnerung gibt es einen Hinweis darauf, daß es das schon gibt: https://github.com/diodep/ch55x_dualserial scheint das zu können. Just my 2 cents
Klaus S. schrieb: > Für eine Tastatur dürfte ein externer UART-to-USB Wandler ausreichend > sein. > Den könnte eine andere Gruppe auf dem CH552 implementieren. es gibt von WCH fertigen HID Tastatur Code für die Chips. Die Erfindungshöhe wäre dann nur noch eine 70Zeichen Tastenmatrix anzuflanschen. Deshalb hatte ich auch den CH559 vorgeschlagen der auch genug Pins mitbringt.
Matthias S. schrieb: > Hey, das soll eine Aufgabe für Schüler/Azubis sein, und ich wette, das > es zwar solche USB/MCS-51 Devices gibt, du aber selber auch keine Lust > hättest, da ein HID Device drauf zu implementieren, wenn es keinen > schlüsselfertigen HID Stack für gibt. > Das ist nicht mal eben so programmiert. Da es USB-8051-Devices gibt, wird es auch HID Stacks dafür geben. Und Du schätzt mich falsch ein: Ich würde es selber schreiben. Auch weil ich in dem Bereich schon SW geschrieben habe und nicht zuletzt, weil man nie weiß, welche Qualität der fremde Code hat. Gruß Jobst
HID ist nun wirklich kein Aufwand. Schau mal in das EFM8 Beispiel: HID_Keyboard Das sind nur ein paar Codezeilen. Eben weil ja der HID Treiber im PC alles macht. Wenn man es wirklich selbst machen muss, hier eine Einführung: https://www.kampis-elektroecke.de/mikrocontroller/avr8/at90usb1287-usb/usb-device/hid-eine-einfuehrung-in-das-protokoll/
Lothar schrieb: > Das sind nur ein paar Codezeilen. ROFL Ja, das sind nur ein paar Zeilen Code, wenn man schon den gesamten Protokollstack hat. Also den grundsätzlichen USB-Device Stack und dann oben drauf den für HID. Die Aufgabe ist ziemlich blödsinnig. Entweder sitzt man da mindestens ein halbes Jahr dran und schreibt alles selber, oder man nimmt den Samplecode des Chipherstellers für eine Tastatur und passt das nur noch etwas an.
Du würdest also einen USB device protocol stack selbst schreiben? Du weisst aber schon, das macht niemand, der Hersteller vom uC muss den USB device protocol stack kostenfrei liefern. Der ist dann entweder im uC ROM z.B. bei den NXP LPC oder der Source code kommt mit der kostenfreien IDE wie beim erwähnten Silabs 8051 EFM8UB20 für 2 EUR "The USB device protocol stack provides an API which makes it possible to create USB devices with a minimum of effort" Für HID_Keyboard heisst das ein Callback mit Set report und Get report. Das ist natürlich keine Aktion. Eine spannende Aufgabe, die wir mal hatten, war HID für ein Messgerät zu nutzen, also Parameter hin, Messwert zurück: Generic HID http://janaxelson.com/hidpage.htm
Lothar schrieb: > Du weisst aber schon, das macht niemand, der Hersteller vom uC muss den > USB device protocol stack kostenfrei liefern. Muss? Echt jetzt? Wer schreibt das vor? Und wer macht das bei externen USB-Device-Controllern wie z.B. dem PDIUSBD11/12, der früher recht verbreitet war?
Lothar schrieb: > Du würdest also einen USB device protocol stack selbst schreiben? Du wirst lachen aber sowas hab ich schon gemacht, weil mir die Herstellerlösung nicht so gut gefallen hat. (natürlich mit Anleihen vom Originalcode) > Du weisst aber schon, das macht niemand, der Hersteller vom uC muss den > USB device protocol stack kostenfrei liefern. erzähl das mal Atmel. Da sind die Herstellerbeispiele wirklich dünn gesät. Bei TI gibts code oft nur unter NDA
:
Bearbeitet durch User
Wenn man für die Rückmeldeleitung der Tastatur einen Baustein 74HC244 nimmt, der direkt auf den Datenbus geht, reichen selbst einfache 8051 Prozessoren für diese Aufgabe aus.
Lothar schrieb: > Du würdest also einen USB device protocol stack selbst schreiben? Das habe ich auch schon mehrmals selbst getan, allerdings vor etwas längerer Zeit. > Du weisst aber schon, das macht niemand, der Hersteller vom uC muss den > USB device protocol stack kostenfrei liefern. Alternativ kann man natürlich auch einen kommerziellen USB-Stack von einem Hersteller wie z.B. Thesycon erwerben.
Günni schrieb: > Wenn man für die Rückmeldeleitung der Tastatur einen Baustein 74HC244 > nimmt, der direkt auf den Datenbus geht, reichen selbst einfache 8051 > Prozessoren für diese Aufgabe aus. Na, da kannste mal sehen :-P Falls es nicht angekommen ist, der Keyboard-Matrix-Job ist nicht das Problem, auch nicht von der Pinanzahl. Der USB Anschluss ist das Problem. Da hilft kein '244er. Ich habe sowas mal für ADB gebaut, aber nie für USB.
:
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.