demmy
02.03.2015, 18:45
Hi zusammen,
ich habe aktuell ein riesen Projekt am laufen. Und zwar bin ich gerade dabei einen Buskoppler zu entwickeln. Das heißt ich habe einen Atmega1284p mit 2 USART auf der einen Seite und einige Atmega8 auf der anderen Seite. Der Atmega1284P stellt den Buskoppler dar, welcher einmal über RS485 (als Master) mit beliebig vielen Atmega8 kommuniziert. Gleichzeitig stellt er die Daten dann gebündelt auf einer weiteren RS485-Schnittstelle bereit (als Slave), welche von einem PC abgeholt werden. Die an den Koppler angeschlossenen Karten sind verschiedenste Ein- und Ausgänge für unterschiedliche Steuerungsaufgaben. Die Karten können beliebig kombiniert werden und kommunizieren alle über ein festes Telegramm.
Das ganze Sieht dann so aus:
29919
Jetzt zu meinem Problem:
Nach dem Einschalten der Spannungsversorgung, "Scannt" der Koppler alle Teilnehmer ab die an die 2. UART angeschlossen sind. Die Adresse bekommen die
Karten über den Steckplatz auf dem Rackbus. Alle gefundenen Teilnehmer werden dann Zyklisch (frei laufend) abgefragt.
Es ist nur so, wenn ich den RS485-RS232 wandler, den ich zur Telegrammdiagnose immer mitlaufen lasse nicht gesteckt habe, dann findet er meistens die Teilnehmer nicht, nach etlichen Versuchen nicht. Stecke ich den Wandler wieder auf, dann findet er die Karten sofort, ohne Probleme. Als Treiber Bausteine verwende ich die MAX485! Woran kann dieses verhalten liegen? Ist das irgendwie ein Hardwareproblem?
Und ein weiteres Problem:
Wenn der Rackbus läuft, also die Atmegas dauernd Daten untereinander austauschen, und ich schalte am PC die Software eine, welche zyklisch die gebündelten Daten vom Atmega1284p abholt, dann stoppt plötzlich der Rackbus. Ich kann mir das einfach nicht erklären. ich verwende für beide Schnittstellen jeweils die HardwareUART des Atmega und Sende die Daten im Hintergrund über den Puffer in Bascom. Die beiden Programmteile der beiden Busse laufen auch völlig getrennt voneinander (frei laufend). Hat jemand von euch schon mal zwei Schnittstellen gleichzeitig verwendet und so ein Problem gehabt? Ich habe irgendwie das Gefühl das ist ein Softwareproblem. Gibt es irgendwelche Speicherbereiche die sich beide UARTS teilen?
Ich hoffe ich konnte ein wenig euer Interesse wecken und Ihr habt Lust mir zu helfen mein Problem zu lösen. Ich bin echt am Verzweifeln, ich weiß nicht wonach ich noch suchen soll. Bei ernstgemeinten Hilfeangeboten stelle ich gerne Schaltpläne und Programme zur Verfügung.
ich habe aktuell ein riesen Projekt am laufen. Und zwar bin ich gerade dabei einen Buskoppler zu entwickeln. Das heißt ich habe einen Atmega1284p mit 2 USART auf der einen Seite und einige Atmega8 auf der anderen Seite. Der Atmega1284P stellt den Buskoppler dar, welcher einmal über RS485 (als Master) mit beliebig vielen Atmega8 kommuniziert. Gleichzeitig stellt er die Daten dann gebündelt auf einer weiteren RS485-Schnittstelle bereit (als Slave), welche von einem PC abgeholt werden. Die an den Koppler angeschlossenen Karten sind verschiedenste Ein- und Ausgänge für unterschiedliche Steuerungsaufgaben. Die Karten können beliebig kombiniert werden und kommunizieren alle über ein festes Telegramm.
Das ganze Sieht dann so aus:
29919
Jetzt zu meinem Problem:
Nach dem Einschalten der Spannungsversorgung, "Scannt" der Koppler alle Teilnehmer ab die an die 2. UART angeschlossen sind. Die Adresse bekommen die
Karten über den Steckplatz auf dem Rackbus. Alle gefundenen Teilnehmer werden dann Zyklisch (frei laufend) abgefragt.
Es ist nur so, wenn ich den RS485-RS232 wandler, den ich zur Telegrammdiagnose immer mitlaufen lasse nicht gesteckt habe, dann findet er meistens die Teilnehmer nicht, nach etlichen Versuchen nicht. Stecke ich den Wandler wieder auf, dann findet er die Karten sofort, ohne Probleme. Als Treiber Bausteine verwende ich die MAX485! Woran kann dieses verhalten liegen? Ist das irgendwie ein Hardwareproblem?
Und ein weiteres Problem:
Wenn der Rackbus läuft, also die Atmegas dauernd Daten untereinander austauschen, und ich schalte am PC die Software eine, welche zyklisch die gebündelten Daten vom Atmega1284p abholt, dann stoppt plötzlich der Rackbus. Ich kann mir das einfach nicht erklären. ich verwende für beide Schnittstellen jeweils die HardwareUART des Atmega und Sende die Daten im Hintergrund über den Puffer in Bascom. Die beiden Programmteile der beiden Busse laufen auch völlig getrennt voneinander (frei laufend). Hat jemand von euch schon mal zwei Schnittstellen gleichzeitig verwendet und so ein Problem gehabt? Ich habe irgendwie das Gefühl das ist ein Softwareproblem. Gibt es irgendwelche Speicherbereiche die sich beide UARTS teilen?
Ich hoffe ich konnte ein wenig euer Interesse wecken und Ihr habt Lust mir zu helfen mein Problem zu lösen. Ich bin echt am Verzweifeln, ich weiß nicht wonach ich noch suchen soll. Bei ernstgemeinten Hilfeangeboten stelle ich gerne Schaltpläne und Programme zur Verfügung.