mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit AT89LP4052 (COM Schnittstelle)


Autor: Thomas H. (thblitz)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Problem mit diesem µC Daten über die serielle Schnittstelle 
zu versenden.

Im Anhang ist mein aktueller Code enthalten.Ich benutze aktuell den SDCC 
Version 2.8.8#5353 Feb 3 2009.
Die vorgänger Version läuft bereits auf einem AT89C2052.

An den Eingägen von Port1 sind Taster angeschlossen und sobald ein oder 
mehrere Taster betätigt werden soll ein bestimmmtes Zeichen über die 
serielle Schnittstelle versand werden.

Aktuell kommt kein Signal raus.

Gruß Thomas H.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ne blöde Idee, immer den ganzen Port auszuwerten, wenn es doch 
nur ein Pin sein soll.

Tasten fragt man deshalb so nie ab, sondern mit Bitmasken:
if( taste & 1<<0 ) // mache was ..
if( taste & 1<<1 ) // mache was ..
// usw.

Will man noch Entprellen und Flankenauswertung, nimmt man am besten die 
Bulletproof-Sorglos Routine aus der Codesammlung.
Da in C, läßt sie sich ganz einfach von AVR auf 8051 umschreiben 
(Interrupt Syntax, Timerinitialisierung).


Peter

Autor: Thomas H. (thblitz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> Das ist ne blöde Idee, immer den ganzen Port auszuwerten, wenn es doch
> nur ein Pin sein soll.
>
> Tasten fragt man deshalb so nie ab, sondern mit Bitmasken:
>
> if( taste & 1<<0 ) // mache was ..
> if( taste & 1<<1 ) // mache was ..
> // usw.
> 
>
> Will man noch Entprellen und Flankenauswertung, nimmt man am besten die
> Bulletproof-Sorglos Routine aus der Codesammlung.
> Da in C, läßt sie sich ganz einfach von AVR auf 8051 umschreiben
> (Interrupt Syntax, Timerinitialisierung).
>
>
> Peter

Hallo Peter,

das mache ich auch meistens. Aber ich habe auch Zustände da sind zwei 
Tasten gleichzeitig gedrückt. Wenn mann es dann über Bitmasken macht 
wird das leicht unübersichtlich.

Das ist auch nicht das Problem. Ich hab das Problem das der µC keine 
Übertragung mach (wenn ich ein Byte in SBUF schreibe).

Ich habe den Verdacht das ich beim Initialisieren einen Fehler habe. Ich 
sehe nur nicht welchen :) .

Gruß Thomas H.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas H. schrieb:

> das mache ich auch meistens. Aber ich habe auch Zustände da sind zwei
> Tasten gleichzeitig gedrückt.

Dann nimmt man ne Maske für genau die 2 Bits.

Bzw. mit der Entprellroutine nimmt man eine Taste als Shifttaste, d.h. 
wertet deren entprelltes Bit aus. Die Taste allein macht dann nichts, 
denn exakt gleichzeitig kann niemand 2 Tasten drücken.
Bei dem Keyboard drückt man ja auch immer die Shift-, Num-, Controltaste 
etwas früher.


Das stupide Schreiben auf SBUF ist auch ne blöde Idee.
Man muß doch erst testen, ob ein vorheriges Schreiben beendet ist!
Mach Dir ne putchar Funktion oder nimm die des Compilers.


Peter

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.