www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD7712 kommunikation mit avr klappt nicht


Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche den AD7712 mit einem avr (Mega32) über SPI auszulesen, 
leider klappt das wohl nicht so ganz richtig, ich erhalte immer den wert 
0 wenn ich versuche zu lesen.
Ich habe mich an dem read beispiel aus dem datenblatt des 7712 
orientiert.
Anschluss :
AVR       AD7712
PortA.0   DRDY
PortA.1   RFS
PortA.2   TFS, A0 // dies ermöglicht nur das lesen der output register 
des AD7712 nicht der Controlregister!
PortA.3   MODE
MISO      SDATA
SLK       SCLK

init:
RFS, TFS, MODE, SCLK als output
DRDY, MISO als input
SPI als master, clock(16MHz) / 16, dataorder = MSB first (AD7712 = MSB 
first laut datenblatt)
MODE = Low (external clocking mode des AD7712 einschalten)

read:
RFS, TFS = High // TFS ist mit A0 verbunden!
warten bis DRDY = Low ist //daten zum lesen bereit
RFS = Low
3 x [
SPDR = 0xFF (Dummybyte senden)
warten bis SPIF = High
SPDR auslesen (data0, data1, data2 = 24Bit)
]
RFS = High

die read routine läuft wohl ohne Probleme durch, aber ich lese immer nur 
0x00 aus SPDR... wieso? Hat schonmal jemand mit dem 7712 gearbeitet oder 
weis wie genau das funktioniert???

Grobi

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einen anderen ADC per SPI am laufen.
Der ADC hat 16 Bit.
Mit der negativen Flanke von SCK wird das erste Byte der vorhergehenden 
Wandlung an MISO übertragen.
Im 2. Byte wird die Einstellung des ADC (MUX) mit der positiven Flanke 
von SCK eingestellt (MOSI) und die nächste Wandlung eingeleitet (8 Bit), 
die fallende Flanke liefert an MISO gleichzeitig die zweiten 8 Bit der 
vorhergehenden Wandlung.

Ich denke, du musst die Wandlung irgendwie einleiten und das SPI vom µC 
aus takten (MOSI benutzen).

Habe das DB des AD7712 nicht gelesen).

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also das Interface des AD7712 hat nur 2 Leitungen, Clock und Data, Data 
ist sowohl input als auch output, also habe ich MOSI gar nicht 
angeschlossen, da ich der Meinung bin das das Clock signal mir das Byte 
sozusagen raustaktet wenn ich ein byte aufs spi schreibe, scheint ja 
auch soweit zu klappen, nur finde ich nirgendswo im db des 7712 etwas 
darüber wie man die Wandlung anstößt, scheint nach der einschaltphase 
automatisch loszulaufen, wie könnte man denn noch das MOSI mit ins spiel 
bringen um wirklich daten an den 7712 zu schicken? Habe irgendwo ne 
Lösung gesehen wo einfach der MOSI über nen 1k Widerstand mit dem MISO 
zusammen auf SDATA des 7712 gelegt wird, aber bin mir nicht so sicher ob 
das wirklich funktionieren kann...

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi nochmal,
habe mir grade das DB des AD7711 angeschaut.
Ich habe mal mit dem AD7712 gearbeitet (der kam mir so bekannt vor :)).
Das Interface ist TWI (oder I²C), nicht SPI.

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also bin mir ziemlich sicher der 7712 hat KEIN TWI interface, hatte das 
zuerst auch gedacht wegen der nur 2 leitungen, aber das twi würde eine 
star-stop-condition, adresse usw benötigen, das brauch der 7712 aber 
alles nicht, ist halt ein SPI mit 2 Leitungen....

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nene, ist definitiv TWI!
Bei mir lief der prima am mega32. ;)

Autor: Grobi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal der sourcecode meines Programms. Funktion : man sendet über die 
serielle schnittstelle ein 0x01, darauf hin fängt der avr an alle 10ms 
den ADC auszulesen und sendet ein 6Byte Datenpaket(24BitMesswertNummer, 
24BitDatenwort) über die ser. zurück. eine 0x02 stoppt das ganze dann 
wieder.

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
echt twi???????? aber der 7712 hat doch garkeine slaveadresse adresse...

Autor: Thilo M. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich stelle dir mal das uuuuuralte Testprogramm von vor vielen Jahren 
'rein, kann's selbst nicht mehr so ganz nachvollziehen, ist aber ein 
Software-TWI.
Vielleicht hilft's dir ja weiter?!

Achja - den externen Takt haste dran?

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, ich schau es mir mal an... takt am 7712 is dran über n 10MHz 
quarz

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, am TWI die externen Pullups von 4k7 nicht vergessen (SCL und 
SDA)! Die internen ca. 30kOhm sind möglicherweise etwas hoch.

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ok du hast dir ne softwaremäßige Lösung ausgedacht sieht genau nach 
dem aus was ich eigentlich brauche, werde das mal ausprobieren, hatte 
mich für das hardwareSPI entschieden weil damit ja höhere 
übertragungsraten möglich sind.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab zwar nur kurz ins Datenblatt des AD7712 geschaut, aber ich sehe da 
nichts mit I2C und auch nicht SPI.

Das Ding hat ein 24Bit Register, daß auch jeweils komplett geschrieben 
oder gelesen werden will.

Könnte zwar mit Hardware-SPI gehen, wenn man eben 3 Byte liest/schreibt, 
ich würde das aber wohl lieber erstmal zu Fuß machen.

Gruß aus Berlin
Michael

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soo also ich hab mich für eine reine softwarevariante entschieden und es 
läuft, mit dem hardware SPI krieg ichs leider nicht hin, wäre schöner 
gewesen, aber klappt auch so, vielen vielen dank für eure 
Hilfe!!!!!!!!!!!!

Autor: Grobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
btw. kennt jemand vielleicht nen günstigen ADC(24 Bit auflösung wären 
schön) mit dem ich 2 Kanäle(-5 bis +5V dürften reichen) zusammen per SPI 
oder I2C auslesen kann und das mit ner fequenz von 100Hz oder mehr??? 
Der AD7712 is schon ganz nett, aber zum einen schon teuer, die auflösung 
sinkt auf 18.5 bits bei 100Hz ab und ich würde gerne 2 Kanäle aufeinmal 
auslesen und das natürlich so komfortabel wie möglich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.