Forum: Mikrocontroller und Digitale Elektronik Bestes 8051-Mikrocontroller-Modell für eine Tastatur?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Alex (8051frage)


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

von TomA (Gast)


Lesenswert?

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

von Lothar (Gast)


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

von P.Loetmichel (Gast)


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 :).

von Thomas Z. (usbman)


Lesenswert?

- Cypress FX2 series
- AT89C5131A-M von Atmel
- CH558/9 von WCH

von Olaf (Gast)


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

von Christian M. (likeme)


Lesenswert?

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
von Monk (roehrmond)


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.

: Bearbeitet durch User
von Sorbit (Gast)


Lesenswert?

Komplexizitaet

ist schon schwer….

von Jobst M. (jobstens-de)


Lesenswert?

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

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

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

von Ralph S. (jjflash)


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"

von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


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

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Jobst M. (jobstens-de)


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

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

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.

von Niklas G. (erlkoenig) Benutzerseite


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.

von Lothar (Gast)


Lesenswert?

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 ...

von Tim S. (Firma: tsx89) (freak_ts) Benutzerseite


Lesenswert?

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
von Manfred (Gast)


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).

Genau deshalb verteilt er sie, er hofft, die Schüler lösen sein Problem.

von Jobst M. (jobstens-de)


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

von Äh (Gast)


Lesenswert?

Thomas Z. schrieb:
> CH558/9 von WCH
Braucht kein usb host somit
Ch552

von Thomas Z. (usbman)


Lesenswert?

Äh schrieb:
> Braucht kein usb host somit
> Ch552

ja aber wo nimmst du die Portpins Pins her die er haben will?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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.

: Bearbeitet durch User
von Klaus S. (kseege)


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

von Thomas Z. (usbman)


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.

von Jobst M. (jobstens-de)


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

von Lothar (Gast)


Lesenswert?

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/

von Guido K. (Firma: Code Mercenaries GmbH) (thebug)


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.

von Lothar (Gast)


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

von DerEgon (Gast)


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?

von Thomas Z. (usbman)


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

: Bearbeitet durch User
von Günni (Gast)


Lesenswert?

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.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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.

: 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.