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
Gast
#2193530
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?
Gast
#2193549
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ß
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.