Da hab ich mich extra angemeldet, zu lange geschrieben und bin wohl wieder rausgeflogen ...
Druckbare Version
Da hab ich mich extra angemeldet, zu lange geschrieben und bin wohl wieder rausgeflogen ...
Du hast ja echt Ahnung!
Wie Programmiert man so einen Algorithmus?
Du hast geschrieben, dass du verschiedene MOdule benutzt.
In wiefern unterscheiden sich MOdule von ganz normalen Programmen?
Sind es einfach nur Funktionen, die einen RÜckgabewert liefern?
MFG Moritz
Hallo Moritz.
Zunächst mal wieder das Wiki:
http://de.wikipedia.org/wiki/Modul
Ein Modul ist
1. in der Technik ein genormter Teil eines größeren Ganzen. Module werden hauptsächlich verwendet, um sie leicht gegen andere Module austauschen zu können, oder neue Module zu besagtem Ganzen hinzuzufügen. Deshalb ist für Module eine Schnittstelle vonnöten, um sie mit dem Ganzen zu verbinden.
[...]
6. Modul (Softwarearchitektur): In der Computer-Programmierung eine Gruppe von Befehlen, die eine bestimmte Funktion erfüllt und über eine definierte Schnittstelle aufgerufen wird.
Bei den Modulen handelte es sich in meinem Fall um eine Mischung aus Punkt 1 und Punkt 6.
- Ein komplettes Mikrokontrollersystem auf Basis AT90S1200, das nur den Liniensensor auswertet und über einen Bus an das Hauptkontrollermodul liefert.
- Für die Motorsteuerung gab es ein zweites Modul auf Basis AT90S1200, das sich nur um die Motoren gekümmert hat und ebenfalls über den Bus mit dem Hauptkontrollermodul zusammengearbeitet hat.
- Ein Hauptkontrollermodul auf Basis ATMega8, das sich mit den beiden anderen Modulen unterhalten hat und die übergeordnete Steuerung erledigt hat.
Details findest du hier:
http://www.talentraspel.de/html/robomodules.html
http://www.talentraspel.de/html/roboplugs.html
Grüße,
Kai.
Ach so, du verwendest, also mehrere ATmels?
Die dann über nen Bus kommunizieren?
MFG Moritz
Das mit den Addlinks kannst du wahrscheinlich vergessen, schau mal unter ADDLINK bestllen aber wo
Genau:
1 AT90S1200-Modul für die Motorsteuerung
1 AT90S1200-Modul für den Liniensensor
1 ATMega8-Modul als Hauptkontroller
Kommunikation über einen 4-Bit Bus, der max. 4 Module mit jeweils eigener Interrupt-Leitung bedienen kann.
Mit einem ATMega32 kann man aber alles auf ein Board packen. Das mit dem Bus-System war mal so zum ausprobieren, hat aber auch gut funktioniert.
Grüße,
Kai.
? Also verwendest du jetzt nur noch den Atmega?
Unterstützen die Atmels kein I2C?
MFG Moritz
ATMega ist auch ein AVR und auch von Atmel ;-)Zitat:
Zitat von RCO
I²C ist eine Schnittstelle, im Prinzip kann das jeder Controller...
Gruß, Sonic
Nein, dass meinte ich nciht, dass der Atmega ein AVr ist ist klar, und was I2C ist weiß ich auch ungefähr.
Die erste Frage bezog sich auf:
'Mit einem ATMega32 kann man aber alles auf ein Board packen.'
und die zweite:
'Kommunikation über einen 4-Bit Bus, der max. 4 Module mit jeweils eigener Interrupt-Leitung bedienen kann. '
MFG Moritz
Hallo Moritz.
>> Also verwendest du jetzt nur noch den Atmega?
Ja, ich verwende im Moment nur den ATMega32. Allerdings habe ich ATMega8, AT90S2313 und AT90S1200 je nach Anwendungsfall auch in der Tasche.
>> Unterstützen die Atmels kein I2C?
Die AT90S... Serie kann kein I2C per Hardware. D. h. I2C muss per Software realisiert werden, das nimmt natürlich Resourcen in Anspruch und die maximale Geschwindigkeit ist auch begrenzt. Ab ATMega geht das dann per Hardware und auch ziemlich schnell.
Auf http://www.talentraspel.de/html/robo...roboplugs.html habe ich die von mit ausprobierten Architekturen beschrieben.
Ich habe zuerst die "RoboModules" gebaut. Da habe ich ganz auf I2C verzichtet und ein 1-Draht-Protokoll realisiert. Das funktionierte für einfache (meist übergeordnete) Steuerungsaufgaben auch prima. Für schnelle Reaktionen, die in den Regelkreisen benötigt werden, hat es dann aber nicht gereicht.
Also habe ich das Konzept um ein Modul erweitert, an das andere Module über einen 4-Bit-Bus angeschlossen werden. Ein "RoboModul" mit bis zu vier "RoboPlugs". Damit konnte ich dann auch schnelle Regelkreise modular aufbauen.
Aber auch bei der Buskommunikation gibt es eine Geschwindigkeitsobergrenze. Daher habe ich dann das gesamte System auf eine ATMega32-Hauptplatine umgestellt, an die nur noch passive Module angeschlossen sind. Dadurch kommt die maximale Geschwindgkeit des Mikrokontrollers zum Tragen. Für komplexere Aufgaben nehme ich einfach mehrere ATMega32-Hauptplatinen, die sich dann tatsächlich über Highspeed I2C untereinander sychronisieren.
Warum habe ich das alles gemacht?
Ich wollte an einer gleichbleibenden Aufgabenstellung (Finde den Weg durch ein Linienlabyrinth) die Vor- und Nachteile der verschiedneen Architekturen systematisch erforschen. Dadurch kann ich bei zulünftigen Entwicklungen immer optimalere Architekturen entwerfen.
Grüße,
Kai.