Hi, folgendes "Problem" stellt sich mir: Ich möchte die Lüfter in meinem PC zentral steuern, jeden über einen eigenen AVR. Die Steuerung als solche funktioniert auch soweit, nun muss nur noch die Kommunikation mit einem Steuergerät her. Hierzu möchte ich NICHT von jedem Steuermodul ein Kabel zum Zentralgerät ziehen, sondern ein BUS-System bauen. - sprich, eine Steuerleitung, die über alle Module drüber läuft. Dazu habe ich mir gedacht, in jeden AVR eine eindeutige ID zu brennen und mit dieser das jeweilige Gerät anzusprechen. Der absolute Overkill wäre jetzt natürlich, wenn sich die Geräte auch noch am Zentralgerät anmelden würden, so dass diese gar nicht mehr eingetragen werden müssten... Das ist aber nicht wirklich nötig. Doch auch ohne diese Anmelde-Prozedur, wie realisiere ich so ein BUS-System? Über den UART? Gibt es da irgendeine Beispielschaltung? Ich bin für jeden Tip dankbar... BTW: Dieses Forum ist mehr als cool... Langsam verstehe ich das Potential von AVRs zu nutzen, vor drei Monaten wusste ich noch nicht einmal, dass die Dinger existieren. THX a lot, Sebezahn
Hi also entweder mit dem UART und dann einen RS485/RS422 Bus aufbauen. Da sind allerdings die Transmitter nicht ganz günstig. Wenn das ganze innerhalb eines PC's abläuft und günstig sein soll: Master->Slaves: Uart TX vom Master mit allen Uart RX der Slaves verbinden. Slaves->Master: Über jeweils einen Transistor ein Wired-AND aufbauen. Die Slaves dürfen dann aber nur auf Anforderung senden. Ja nach Aufbau muß das Signal auf Empfängerseite dan nochmal invertiert werden. Matthias
Schau Dir mal das hier an: http://www.thomasknauf.de/rap/seatalk1.htm#Har Ist zwar für einen ganz anderen Zweck entwickelt, funktioniert aber hervorragend. (Ungeschirmte) Datenleitungen über eine Entfernung von vielen Metern in einer "noisy" Umgebung sind kein Problem (und die Regel) und die Comms Hardware besteht aus zwei Transistoren. Reiner
Hi, Ok, ist noch ein wenig hoch das alles für mich, aber ich werde mich durchkämpfen. Vielen Dank, Sebezahn
Auf vielen Motherboards werden einige Funktionen (z.B. die Temperatursensoren) über den I²C-Bus angesteuert. Evtl. wäre es sogar möglich, sich an den vorhandenen Controller anzuhängen (es gibt einige Freeware-Tools, die die Sensoren abfragen - also muß es möglich sein).
@Sebezahn Ist im Prinzip ganz einfach: 1. Die ATMEL UART wird für 9 Datenbits konfiguriert. 2. Jedes Device hört auf dem Bus bis der Bus frei wird und danach wartet das Device mit seiner eigenen Wartezeit (Priorität). 3. Danach kann das Device senden und hört seine eigene Sendung mit. Wird die Sendung gestört (anderes Device sendet) -> restart mit 1. Die anderen Devices erkennen den Abbruch daran, daß das Datagram nicht die richtige Länge hat. void ST_transmit_frame(unsigned int *frame, unsigned char size) { register int *fptr; /* pointer to frame. */ register int ch; /* echo from bus. */ register unsigned char retransmit = TRUE;/* retransmit flag. */ register unsigned char i; /* byte counter. */ while (retransmit == TRUE) /* while frame not sent */ { retransmit = FALSE; /* assume we have success */ fptr = frame; /* set ptr to start of frame */ while (!ST_idle); /* wait for bus to idle. */ while ((ch = ST_uart_getchar()) != -1); /* empty ST queue. */ for (i = size; i; i--) /* transmit frame. */ { ST_uart_putchar(*fptr); /* transmit a byte. */ while ((ch = ST_uart_getchar()) == -1); /* read the echo. */ if (*(fptr++) != ch) /* compare with echo */ { retransmit = TRUE; /* no match */ break; /* stop transmission */ } } /* next byte */ } }
Hi, vielen Dank, das hat mich schon sehr weiter gebracht. Ich werde mir sowohl den UART als auch den I2C zu Gemüte führen. Gruß Sebezahn
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.