www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Suche Attiny Soft-Uart


Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl. passt das hier

Beitrag "Software UART mit FIFO"

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder das hier:
Beitrag "Software UART"

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sam .. (sam1994)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Sam .. (sam1994)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gratuliere zum Erfolgserlebnis. Habe dir gerne geholfen.

Gruß Skriptkiddy

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.