Forum: Mikrocontroller und Digitale Elektronik Tiny85 Uart RX ohne INT0 ?


von Philipp K. (philipp_k59)


Lesenswert?

Hi,

bevor ich lange rumprobiere dachte ich mir ich mach mich erstmal schlau, 
habe natürlich schon viel im Wiki gelesen und einiges versucht.

Es geht um einen Tiny85 mit V-USB das ja schon den einzigen Interrupt 
des Tinys nutzt. Wäre nicht schlecht wenn ich jetzt einen Software-Uart 
RX Eingang dazu implementieren könnte, habe allerdings gelesen das das 
halt diesen 1 Interrupt benötigt.

Ich weiß, eigentlich würde ich auch einen Hardware Uart bevorzugen aber 
nun hab ich leider alles dafür da :/

Gruß,
Phil

von c-hater (Gast)


Lesenswert?

Philipp K. schrieb:

> Es geht um einen Tiny85 mit V-USB das ja schon den einzigen Interrupt
> des Tinys nutzt.

Das ist nicht der einzige. JEDER Pin des Tiny85 kann einen Interrupt 
erzeugen.

Das hilft dir nur kaum. Das Problem ist, daß V-USB (gezungenermaßen) 
eine komplette LowSpeed-USB-Transaktion in einer ISR abarbeitet, anders 
könnte V-USB das dafür nötige Timing nicht sicherstellen.

Durch derart lange Phasen exclusiver Codeausführung unterbrochen, kann 
ein Software-UART allerdings nur noch bei sehr geringen Bitraten 
funktionieren. Größenordnung 600Bit/s.

Willst du mehr, mußt du den UART-Code mit dem USB-Code quasi 
"verschachteln". Das geht allerdings nur, wenn überhaupt noch freie 
Taktzyklen zum Verschachteln vorhanden sind. Bei 12MHz ist das also 
ziemlich hoffnunglos. Und natürlich geht es ganz sicher nicht, indem du 
irgendwo zusammengesuchten C-Code irgendwie zusammenleimst.

Wenn du also keine Lust oder Zeit hast, wirklich zu programmieren, 
solltest du dringend in Erwägung ziehen, auf ein Teil mit Hardware-UART 
zu wechseln, denn das entspannt die Sachlage ganz erheblich, nämlich bei 
8N1 knapp um den Faktor 20. Die gute Hälfte davon dadurch, daß halt über 
10 UART-Bitzeiten hinweg alles ohne MCU geht, den Rest dadurch, daß das 
eingebaute Double Buffering das Abholen eines empfangenen Worts durch 
die MCU nochmal um fast eine Wortzeit verzögert ermöglicht.

von Philipp K. (philipp_k59)


Lesenswert?

Danke für Deine Antwort, ich habe es mir fast gedacht bzw das mit den 
sehr engen Zyklen war im Code nicht zu übersehen..

Dann kann ich quasie gleich auf einen m32u4 oder m32u2 zugreifen, da hab 
ich dann ein Sorglospaket.

Ich werde mal selbst suchen, gibt es einen Tiny mit HW-Uart und min 8kb 
Flash? Befürchte der m8 ist schon fast das gleiche, der tiny168 sollte 
auch okay sein.

Gruß,
Philipp

von Philipp K. (philipp_k59)


Lesenswert?

Hm. was wäre wenn ich ein High-Signal hätte das die Ankunft der Uart 
Daten ankündigt?

von Sascha W. (sascha-w)


Lesenswert?

Philipp K. schrieb:
> Hm. was wäre wenn ich ein High-Signal hätte das die Ankunft der Uart
> Daten ankündigt?

das nützt dir nicht viel, denn dann müsstest du u.U. eine laufende 
USB-Übertragung zwangsbeenden um die UART zu bedienen - ich glaube kaum 
das das Sinn der Sache ist.

Sascha

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.