Jain.Zitat von MiniMax
die meisten GPS Empfänger geben 1x pro Sekunde Positionsdaten aus (oder können so konfiguriert werden). Die USART kann nun einen Int auslösen, sobald ein byte empfangen wurde. In der ISR wird dann der String byte für byte zusammengebaut, bei CR/LF dann die CRC überprüfen und eine globale Variable auf 'neue GPS Nachricht empfangen' setzen. in der Main Schleife dann halt überprüfen, ob eine neue GPS Nachricht da ist und ggfs. die Position extrahieren. Da der Mega644p 2 USARTS hat, kann man so im Hintergrund beide GPS Positionen zusammensammeln. Wenn neue Position eingegangen ist die Servos stellen.
Per Timerinterupt alle 250ms den Mega2 bearbeiten. Ein sei() am Anfang dieser ISR bewirkt, daß auch während dieser ISR Bytes von den GPS emfangen werden. Auch hier wieder eine globale Variable um Änderungen in der Bedieneinheit/Mega2 zu signalisieren.
Per I2C kannst du senden/lesen was du willst.
Da die Soft-Uart mit Warteschleifen arbeiten, kommst du damit bei 2x GPS nicht weit, da der komplette uC blokiert ist, solange du an einer Schnittstelle was empfängst.
Versuch meinen ersten Absatz zu verstehen und die Vorteile, die der asynchrone Empfang damit bringt. Kann sowas schwer erklären... in der Mainschleife halt wirklich nur Nachrichten der Subysteme bearbeiten, sonst kommt das mit dem Timing nicht hin und du verlierst Nachrichten vom GPS.
Wie gesagt, siehe unbenannt2, nur 2 Megas. Mega1 als Hauptrechner für 2x GPS, 2x Servo. Mega2 als Schnittstelle zur Bedieneinheit, PC. Vom Mega2 immer einen festen Block lesen und einen anderen festen Block in den Mega2 schreiben, jeweils mit allen relevanten Daten (GPS, Tasten...).
Alternativ könnte Mega1 auch nur dann was in den Mega2 schreiben, wenn wirklich was neues vorliegt. Dann könnte man den Mega2 auch ein Signal an den Mega1 schicken lassen (eine Leitung auf low/high), wenn sich bei ihm was neues ergeben hat...
Die ganze Geschichte bedingt aber wirklich eine intensive Auseinandersetzung mit den Möglichkeiten des AVR.![]()
Was für GPS-Empfänger hast du eigentlich?
Lesezeichen