Forum: Mikrocontroller und Digitale Elektronik Suche Attiny Soft-Uart


von Sam .. (sam1994)


Lesenswert?

Hi

Ich suche jetzt schon länger an einer Lösung für Soft-Uart an einem 
Attiny84.
Die bestaussehende Lösung musste ich jetzt leider wegwerfen, da der 
Attiny84 kein TICIE1 hat (Timer 1 Input Capture Interrupt Enable). Code 
ist hier: http://www.rn-wissen.de/index.php/Software-UART_mit_avr-gcc
Sachen mit T0 funktionieren nicht, da ich die Platine schon habe. Ich 
suche ein Uart für 2 Stinknormale Portpins. Gibt es keine Lösung wie ich 
sie mal bei einem USB2RS323 Attiny gesehen habe: Einfach die Uartpins 
angeben und es läuft? Der Uart darf entweder den 8 oder 16bit Timer 
nehmen (mehr braucht er ja nicht) und mit sonstigen Interrupts arbeiten, 
aber auf keinem Fall mit delay!

Ich hoffe da gibt es etwas.
Danke im Vorraus.

von Huch (Gast)


Lesenswert?

Evtl. passt das hier

Beitrag "Software UART mit FIFO"

von Huch (Gast)


Lesenswert?

Oder das hier:
Beitrag "Software UART"

von Sam .. (sam1994)


Lesenswert?

Huch schrieb:
> Evtl. passt das hier
>
> Beitrag "Software UART mit FIFO"

Schau ich mir nochmal an. Das gefiel mir nicht wegen dem FIFO. Der ist 
in meinem Fall völlig unnötig. Es werden nur Steuerbefehle gesendet. Die 
wenigen Daten belaufen sich auf vielleicht 20Byte/s und das nur ab und 
zu.

Huch schrieb:
> Oder das hier:
> Beitrag "Software UART"

Da steht man braucht den T0 pin. Irgendwie wird das eher als INT0 
beschrieben. T0 und T1 ist doch der Analog Comperator. Wenn man dafür 
auch den PCINTx Interrupt nehmen kann geht das auch.

von Huch (Gast)


Lesenswert?

>Das gefiel mir nicht wegen dem FIFO.
Na dann lass doch den Fifo weg.

Du wirst wahrscheinlich nicht genau das Passende finden. Das musst Du 
entsprechend ändern. Ist doch klar.

von Oliver J. (skriptkiddy)


Lesenswert?

Samuel K. schrieb:
> Die bestaussehende Lösung musste ich jetzt leider wegwerfen, da der
> Attiny84 kein TICIE1 hat (Timer 1 Input Capture Interrupt Enable).

Das Bit heißt laut Datenblatt ICIE1.
Soll helfen da ab und zu mal reinzuschauen.

Gruß Skriptkiddy

von Sam .. (sam1994)


Lesenswert?

OK, ich hab jetzt folgendes Unbenannt:

TIMSK -> TIMSK1
TIFR  -> TIFR1
TICIE1 -> ICIE1

Wenn ich eine LED bei 300Baud dranhänge, sieht man das sie leicht 
flackert.
Die Übertragung über das hier 
http://www.recursion.jp/avrcdc/cdc-232.html#usage finktioniert aber 
nicht. Liegt das daran, dass das kein echter UART ist (von beiden 
Seiten)?

von Oliver J. (skriptkiddy)


Lesenswert?

Samuel K. schrieb:
> Die Übertragung über das hier
> http://www.recursion.jp/avrcdc/cdc-232.html#usage finktioniert aber
> nicht. Liegt das daran, dass das kein echter UART ist (von beiden
> Seiten)?

Nen paar Infos hättest du schon noch geben können, um eine Diagnose 
unsererseits möglich zu machen.

Stimmt F_CPU mit dem tatsächlichen Takt überein?

Funktionierts denn über nem MAX232 an ner richtigen serielle 
Schnittstelle?

Funktionert dein CDC-232 überhaupt?




N

Gruß Skriptkiddy

von Sam .. (sam1994)


Lesenswert?

Skript Kiddy schrieb:
> Stimmt F_CPU mit dem tatsächlichen Takt überein?

Standard Quarz 1Mhz. Div8 Fuse ist ausgeschaltet. Ich werd trotzdem mal 
eine LED im 1s Takt blinken lassen

> Funktionierts denn über nem MAX232 an ner richtigen serielle
> Schnittstelle?

Das wollte ich noch ausprobieren.

> Funktionert dein CDC-232 überhaupt?

Ich hab mit einem 2 Chip die Signale gemessen, die aus TxD rauskommen, 
wenn man etwas mit dem Terminal sendet. Da sieht man eindeutig, dass da 
Daten laufen.
Sobald CDC-232 erkannt wird, sollte es eigentlich funktionieren. Ich 
habe es allerdings auf dem Save MOde laufen. Da ist 9600Baud das 
höchste.

von Oliver J. (skriptkiddy)


Lesenswert?

Samuel K. schrieb:
> Sobald CDC-232 erkannt wird.....
Das heißt lediglich, dass die USB-Seite funktioniert. Es kann immer noch 
Murks auf der UART-Seite sein (hardwaremäßig). Das ist aber eher 
unwahrscheinlich.
Also hast du mit deinem CDC-232 schon erfolgreich Daten 
versenden/empfangen können? Das ist für die Fehlersuche von erhebicher 
Bedeutung. Dann dann kann man es als mögliche Fehlerquelle wirklich 
ausschießen.

Gruß Skriptkiddy

von Sam .. (sam1994)


Lesenswert?

Skript Kiddy schrieb:
> Also hast du mit deinem CDC-232 schon erfolgreich Daten
> versenden/empfangen können? Das ist für die Fehlersuche von erhebicher
> Bedeutung. Dann dann kann man es als mögliche Fehlerquelle wirklich
> ausschießen.

Empfangen halt. Aber nicht ausgewertet. Ich hab die Sende Leitung des 
CDC-232 mit 2kHz abgetastet und gesehen, dass sich beim senden was tut.

Ich habe jetzt die Softuart ausgänge vom Attiny an das Pollin Board 
gesteckt, so dass sie zum RS232 Wandler führen. Das Ergebnis erst 
nichts, da das GND Kabel kaputt war und einen Widerstand von ein paar 
kOhm hatte. Danach kommen viele Fragezeichen an. Also wird das Protokoll 
gestört. Oder die Baudraten stimmen nicht. Ich mach jetzt mal das mit 
dem LED toggeln.

EDIT: Da fällt mir ein, CDC-232 funktioniert doch. Ich hab vor ein paar 
Tagen mal den RxD und den TxD Pin verbunden und die Daten kamen zurück.

EDIT2: Wird das Ding mit 8Mhz ausgeliefert? Es blinkt wird 
schätzungsweise 8mal in der Sekunde getoggelt.

von Sam .. (sam1994)


Angehängte Dateien:

Lesenswert?

Wird das Ding mit 8Mhz ausgeliefert? Es blinkt wird
> schätzungsweise 8mal in der Sekunde getoggelt.
blinkt hätte ich weglassen sollen.

Der war wirklich auf 8MHz getaktet. Jetzt toggelt die LED nur noch 1mal 
pro Sekunde.
Bei 9600Baud kommen jetzt diese Zeichen ` mit dem ASCII Wert 96. 
Eigentlich sollte "Hallo" gesendet werden. Den Code hab ich mal 
angehängt.

von Sam .. (sam1994)


Lesenswert?

Funktioniert jetzt. Ich hab übersehen das die Funktion uart_putc einen 
char fordert. Ich hab gemeint da stände char*. Jetzt funktioniert es 
ohne Probleme.

von Oliver J. (skriptkiddy)


Lesenswert?

Gratuliere zum Erfolgserlebnis. Habe dir gerne geholfen.

Gruß Skriptkiddy

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.