Mahlzeit! Ich benutze für ein Studienprojekt einen Atmel AT89C5131. Programmiersprache ist Assembler. Welcher kann ich nicht sagen. Aussage des Dozenten: "Assembler, 8051 kompatibel" Ich habe mal eine Befehlsliste angehängt, die vielleicht etwas Licht ins Dunkel bringt. Nun möchte ich einen Ultraschallsensor (SRF02) per TWI abfragen. Leider habe ich keinen Schimmer von TWI und bin auch allgemein ein Anfänger was µC und deren Programmierung betrifft. Kann mir jemand die Sache etwas näherbringen? Bitte postet keine Beispiele die "so ähnlich" sind, das hilft mir leider nicht. Hab mir schon ne menge Programme angesehen, werde daraus aber nicht schlau, da es sich entweder um eine falsche Programmiersprache handelte oder das Beschreiben eines Eproms oder die Kommunikation zwischen zwei Controllern. Ich möchte den Sensor ansprechen und von ihm Daten erhalten. Was TWI ist und wie es grundsätzlich funktioniert ist mir klar, "nur" an der Programmierung scheitert es. Mit dieser TWI-Geschichte steht und fällt unser Projekt, wäre daher für hilfe mehr als Dankbar. Alternative zum I-Net: Kennt sich vielleicht jemand damit aus und wäre bereit mir und meinem Kollegen die Sache an einem Nachmittag persönlich etwas näher zu bringen? Wir wohnen im Raum Hannover und würden ca 2 Stunden Fahrt auf uns nehmen. Der Unterricht sollte auch nicht umsonst sein Wink Danke und Gruß Timmee
Du wirst also das I2C Protokoll in 8051-Assembler abbilden müssen. Das ist nicht allzu schwierig. Allerdings ist das, wie wenn einer sagt: "Fahr mal mit dem Fahrrad Slalom um die Hütchen dort". Nicht weiters schwer, wenn man Fahrrad fahren kann. Schwieriger wirds, wenn man erst noch Fahrrad fahren lernen muß :-/ > Leider habe ich keinen Schimmer von TWI Wie gesagt: nicht weiter schwer... > bin auch allgemein ein Anfänger was µC und deren Programmierung betrifft. ...das macht die Sache allerdings anspruchsvoll :-o > an einem Nachmittag Ab hier wirds unmöglich. Da hast du m.E. allerdings irgendwie falsche Vorstellungen zum Thema. > für ein Studienprojekt Wieviel Zeit hast du, bis die Arbeit abgeliefert sein muß? > Ich möchte den Sensor ansprechen und von ihm Daten erhalten. Und dann? Ab damit in die Tonne?
> Wieviel Zeit hast du, bis die Arbeit abgeliefert sein muß? Abgeliefert sein muss das Teil am 2.09.09 > Und dann? Ab damit in die Tonne? Natürlich nicht ;-) Wir bauen ein autonom fahrendes RC-Car und nutzen den Ultraschallsensor zur Hinderniserkennung. D.h. der die Daten des Sensors sollen im einem Register abgelegt werden, welches wir dann im weiteren Programm abfragen und das auto entsprechen langsamer fahren lassen oder eben anhalten. Das Fahrzeug ist nahezu komplett, also ist hier nicht mehr viel Aufwand nötig. Es scheitert "nur" an der Programmierung, bzw an der TWI-Geschichte. Wie die gewonnenen Daten dann weiter verarbeitet werden ist dann nicht mehr das Problem.
Hallo Florian, Du hast die Frage ja schon mal am 12.6. gestellt Beitrag "TWI mit AT89C5131 / 8051". Da war es zwar ein Infrarotsensor, das Prinzip ist aber sicher gleich. Und der Meister persöhnlich (Peter Dannegger) hat Dir geantwortet und auch Beispielcode in C mitgeschickt, denn von Assembler war in der ersten Anfrage noch keine Rede. Im Elektronik-Projekt-Forum (http://www.elektronik-projekt.de/thread.php?postid=54075) und im Roboternetz (http://www.roboternetz.de/phpBB2/viewtopic.php?t=48602) findet man die gleichen Anfragen (gegoogled). Dabei habe ich auch das gefunden: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3421 Mit Beispielen in C und in Assembler. Selbst der Source steht zum Download bereit. Als Student sollte man das aber allein finden können. Walter.
Das stimmt, allerdingas habe ich die Fragen da auch etwas unqaulifizierter gestellt als dieses mal, deswegen habe ich nochmals einen Thread aufgemacht. Das TWI-Beispiel von Atmel habe ich schon vor der ersten Fragestellung gehabt, allerdings bin ich daraus nicht schlau geworden. Und ja, ich habe auch dieses Thema in einem andren Forum gepostet .. nach dem Motto "viel hilft viel" ;) Und ich habe, auf Hinweis des Meisters, DIESES Thema eröffnet! ;-) In dem ATNEL-Beispiel wird eine Include-Datei verwendet, mit der ich absolut nichts anfangen kann, ich habe ansatzweise versucht den Code an zu passen, woran ich aber grandios gescheitert bin. Was genau beinhaltet diese Datei? Ist sie zwangsläufig erforderlich oder geht es auch ohne?
Die Include-Datei ist nicht zwingend erforderlich, erleichtert aber das Arbeiten. Beispiel: Auszug aus reg_C51.inc: ... ; TWI PI2 DATA 0F8h SSCON DATA 093H SSCS DATA 094H ... ;--- IEN0 Bits ----- EA BIT 0AFH ... IEN1 DATA 0B1H Auszug aus twi.a51: ... ORL SSCON,#40h; /* enable TWI */ SETB EA; /* interrupt enable */ ORL IEN1,#02h; /* enable TWI interrupt */ ... Wenn Du nun auf die reg_C51.inc verzichten willst, müsste das Programm in den drei Zeilen: ORL 093H,#40h; SETB 0AFH; ORL 0B1H,#02h; sprich: das Programm ist für den Menschen vorher leichter lesbar. dem Assembler oder Compiler ist es egal, ob Du SSCON oder 093H schreibst. Du musst dem Assembler oder Compiler halt nur vorher erzählen, was SSCON ist und dazu bindest Du reg_C51.inc ein. Du tipps doch auch lieber www.mikrocontroller.net anstatt 188.40.52.210 ein. Ersteres lässt sich für den Menschen besser merken. Walter.
Habe ich das dann jetzt richtig verstanden, dass in der Include-D. quasi nur eine "Variablendeklaration" passiert? Ist eine spezielle Syntax erforderlich, sprich: sind gewisse angaben unbedingt erforderlich, oder kann ich die Include nach "Belieben" konfigurieren? Ich habe die aus dem ATMEL-Beispiel (wie den Source-Code auch) aus dem PDF in eine .inc (bzw. .a51) geschrieben. Hier kamen auch wiederum Befehle vor, die mir die meisten nicht geläufig waren. Gibt es für die .inc einen speziellen (erweiterten) Befehlssatz oder werden hier die gleichen Befehle wie für den restlichen SC verwendet?
So, ich habe mich nochmal ein bisschen schlauer gemacht und auch schon diverse Idnge versucht um den Sensor zum Laufen zu bekommen .. leider immernoch erfolglos. Ich habe das Beispielprogramm von Atmel (beschreiben eines EPROMs) genommen und versucht es an zu passen. Was mir jedoch maximal gelingt ist, den ersten Programmblock zu senden, Also die Adresse des Sensors und das Register 0. Im nächsten Schritt will ich dann wieder die adresse senden und den Befehl (0x51 - Messung in cm) senden .. doch dazu kommt es leider nicht. Überprüft habe ich das mit einem Oszilloskop. kann mir jemand ein Wenig auf die Sprünge helfen?
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.