Hi möchte gerne einen DS18B20 über den UART vom AVR ansteuern. Verstehe aber nicht, warum in der App-Note von Atmel ein Open-Collector TX mit 2 Transistoren aufgebaut wird, tut's da nicht auch eine einfache Schottky-Diode? Gruß Nobby
Ein gesättigeter Transistor lässt noch ca. 200 mV "stehen" eine Si-Diode macht dagegen 600 mV und eine Schottky 300 mV. Ich könnte mir also vorstellen, dass das der Grund für den Transi ist. Warum man dafür aber die UART bemüht ist etwas fraglich, es gibt sehr gute Software-only Implementationen, die funktionieren dann an jedem Pin und brauchen auch nur einen.
Max D. schrieb: > Warum man dafür aber die UART bemüht ist etwas fraglich, es gibt sehr > gute Software-only Implementationen, die funktionieren dann an jedem Pin > und brauchen auch nur einen. Es soll Controller geben, die neben dem Kreisen in der Idle-Loop auch noch ein paar andere Dinge erledigen sollen, die wichtiger sind, als die 1-Wire Kommunikation. Da kann es hilfreich sein, wenn man die verfügbare Hardwareunterstützung auch nutzt.
Max D. schrieb: > Warum man dafür aber die UART bemüht ist etwas fraglich, es gibt sehr > gute Software-only Implementationen, die funktionieren dann an jedem Pin > und brauchen auch nur einen. Der Uart macht die One-Wire Zeiten aber in Hardware. Wenn dagegen beim Bitbanging ein Interrupt laenger bedient werden will, dann kann es Probleme geben. Beim STM32 geht auch UART OWI mit nur einem Pin, da man auf Single Wire half-duplex und UART-TX als Open Drain umschalten kann.
Uwe Bonnes schrieb: > Wenn dagegen ... ein Interrupt laenger bedient werden will, dann kann es > Probleme geben. Dann sollte man mal über die Programmstruktur nachdenken. Das Wort "länger" sollte im Zusammenhang mit ISR nicht auftauchen.
Max D. schrieb: > Ein gesättigeter Transistor lässt noch ca. 200 mV "stehen" eine Si-Diode > macht dagegen 600 mV und eine Schottky 300 mV. Ich könnte mir also > vorstellen, dass das der Grund für den Transi ist. Ok, dachte ich mir. Mit ner BAT42 funktioniert das Konstrukt. > Warum man dafür aber die UART bemüht ist etwas fraglich, es gibt sehr > gute Software-only Implementationen, die funktionieren dann an jedem Pin > und brauchen auch nur einen. Es gibt auch sehr gute Software UARTS, PWM, I2C, etc. Warum also die eingebaute Hardware nutzen? Der zusätzliche Pin macht den Kohl nicht fett. Aber während der UART ein 1-Wire Bit sendet/empfängt können die Interrupts der anderen Module ebenso bedient werden.
Mike schrieb: > Dann sollte man mal über die Programmstruktur nachdenken. Das Wort > "länger" sollte im Zusammenhang mit ISR nicht auftauchen. Dann lass es mehrere verschiedene Interrupts hintereinander sein...
Uwe Bonnes schrieb: > Dann lass es mehrere verschiedene Interrupts hintereinander sein... Nein, dann ist es eine Frage der Interrupt-Priorität. Ob eine einzelne ISR den Prozessor länger blockiert oder verschiedene ISR entsprechend dem Zeitpunkt ihres Auftreten und ihrer Priorität nacheinander abgearbeitet werden, macht für Echtzeitbetrieb einen riesen Unterschied.
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.