ATmega16

medicus

Mitglied
Guten Tag,


ich muss mich auf Praktikum vorbereiten und dazu folgende Aufgaben
lösen.
Leider tapp ich zur zeit heftig im dunklen, weil ich eigentlich
überhaupt keine Ahnung habe.Ich hoffe ihr könnt mir helfen

Die Aufgabe:Abfragen eines Sensors über I^2C Bus

Die TWI-Schnittstelle des ATmega erlaubt den Zugriff auf I2C-Bus-Geräte.
Deswegen gelten im folgenden Text TWI und I2C als gleichbedeutend.
a) Machen Sie sich mit dem prinzipiellen Ablauf einer I2C-Kommunikation
vertraut (z.B. ATmega Dokumentation).
b) Laden Sie von der ITI-Page das Template-Paket zu dieser Aufgabe
herunter. Machen Sie sich mit dem TWI-Treiber (iti_twi.c, iti_twi.h)
vertraut.
c) Implementieren Sie in der Hauptdatei Uebung2.c die fehlenden
Routinen:
int twi_writeregister(uint8_t twi_addr, uint8_t reg, uint8_t data)
int twi_readregister (uint8_t twi_addr, uint8_t reg, uint8_t* data)
d) Machen Sie sich mit der Möglichkeit vertraut, den SRF02 Sensor über
I2C-Bus anzu-sprechen (siehe SRF02-Datenblatt auf der ITI-Page).
e) Führen Sie in der Hauptschleife des Programms eine Messung mit dem
SRF02 aus und stellen Sie das Ergebnis auf dem Bildschirm dar.
f) Bringen Sie in Erfahrung, an welchen Pins des ATmega16 der SRF02
angeschlossen werden sollte.
g) Testen Sie sie ausgiebig ihre Lösung

Praktische Anmerkungen zu Aufgabe 1:
Bevor Sie ihre Lösung testen können müssen folgende Einstellun-gen im
AVR-Studio vorgenommen werden: Menu->Project->Configuration
Options->General-> Optimization: -O1 Fuses: Int. Osc. 4MHz. + 64 ms
In der Abbildung rechts ist die Anschlussbox für den Ultraschall-Sensor
und ein Servo dargestellt. Für die Aufgabe 1 sollen alle Anschlüsse bis
auf PWM verbunden werden.


Meine Lösungen:

a)
Der Beginn einer Übertragung wird mit dem Start-Signal vom Master
angezeigt, dann folgt die Adresse. Diese wird durch das ACK-Bit vom
entsprechenden Slave bestätigt. Abhängig vom R/W-Bit werden nun Daten
Byte-weise geschrieben (Daten an Slave) oder gelesen (Daten vom Slave).
Das ACK beim Schreiben wird vom Slave gesendet und beim Lesen vom
Master. Das letzte Byte eines Lesezugriffs wird vom Master mit einem NAK
quittiert, um das Ende der Übertragung anzuzeigen. Eine Übertragung wird
durch das Stop-Signal beendet. Oder es wird ein Repeated Start am Beginn
einer erneuten Übertragung gesendet, ohne die vorhergehende Übertragung
mit einem Stop-Signal zu beenden.
Alle Bytes werden dabei „Most Significant Bit First“ übertragen.
Für den High Speed Mode wird zuerst im Fast oder Standard Mode ein
Master Code geschickt, bevor auf die erhöhte Frequenz umgeschaltet wird.
Der I²C-Bus ist von der Definition her recht einfach, aber auch
störanfällig. Diese Tatsache schränkt die Verwendung auf störungsarme
Anwendungsbereiche ein, wo weder mit Übersprechen, Rauschen,
EMV-Problemen, noch mit Kontaktproblemen (Stecker, Buchsen) zu rechnen
ist.
(Quelle:I²C ? Wikipedia)

b)Diese Dateien hab ich als Anhang hinzufegügt

c)Leider bin ich hier vollkommmen überfordert
Ich bräuchte dringend hilfe von euch

d)Auch zu diesem Punkt habe ich leider nichts gefunden


Mir ist vor allem die c wichtig ich brauch tatkräftige unterstützung


Viele liebe Grüße

anna <3
 

Anhänge

  • Uebung2_template_01.zip
    31,1 KB · Aufrufe: 2

kama

Top Contributor
Hallo,

zuerst einmal frage ich mich, ob Du den Titel hier im Forum gelesen hast? Das ist ein Java Forum und KEIN Microcontroller Forum....

zu Microcontrollern gibt es entsprechende Foren...aber davon abgesehen, solltest Du die Arbeiten schon selbst machen, sonst lernst Du nichts...

Gruß
Karl Heinz Marbaise
 

kama

Top Contributor
Hallo,

das Problem ist aber, dass die angehängte Datei nur C Sourcen enthält und keine Java Sourcen ;-(

Aber Danke für die Info. Ich wusste garnicht, dass auf man eine VM darauf überhaupt zum laufen bekommt. Leider sind die Stände auf der Web-Seite ein wenig veraltet.

Gruß
Karl Heinz Marbaise
 

Neue Themen


Oben