Hallo, Ich benutze den C-Code aus dem Tut hier für die uart initialisierung und sende einfach den Zustand von einem Port auf den anderen Atmega und gebe ihn dort wieder aus . Jetzt möchte ich gerne eine Status Led am Empfangsatmega haben, die anzeigt, wenn er etwas empfängt oder eben einen fehler anzeigt, wenn er nichts empfängt. Wie kann ich sowas softwaremäßig realisieren oder wo muss ich anfangen ? mfg Thorsten
> wenn er etwas empfängt Das geht so ohne weiteres nicht. Du kannst eine LED erst anschalten, wenn er etwas empfangen hat, denn erst dann bekommst du das mit. An dieser Stelle wäre dann auch der richtige Zeitpunkt, irgendwelche Fehlerflags (Overrun/Parity) auszuwerten und anzuzeigen. > wenn er nichts empfängt. Das ist für eine "übliche" SIO kein Fehler. Denn wenn nichts gesendet wird, kann auch nichts empfangen weren. In deiner Anwendung kann das aber ein Fehler sein, weil du evtl. dauernd sendest.
Also so in etwa :
1 | ISR(USART_RXC_vect) //Empfangsinteruppt wird ausgelößt sobald ein Byte empfangen wurde |
2 | {
|
3 | PORTC^= (1<<PC0); |
4 | }
|
Eher so:
1 | volatile uint8_t timeout; |
2 | :
|
3 | :
|
4 | ISR(USART_RXC_vect) |
5 | {
|
6 | timeout = 255; |
7 | }
|
und in der mainloop (quick and dirty):
1 | if(timeout) { |
2 | PORTC |= (1<<PC0); -- LED einschalten |
3 | timeout--; |
4 | }
|
5 | else
|
6 | PORTC &= ~(1<<PC0); -- nach gewisser Zeit: LED aus |
vlt. einfach eine LED mit an den RX Pin, dann blinkt die LED wie wild wenn was ankommt... Achtung LOW-CURRENT LED nehmen.
also wird demnach die Led erst angeschaltet, wenn die daten bereits zum teil empfangen wurden, also nach einer bestimmten zeit und wenn halt in dieser Zeit nichts empfangen wurde, leuchtet sie eben nicht richtig??
> also wird demnach die Led erst angeschaltet, wenn die daten bereits zum > teil empfangen wurden, Das kommt darauf an, was man daraus macht... Auf jeden Fall reagiert der Empfangsinterrupt erst, wenn 1 Byte komplett empfangen wurde.
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.