Forum: Mikrocontroller und Digitale Elektronik RX-TX verwendet: dadurch gesamter Port blockiert?


von Martin Vojtek (Gast)


Lesenswert?

Hi,

habe mal eine Frage: und zwar benütze ich RX-TX auf PortD und möchte
aber auf die restlichen 6 Pins dieses Ports nicht verzichten.

Wenn ich aber Tasten anschliesse, werden deren Signale ständig
unterbrochen.

Ich denke mal, das liegt an dem Interrupt, welcher durch RX-TX
ausgelöst wird oder so.

Weiß mir jemand einen Rat, wie ich trotz der Verwendung von RX-TX meine
Tasten anschliessen kann?

Das gleiche passiert übrigens auch auf PortA: Dort verwende ich ADC0 -
und muss dort sogar auf 7 Pins verzichten. (auch hier Interrupt
gestützt, d.h. nach Auswertung wird Interrupt erzeugt)

Aber ich brauche die Pins (entweder PortD oder PortA), da die anderen
Ports schon alle belegt sind.

Hoffe, jemand kann mir einen guten Tip geben.

Schon mal danke.

MfG
Martin

von Daniel M. (usul27)


Lesenswert?

Ich verstehe nicht, was du mit "Signale unterbrochen" meinst?

Ich vermute mal eher, dass es sich bei deinem Problem um Tastenprellen
handelt.

von Martin Vojtek (Gast)


Lesenswert?

Unter "Signale unterbrochen" verstehe ich folgendes:

ich drücke eine Taste und ein Zeichen wird gesendet und zwar so lange,
wie ich die Taste drücke. Aber in regelmässigen Abständen wird das
Senden für kurze Zeit unterbrochen. Und das muss ich irgendwie
unterbinden.

Diese Sendeunterbrechung habe ich nicht, wenn ich z.B. PortB für die
Tasten nehme. Deswegen kann es sich nicht um Tastenprellen handeln.

Hoffe, dass es jetzt klarer ist.

Bevor jemand auf die Idee kommt: PortB und PortC sind schon belegt und
können nicht mehr für Tasten verwendet werden - deswegen brauch ich von
PortD oder PortA noch Pins, die funktionieren.

von Daniel M. (usul27)


Lesenswert?

Wie fragst du denn die Taste ab? Wie sieht deine Schaltung aus?

von TravelRec. (Gast)


Lesenswert?

>>Diese Sendeunterbrechung habe ich nicht, wenn ich z.B. PortB für die
>>Tasten nehme. Deswegen kann es sich nicht um Tastenprellen handeln.

Das ist Zufall oder programmtechnischer Unsinn. Jeder Pin am AVR kann
unabhängig von einem anderen, auch desselben Ports, genutzt werden,
wenn man die dazu notwendigen Befehle kennt und verwendet. Aber wie
oben bereits gesagt: Mehr Details: welche Programmier-Sprache, welcher
Prozi, welche Schaltung?

von Martin Vojtek (Gast)


Lesenswert?

STK500 darauf die Tasten, LEDs und RS232

das ganze in Assembler, bei 3,6864 MHz mit Mega16

9600 Baud

Tasten frage ich periodisch ab, wenn eine gedrückt ist, bleibe ich bei
der Taste mit einer Schleife:

schleife: sbic PINA, 2
          rjmp schleife

von Roland P. (pram)


Lesenswert?

Hi Martin,
Poste mal etwas mehr Code. (insb UART Ansteuerung)
Bestimmt der typische Fehler, dass vor dem Senden eines Zeichen nicht
gewartet wird, bis die UART wieder frei ist.

Weiterhin ist das mit der Schleife unsauber, wer garantiert dir, dass
der Taster nicht während des Schleifendurchlaufs prellt?
Schau dir mal ein paar Routinen zur Tastenentprellung an
(Codesammling)

Gruß
Roland

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.