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.
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.
>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.
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
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)?
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
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.
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
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.