mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Oszillatorproblem tiny2313 PS/2 Interface


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich arbeite gerade an einem PS/2-Mausinterface mit unterschiedlichem
Erfolg:

Ich benutze den internen Oszillator des tiny 2313 und habe folgendes
Problem:

Mein Interface arbeiten nur stabil bei 512kHz (int. 4MHz CKDIV8).
Versuche ich auf 1MHz zu gehen, kann ich die Maus nicht mehr mit
Befehlen beschicken (Resetdaten empfangen geht noch, aber auch nicht
immer 100%ig). Bei 4MHz geht nix mehr.

Ich bin ziemlich aufgeschmissen und kann das Problem (zumal ich kein
Oszilloskop habe) überhaupt nicht einordnen.
Es gibt eigentlich nur eine Timing relevante Stelle im Code welche
von mir auch entspr. Takt angepasst wird (Pull-Down-Time für Send-Mode).
Ansonsten gibt ja die Maus immer den Takt vor (hängt bei mir am
Interrupt).

Die int. Pull-Ups des µC für DATA/CLK habe ich auch schon gegen ext.
getauscht (10k). Abblockkondensator 47nF ist auch vorhanden.
Auch ext. Takt vom STK bringt keine Abhilfe - über 512kHz ist das
Verhalten = Voodoo.
Zwei weitere µC verhalten sich identisch.

Für jeden Hinweis bin ich sehr dankbar.

Gruß
(noch) Gast

Autor: Michael P. (desilva)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah... was hast Du denn für Vorstellungen von PS/2 :-)
Die Clockfrequenz MUSS zwischen 10 und 20 kHz liegen, also etwa 40 µs 
low/40 µs high.. Alles andere ist WEIT außerhalb jeder Spec! Du kennst 
die berühmten PS/2 Beschreibungen von Adam Chapweske (gibt's auch in 
deutscher Übersetzung)?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Du kennst die berühmten PS/2 Beschreibungen von Adam Chapweske
> (gibt's auch in deutscher Übersetzung)?

Ja, die habe ich auch benutzt.

>Die Clockfrequenz MUSS zwischen 10 und 20 kHz liegen, also etwa 40 µs
>low/40 µs high..

Das verstehe ich nicht. Clock wird doch vom Device (in diesem Fall die 
Maus) generiert. Daran wird das Timing des Host doch angekoppelt. Ich 
generiere nirgens einen eigenen Takt.
Ich würde mit 512kHz ja zufrieden sein, wenn ich die höhere Frequenz 
nicht für PWM benötigen würde.

Noch Tipps? Ist irgendwas besonderes beim Tiny bekannt? Andere PS/2 
Quelltexte
machen eigentlich nichts anderes als ich.
Kann irgendwie bei höherem Takt die Spannungsversorung einbrechen (habe 
außer der Maus aber keine andere Last am µC). Diverse Mäuse habe ich 
auch schon probiert. Verhalten bei allen gleich.

(Danke für die Antwort)
(noch) Gast

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Gast (Gast)

>Das verstehe ich nicht. Clock wird doch vom Device (in diesem Fall die
>Maus) generiert. Daran wird das Timing des Host doch angekoppelt. Ich
>generiere nirgens einen eigenen Takt.

Na dann ist ein Fehler in deiner Taktankopplung.

>Kann irgendwie bei höherem Takt die Spannungsversorung einbrechen (habe

Nein. Mit 5V läuft der Tiny mit bis zu 20 MHz.

Mfg
Falk

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du mit verschiedenen Takten arbeitest, mußt Du Deine Timer-Werte 
oder Zählvariablen in den Routinen, die das PS2-Taktsignal relativ zu 
den Daten abtasten, entsprechend anpassen. Es muß von den Taktflanken 
bis zum Lesen der Daten immer eine gewisse Zeit vergehen, da Du sonst 
ungültige Daten zu lesen bekommst.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nun da ich die Lösung des Problems gefunden habe, will ich das Thema 
auch damit abschliessen.

Hauptursache für das Problem war ein vergessenes 'NOP' beim OUT/IN 
DDR-Wechsel auf der 'DATA'-Leitung.
(Nach dem gesendeten Stopbit auf DATA versuche ich den 'ACK'-Zustand 
auszulesen.)
Mit 'NOP' (was ja auch so dokumentiert ist) funktioniert jetzt alles.

(Warum das ganze bei 512kHz CLK klappt, bleibt trotzdem ein Rätsel...)

Gruß
(noch) Gast

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.