Hallo ich arbeite an einem Projekt wo ich zwei UART-Schnittstellen brauche. ich möchte den ATmega 32 verwenden, dieser verfügte aber leider nur über eine UART schnittstelle (diese brauche isch schon für ein GPS Modul). ist es möglich eine 2te Schnittstelle an einem 'gewöhnlichen' port (z.B. Port B oder C) zu implementieren? vieleicht gibt es einen andere lösung... bin offen für jede anregung. besten dank für euere antworten im voraus markus
Wieso bist du auf den mega32 fixiert? 2 U(S)ARTS sind im mega162, mega64 oder mega128 vorhanden. Es gibt natürlich schon eine Möglichkeit einen UART rein Softwarebasiert zu realisieren, hab ich auch schon gesehen (weiß leider nicht mehr wo) finde ich nur relativ umständlich.
In Atmel App-Note 305 ist eine Software UART beschrieben. MW
Bascom-AVR enthält eine einfach zu nutzende Unterstützung für Software-UARTs, die mit nahezu jedem Portpin genutzt werden kann. So sind auch mehr als zwei Schnittstellen insgesamt möglich. Allerdings ist so eine Lösung nicht mehr sonderlich performant, vor allem, wenn's ums Empfangen auf so einer Schnittstelle geht.
Das ist nicht schlimm. Allerdings ist bei 115200Baud die Auslastung der CPU schon heftig und andere Interrupts müssen verdammt Rücksicht nehmen. Die Software-UART sollte also immer die langsamere sein. Einfacher wirds auch, wenn nur Halb-Duplex nötig. Der Eingang sollte vorzugsweise der ICP sein, mindestens aber ein externer Interrupt. Zum exakten Senden ist ein OC1x Pin ideal. T1 sollte also nicht als PWM benötigt werden. Das Prinzip ist einfach, der ICP erkennt das Startbit und merkt sich die Startzeit. Zu der Startzeit 1,5 * Bitzeit addieren und in ein OC1x-Register laden. Dann bei jedem Compare-Interrupt 1*Bitzeit addieren und den Pin einlesen bis alle 8 Bits drin sind. Senden ist ähnlich, zu dem anderen Compare immer 1*Bitzeit addieren und im Interrupt das "set on compare", bzw. "clear on compare" je nach dem zu sendenden Bit auslösen. Da T1 ja ständig durchläuft ist er als Haupttimer (Overflow-Interrupt) weiterhin verwendbar. Bei Halp-Duplex ist auch noch der andere Compare-Interrupt frei. Peter
Dann gäbe es (vieleicht) noch die Möglichkeit den UART zu multiplexen ....
how... das dies so schnell geht hätte ich nicht gedacht!!! super vorschläge, ich schaue mir mal den code im Atmel App-Note 305 an und ob es mit dem Multiplexen geht (hab ich noch nie verwendent...). besten dangg für die schnellen antworten. melde mich wieder mfg markus
wo finde ich die Atmel App-Note 305 ? klingt sehr verlokend was sie dort sagen. der link funktioniert aber nicht. mfg
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.