Bestes 8051-Mikrocontroller-Modell für eine Tastatur?

#7212854
Lesenswert?

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
Gast #7212864
Lesenswert?

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
Gast #7212865
Lesenswert?

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 :).
Gast #7212878
Lesenswert?

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
Gast #7212928
Lesenswert?

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.
#7213028
Lesenswert?

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"
(Firma: tsx89) Persönliche Seite #7213077
Lesenswert?

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
#7213105
Lesenswert?

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
Persönliche Seite #7213139
Lesenswert?

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.
#7214753
Lesenswert?

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
(Firma: matzetronics) #7214886
Lesenswert?

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.
#7215067
Lesenswert?

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
#7215148
Lesenswert?

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.
#7215175
Lesenswert?

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
(Firma: Code Mercenaries GmbH) #7217042
Lesenswert?

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.
Gast #7217114
Lesenswert?

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
Gast #7217144
Lesenswert?

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?
#7217162
Lesenswert?

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
(Firma: Schweigstill IT) Persönliche Seite #7219335
Lesenswert?

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.
(Firma: matzetronics) #7219340
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren