Forum: Compiler & IDEs AVR und PS2-PC-AT-Tastatur


von Virus89 (Gast)


Lesenswert?

Hallo,

ich hab in den Ferien angefangen mich mit C zu beschäftigen
ich versuch schon seit fast 2 Tagen mit meinem atmega8
Tastatureingaben zu empfangen und vieleicht zu senden,
aber ich scheitere immer wieder an Compilerfehlern da ich in C noch 
nicht so viel Ahnung hab

ich such also eine Funktion die wartet und Buchstaben empfängt
und eine die Buchstaben an den PC senden kann

und vielleicht noch ne kurze Erklärung zur Funktionsweise damit ich sie 
besser bei mir einbauen kann

im Prinzip gibt’s ja 2 Möglichkeiten
1. die Tastatur hängt an zwei Pin's vom AVR und der Computer
   hängt an den gleichen (z.B. data = PD4 und clock = PD2 (INT0)) oder
2. die Tastatur hängt an zwei Pin's (z.B. data = PD4 und clock = PD2
   (INT0)) und der Computer an zwei Anderen (data = PD7 und clock = PD2
   (INT1))

mit Bascom funktioniert das Empfangen wunderbar (wenn die Tastatur nur 
am AVR hängt, aber wenn man den AVR einschleift und die Tastatur noch am 
PC anschließt kommt nur Mist am Terminal an, da der PC auch noch 
irgendwas sendet)
das Senden mit Bascom ist schwer umzusetzen, seiden man kauft sich sone
PS2AT Mouse and Keyboard Emulator Libarie

in C gibt es jedoch ne Menge Beiträge zu dem Thema, ich hab in der Datei 
PS2-PC-AT-keyboard.rar mal par Sachen zusammengefasst die ich so 
gefunden hab, die funktionieren aber bei mir nicht und anpassen schaff 
ich nicht (funktionieren vieleicht unter älteren Compilern)

da ich Vista hab muss ich aber die hier nutzen:

AVR Studio 4
Version 4.13
Build 528

WinAVR 20070525

(neuste Versionen)

welche auch sonst wunderbar funktionieren (Terminal, Led's ...)

ich freu mich auf eure Antworten

danke

von Virus89 (Gast)


Angehängte Dateien:

Lesenswert?

Der Dateianhang ist nicht angekommen, ich versuchs nochmal

von Virus89 (Gast)


Angehängte Dateien:

Lesenswert?

so das Empfangen funktioniert schon mal, egal ob mit PC oder wenn die 
Tastatur nur am AVR hängt
ne Sendefunktion zum PC mach ich später mal

von Philipp Karbach (Gast)


Lesenswert?

hi,
hab den code mal mit meinem mega32 getestet! Funktioniert schon ganz 
gut, wenn ich allerdings das print_hexbyte rausnehme zeigt er oft unsinn 
an!

von Virus89 (Gast)


Lesenswert?

ja ich hab das gleiche Problem mit dem print_hexbyte, ich hab min. 2 
Tage versucht das wegzubekommen, eine eventuelle Lösung hab ich 
gefunden, man sendet einfach an der Stelle 2 mal '\n' , am Terminal 
dürfte eigentlich nichts passieren meins macht nur bei '\r' einen 
Zeilenumbruch oder man sendet irgend einen String z.B. "--"
Ich habe es auch mal mit Interrupt gesteuerter UART versucht, brachte 
aber auch keinen Erfolg

von Philipp Karbach (Gast)


Lesenswert?

hallo,
hatte noch keine zeit mich weiter damit zu beschäftigen aber ich denke 
da liegt ein timing problem vor. Du sendest und empfängst immer im 
while-loop, im interrupt werden die bits geschoben die über den INT0 
hereinkommen, bestimmt passieren da zwei sachen gleichzeitig, sodass er 
teilweise zeichensalat sendet. Interessant ist ja einfach, dass immer 
der richtige Buchstabe mitgesendet wird. Also rein theoretisch 
funktioniert es ja ;). Schau mal in der Codesammlung nach, da gibt es 
beispiele die es auch mit dem INT0 regeln, such mal nach AT Tastatur und 
dergleichen!

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.