AD7712 kommunikation mit avr klappt nicht

Gast #861774
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
Gast #861829
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).
Gast #861845
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...
Gast #861884
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....
Gast #861891
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.
Angehängte Dateien:
Gast #861905
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?
Angehängte Dateien:
Gast #861919
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.
#861948
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
Gast #862850
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!!!!!!!!!!!!
Gast #862863
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren