hi, kennt jemand von euch einen SW-Uart-Bootloader, dessen SW-Uart man auch im normalen Programm benutzen kann? Mir geht es darum, dass ich auf einem Tiny Platz sparen möchte und nicht 2 SW-Uart-Implementierungen haben will, die beide Platz fressen. Anforderungen: - C-Interface - Empfangspuffer - An beliebigen Pins lauffähig (PCINT kann genutzt werden) - Am besten wäre eine Baudratenerkennung (Verwendung von 16Mhz interner Takt ohne Crystal) Wär toll, wenns sowas schon gäbe Gruß Vlad
Peter Dannegger hat so ein Teil geschrieben: Beitrag "Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain" Ich verwendes es inzwischen auf allen AVRs, inkl. attiny*.
Ein Software UART sollte an einen Timer gebunden sein. In einem Bootloader moechte man moeglicherweise keine Interrupts haben. Heisst, ich wuerd mir das nicht antun.
avion23 schrieb: > Peter Dannegger hat so ein Teil geschrieben: > Beitrag "Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain" > > Ich verwendes es inzwischen auf allen AVRs, inkl. attiny*. den kenne ich. so weit ich weiß, ist das aber ein reiner bootlader, oder? Hex Oschi schrieb: > In einem > Bootloader moechte man moeglicherweise keine Interrupts haben. warum?
Vlad Tepesch schrieb: > Hex Oschi schrieb: >> In einem >> Bootloader moechte man moeglicherweise keine Interrupts haben. > warum? Soweit ich informiert bin gibt es nur eine gültige Interrupt table. Entweder die im Anwendungsprogramm oder die im bootloader code. Das bedeutet, dass man die ISRs entweder alle im bootloader hat, oder im Anwendungsprogramm. Also sind die beiden sehr stark ineinander verzahnt, ein kleiner Fehler und nichts funktioniert mehr. Vlad Tepesch schrieb: > den kenne ich. > so weit ich weiß, ist das aber ein reiner bootlader, oder? Sorry, ich habe deinen Beitrag nicht aufmerksam gelesen. Ja, das ist ein reiner bootloader. Du bräuchtest also extra code für eine serielle Schnittstelle in deinem Anwendungsprogramm. Anderseits sind es nur 512Byte...
avion23 schrieb: > Soweit ich informiert bin gibt es nur eine gültige Interrupt table. > Entweder die im Anwendungsprogramm oder die im bootloader code. Das > bedeutet, dass man die ISRs entweder alle im bootloader hat, oder im > Anwendungsprogramm. Also sind die beiden sehr stark ineinander verzahnt, > ein kleiner Fehler und nichts funktioniert mehr. stimmt. Hier könnte der Bootloader aber Displatcher spielen. beim Programmieren schreibt er einfach die Einträge, die er selber braucht nicht um, sondern die Zieladressen in eine sperate Stelle, die er aus seiner registrierten ISR anspringt, wenn er grad nicht aktiv ist. Keine Ahnung, ob das funktionieren kann unschön ist, dass ein paar Zusätzliche Takte dazukommen, von der die Anwendung nix weiß
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.