PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : es geht auch anders



pebisoft
19.01.2005, 08:50
hallo, guten tag.
wir hatten gestern eine diskussion über das wenn und aber von c.
ich habe eine roboter(küchenbrettroboter) mit folgenden anbauteilen:
- sharpsensor g2d12 über adc
- easy-radio (serielles funkmodul)
- ultra srf04 (i2c)
- ultra srf08 mit triggerpuls
- tsop1736 zum empfang von daten mit der fernsehfernbedienung
- ir-diode als sender zum tsop1736
- lcd 24x2, lässt sich auch mit 16x2 ansprechen
- kompassmodul über i2c cmps03
- motoren über pwm
da ich auch belehrungsmässig noch lernfähig bin, würde mich eine lösung
in "c" für "winavr" für die obengenannten baugruppen interessieren.
es können funktionelle hinweise per web sein, die aber konkret sind.
die oben genannten baugruppen werden für die funktionsweise des roboters benötigt.
so wie ich mich im forum umgesehen habe ist das der standard den jeder anstrebt
und je nach der geldbeutelgrössee dieses realisieren möchte.
eine fundamentale zusammenfassung der steuereinheiten in "c" wäre ein erster
schritt zur verwirklichung eines standards für anfänger und nichtanfänger.
hier wäre dann auch eine zügige ideenverbesserung möglich wenn dieses grundgerüst
besteht. ich hoffe auf eine positive antwort.

mfg pebisoft

19.01.2005, 09:37
interessierst du dich auch für Hardware-TWI an sich?
dazu habe ich mal Code gepostet, der Titel war irgendwas mit I²C (oder ähnlich)

für ein LCD gibts die library von Peter Fleury(hab ich verwendet), den Link hab ich nicht im Kopf(ich bin grad nicht daheim), aber der dürfte auch schon mal gepostet worden sein

m.artmann
19.01.2005, 10:29
Hier der Link zur LCD Lib
http://homepage.sunrise.ch/mysunrise/peterfleury/index.html

Gruß
m.artmann

19.01.2005, 11:21
Hallo

und hier ein Link zu einem sehr guten RC5 Empfänger.

MFG

http://www.mikrocontroller.net/forum/read-4-74473.html#new

Pascal
19.01.2005, 12:06
ich hab mir gerade die Aufgaben nochmal durchgesehen...eine IR-LED anzusteuern dürfte kein Problem sein, ist denke ich genauso wie eine normale LED und das wird im Tutorial auf www.mikrocontroller.net erklärt

mit dem Empfänger zur IR-LED kenne ich mich nicht aus(tsop1736), ist das so eine Art Phototransistor? dann könnte man ihn ja entsprechend an einen Interruptfähigen Pin anschließen

m.artmann
19.01.2005, 12:23
Wen der TSOP1736 interessiert,

Bei Reichelt gibt es das Datenblatt zum Runterladen.
Auf Seite 2 ist unten eine Beispielschaltung die wunderbar funktioniert.

Gruß
m.artmann

Thorsten
19.01.2005, 12:43
Für I²C verwende ich die Appnote 315 (Master) und 311 (Slave) von Atmel.
Die Appnotes sind zwar für den IAR Compiler, aber ich hab irgendwo
schon nen angepassten Code für den avr-gcc gepostet.
Da waren auch Beispiele für die Ansteuerung dabei.

Alles andere wie PWM, ADC und Interrupts wird in vielen Tutorials erklärt.
Besonders gut auf http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial

Allgemein gibt es für fast jedes Problem (PS2 Tastatur, UART) schon eine
Appnote von Atmel, lohnt sich da mal durchzublättern.

pebisoft
19.01.2005, 16:30
hallo, ich freue mich über eure vorschläge.
mfg pebisoft

muraad
19.01.2005, 16:59
Hey alle. Erstmal ich fänds auch gut wenn jemand für die genannten Bauteile standart Funktionen schreiben würde. Ich würde daran auch gerne mit arbeiten. Meine C Kenntnisse sind nicht all zu schlecht, und ich habe immer so viele Ideen.
Ich könnte jetzt schon I2C Master Funktionen posten, und wenn interesse besteht könnte ich auch erklären wie man einen ATmega als I2C Slave konfiguriert und Codebeispiele posten.
Gruß Muraad

Thorsten
19.01.2005, 17:17
Hier sind mir grad noch RC5 Funktionen über den Weg gelaufen:
http://www.mikrocontroller.net/forum/read-4-74473.html#new

Ne extra seite für solche Codes wär wirklich nicht schlecht, besonders
für Anfänger. Wenn ich überlege wie lange ich z.B. am UART gesessen
hab :-)
Als meine Routinen fertig waren, hab ich auch welche im Inet
gefunden *g*.

Pascal
19.01.2005, 19:58
und wenn interesse besteht könnte ich auch erklären wie man einen ATmega als I2C Slave konfiguriert und Codebeispiele posten.

hab ich schon gemacht, siehe:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=4168&postdays=0&postorder=asc&start=0

muraad
19.01.2005, 20:20
ok aber ich hab dort nichts gesehen wie der AVR dann damit umgeht.
ich hab ein beispiel mit registern die man nur lesen und welche die man nur beschreiben kann.
Konkret sieht es so aus das ein AVR kontinuierlich alle 8 A/D Ports durchwechselt und misst, das Ergebnis in einer Variable speichert und diese als Register zur verfügung stellt. In meinem Code ist auch ein Register in das man schreiben kann und der AVR führ dann eine Funktion mit dem Register Wert aus. z.B. Register 10 für Drehung links (Wert 0-360). In Register Schreiben funktioniert bei mir wie bei den US-Sensoren oder EEPROMS. Und ich berüchsichtige in meinem Code alle Statuscodes nicht nur 0x80 und 0x60.
Aber ne Frage zu deinem Beispiel, wenn es für Slave ist wieso stellts du dann mit TWBR usw. die Frequenz ein, die bekommt der doch über den Takt Pin vom Master oder hab ich da was übersehen?
Gruß Muraad

Pascal
19.01.2005, 20:43
versteh das bitte auch nicht so, dass ich denke, dass mein Code der beste und ausführlichste ist, der war hauptsächlich für einen speziellen Fall gedacht und hab ihn dann al Beispiel gepostet
es ging ja auch nicht darum, eine möglichst umfangreiche Funktion zu schreiben, die alle Eventualitäten abdeckt, sondern ein Beispiel, das die Funktionsweise des TWI beim Slave erläutert



ok aber ich hab dort nichts gesehen wie der AVR dann damit umgeht.

mein Code soll auch nur dafür da sein, damit der Master dem Slave Daten übermitteln kann, ich wollte das eher allgemein machen, kein konkretes Beispiel, was der Slave dann mit den Daten macht, muss man fallspezifisch programmieren (ist aber auch nur zum Senden, nicht zum Empfangen von Slavedaten)



Und ich berüchsichtige in meinem Code alle Statuscodes nicht nur 0x80 und 0x60.

ich hab nur die benutzt, die nötig waren, für meine Anwendung waren nur diese nötig



wieso stellts du dann mit TWBR usw. die Frequenz ein

hängt wieder von meiner Anwendung ab...da können beide AVRs mal Master werden, deswegen hab ich das gleich mit reingeschrieben, damit ich das später nicht vergesse(ich hätte es für den Beispielcode rausmachen können)

Kjion
19.01.2005, 20:54
@muraad
Dann poste doch mal deinen Code hier. Damit auch andere was davon haben...

MfG Kjion

muraad
19.01.2005, 21:17
Ok da ich keine zeit habe den Code noch zu bearbeiten poste ich das ganze Beispiel und meine i2cmaster.h . Es kann gut sein das noch kleinere Fehler im Code sind. Ich habe keine zwei AVR´s um den Code zu testen. Hab leider nie viel Geld :( konnte mir bis jetzt nur ein RN-Control und einen Sharp IR zum testen kaufen, aber schon viel Code geschrieben, auch für PWM, A/D Converting. usw.
In meinem angehängten Quellcode sind viele Kommentare, wie gesagt nicht überarbeitet, aber es dürfte eigentlich alles erklären.
Meine i2cmaster Funktionen sind aus dem ATmega32 Datenblatt übernommen. Hab sie nur geringfügig abgeändert, und es ist noch keine repeat-start vorhanden.
EDIT
wenn ihr die Datei nicht gleich beim Download öffnen könnt wie ich, dann
bitte mit Programmers Notepad (oder anderer Editor) öffnen.