Hey,
ich habe eine Frage, kann man den URXC - Interrupt in einem laufenden Programm für eine gewisse Zeit (z.B. 1 Sec) deaktivieren und anschließend Aktivieren?
Ich habe nämlich folgendes vor:
Ich möchte mir ein RS485 Netz aus AVRs (Tiny2313 und Mega644p) aufbauen. Es soll ein 2 Draht Bus werden, ich weiß man muss dann zwischen den Datenrichtungen umschalten also senden und empfangen. Es soll ein Single Master Multi Slave System am Ende stehen. In der Form, der Master übergibt ein Befehl (Zieladresse,Quelladresse,Daten[*],Festgelegter Schlusswert)
[*]
und die Slaves sollen im gleichen Muster antworten. Aber nur Antworten wenn sie gefragt werden. Ich habe nach einer ganzen weite googlen nun etwas gefunden, was mir helfen kann:
Den URXC - Interrupt, mit dem ich einkommende Zeichen in eine Variable oder ein Array packen kann. Nun meine Überlegung, die ersten 8 Bits (Ziel und Quelladresse soll im Binärsystem übertragen werden) die das Ziel definieren sollen abgefragt werden, sobald diese empfangen wurden soll im Interrupt überprüft werden, ob der Slave gemeint ist oder nicht, wenn nicht soll der Interrupt für 1 Sec oder so deaktiviert damit das Hauptprogramm nicht immer wieder unterbrochen wird. Also kurz um, damit der Slave nicht zu viel Müll erhält, den er dann nach erhalt der ganzen Nachricht erst entschlüsselt und überprüft, war es über für mich.
Oder ist es im allgemeinen einfacher das gesamte Datenpäkchen zu erhalten und erst dann zu konntrollieren? Oder ist es ggf. nicht möglich / total blödsinnig wärend der Laufzeit diesen Interrupt zu aktivieren / deaktivieren?
Dazu noch eine Frage, für mein Vorhaben ist der 2 Drahtbus eigentlich das vorteilhafteste, was ich tuen kann? Hab nämlich auch schon gesehen, es gibt alternativ ein 4 Draht Bus, wo Sende- und Empfangsleitungen getrennt sind. Kann das ggf. bei meinem Projekt Vorteile bringen? Wenn ja was für Bustreiber benötige ich eigentlich dann?
Kann mir da jemand zufällig einen Typ nennen? Und ist es für jede Baugruppe der gleiche? Also für Master und die Slaves?
Ich hoffe mir kann jemand helfen, wenn jemand extreme Schwachstellen an meinem vorhaben Sieht, bitte kurze Rückmeldung bzw. Tipps, wie es besser klappen könnte.
Michael
ich habe eine Frage, kann man den URXC - Interrupt in einem laufenden Programm für eine gewisse Zeit (z.B. 1 Sec) deaktivieren und anschließend Aktivieren?
Ich habe nämlich folgendes vor:
Ich möchte mir ein RS485 Netz aus AVRs (Tiny2313 und Mega644p) aufbauen. Es soll ein 2 Draht Bus werden, ich weiß man muss dann zwischen den Datenrichtungen umschalten also senden und empfangen. Es soll ein Single Master Multi Slave System am Ende stehen. In der Form, der Master übergibt ein Befehl (Zieladresse,Quelladresse,Daten[*],Festgelegter Schlusswert)
[*]
Code:
Daten vom Master: t=abfragen (t wäre in dem Fall für Temperatur)
Daten vom Slave: t=21,5
und die Slaves sollen im gleichen Muster antworten. Aber nur Antworten wenn sie gefragt werden. Ich habe nach einer ganzen weite googlen nun etwas gefunden, was mir helfen kann:
Den URXC - Interrupt, mit dem ich einkommende Zeichen in eine Variable oder ein Array packen kann. Nun meine Überlegung, die ersten 8 Bits (Ziel und Quelladresse soll im Binärsystem übertragen werden) die das Ziel definieren sollen abgefragt werden, sobald diese empfangen wurden soll im Interrupt überprüft werden, ob der Slave gemeint ist oder nicht, wenn nicht soll der Interrupt für 1 Sec oder so deaktiviert damit das Hauptprogramm nicht immer wieder unterbrochen wird. Also kurz um, damit der Slave nicht zu viel Müll erhält, den er dann nach erhalt der ganzen Nachricht erst entschlüsselt und überprüft, war es über für mich.
Oder ist es im allgemeinen einfacher das gesamte Datenpäkchen zu erhalten und erst dann zu konntrollieren? Oder ist es ggf. nicht möglich / total blödsinnig wärend der Laufzeit diesen Interrupt zu aktivieren / deaktivieren?
Dazu noch eine Frage, für mein Vorhaben ist der 2 Drahtbus eigentlich das vorteilhafteste, was ich tuen kann? Hab nämlich auch schon gesehen, es gibt alternativ ein 4 Draht Bus, wo Sende- und Empfangsleitungen getrennt sind. Kann das ggf. bei meinem Projekt Vorteile bringen? Wenn ja was für Bustreiber benötige ich eigentlich dann?
Kann mir da jemand zufällig einen Typ nennen? Und ist es für jede Baugruppe der gleiche? Also für Master und die Slaves?
Ich hoffe mir kann jemand helfen, wenn jemand extreme Schwachstellen an meinem vorhaben Sieht, bitte kurze Rückmeldung bzw. Tipps, wie es besser klappen könnte.
Michael