Forum: Mikrocontroller und Digitale Elektronik Trotz alternativer Pins restlicher Port benutzbar (Attiny2313)?


von Niklas B. (niklas90)


Lesenswert?

Huhu,

ich wusste nicht wonach ich suchen sollte, darum Sry, falls es schon mal 
gefragt wurde, aber kann man beim Attiny2313 die restlichen Pins vom 
PortD normal benutzen wenn man die UART benutzt (TxD statt PD1) ?

Und wenn ja, was muss ich dann dabei beachten? Darf man einfach In und 
Out benutzen oder ist man dann auf eines beschränkt? Darf man die 
Pull-ups ziehen oder doch besser lassen?

Und noch etwas: Kann man irgendwie das Signal von TxD wieder einlesen? 
Ich habe es über "sbis PIND, 1" (wenn eine '1' gesendet wird, dann 
überspringe') probiert, aber das klappt nicht.

von Fabian (Gast)


Lesenswert?

Ja, du kannst den restlichen Port nutzen. Die AF bezieht sich dann nur 
auf die Uart-Pins.

Niklas Beuster schrieb:
> Und noch etwas: Kann man irgendwie das Signal von TxD wieder einlesen?
> Ich habe es über "sbis PIND, 1" (wenn eine '1' gesendet wird, dann
> überspringe') probiert, aber das klappt nicht.

Da verstehe ich nicht, was Du genau versuchst....

von Uwe (de0508)


Lesenswert?

Niklas, dein Frage verstehe ich nicht, die Funktionen der Pins steht im 
Datenblatt - genau.

Wenn der USART läuft hat dieser die Kontrolle über die Tx,Rx Pins.

Steht doch alles dort.

Evtl. kannst Du uns deine Fragen etwas genauer stellen ?

von Niklas B. (niklas90)


Lesenswert?

Ich möchte nur abfragen ob gerade eine '1' oder eine '0' gesendet wird 
und entsprechend die eine oder die andere Aktion auslösen.

von Fabian (Gast)


Lesenswert?

0 oder 1 gesendet wird?! Im physikalischen Sinne? Eine Ascii 0 bzw. 1 
besteht ja aus einer Bitsequenze. Außerdem: Du sendest doch die Daten 
selber. Dann wirst du doch auch wissen, was Du sendest...?!

von Oliver J. (helmo2004)


Lesenswert?

Niklas Beuster schrieb:
> Ich möchte nur abfragen ob gerade eine '1' oder eine '0' gesendet wird
> und entsprechend die eine oder die andere Aktion auslösen.
Was soll das für Sinn machen?
Du weißt schon was ein UART ist?

von Niklas B. (niklas90)


Lesenswert?

Nein, '1' oder '0' im Sinne von Pegel, also physikalisch. Und ja, ich 
weiß was UART ist und ja - ich weiß was ich sende, aber wie kriegt man 
raus, wann die UART die einzelnen Bits rausgibt? Klar müsste man 
umständlich über die Baudrate berechnen, aber kann man nicht auch 
einfach den TxD-Pin abfragen?

von Noname (Gast)


Lesenswert?

Die Frage ist wozu man das machen sollte.

Dein Grund dafür wird, so nehmen wir alle erstmal an, plausibel und 
sinnvoll sein. Aber welcher ist das? Vielleicht kannst Du mit einer 
anderen Methode Dein Ziel auch erreichen.

So würde ich erstmal sagen: Nutze einen Software-UART. Da weisst Du wann 
1 und 0 herauskommen.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Niklas Beuster schrieb:
> Nein, '1' oder '0' im Sinne von Pegel, also physikalisch. Und ja, ich
> weiß was UART ist und ja - ich weiß was ich sende, aber wie kriegt man
> raus, wann die UART die einzelnen Bits rausgibt? Klar müsste man
> umständlich über die Baudrate berechnen, aber kann man nicht auch
> einfach den TxD-Pin abfragen?

Der 2313 hat recht viele Eingänge. Vielleicht ist einer davon noch frei? 
Dann kannst du den TxD über einen Widerstand - sagen wir 4,7 kOhm - auf 
diesen Eingang legen und ihn pollen oder sogar per Pin-Change-Interrupt 
abfragen.

von Oliver J. (helmo2004)


Lesenswert?

Was soll das Einlesen des TXD Pins denn bringen?
Was versprichst du dir davon?

von Niklas B. (niklas90)


Lesenswert?

Ok, es geht also scheinbar nicht, Danke, das reicht mir schon ;-)

Ich möchte eigentlich nur die UART-Sequenz FM modulieren und habe leider 
schon PORTB und PORTA komplett belegt für andere Zwecke und wollte das 
Signal wieder einlesen, damit ich einem Timer sagen kann er soll bei 
einer '1' eine andere Frequenz (Interrupt bei Compare) als bei einer '0' 
einstellen und ich in der Interrupt-Routine den einen Pin von PORTA an- 
und ausschalten kann für ein Rechtecksignal, welches sich in der 
Frequenz ändert.

Und ja, ich weiß was Manchester-Codierung ist und nein, ich mag das net 
verwendet und ja ich weiß wie ein Modem funktioniert, Danke ^^

von Niklas B. (niklas90)


Lesenswert?

Ha! Es geht doch! Man kann das UART-Signal über PIND einlesen, genauso 
wie ich's im Ausgangsbeitrag geschrieben habe, ich hatte nur einen 
anderen Fehler im Code.

Komisch dass man sowas nur nach Mitternacht mit Bier hinkriegt :D Naja, 
jetzt gehts, wie man hoffentlich auf dem Bild sehen kann. (Wenn denn das 
Forum endlich mal das Bild hochladen würde [und ja, es ist im richtigen 
Format])

von Niklas B. (niklas90)


Angehängte Dateien:

Lesenswert?

Hm, scheinbar will der keine Bilder per Edit hochladen...

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Niklas Beuster schrieb:
> Ha! Es geht doch! Man kann das UART-Signal über PIND einlesen, genauso
> wie ich's im Ausgangsbeitrag geschrieben habe, ich hatte nur einen
> anderen Fehler im Code.

Genial!
Und gut zu wissen, dass das geht. Damit spart man eine Hand voll 
Bauteile, die man sonst extern für den Modulator brauchen würde.

von Pete (Gast)


Lesenswert?

Niklas Beuster schrieb:
> Ich möchte eigentlich nur die UART-Sequenz FM modulieren

Warum sollte man das tun?

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.