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
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).
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...
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.
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....
Nene, ist definitiv TWI! Bei mir lief der prima am mega32. ;)
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.
echt twi???????? aber der 7712 hat doch garkeine slaveadresse adresse...
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?
danke, ich schau es mir mal an... takt am 7712 is dran über n 10MHz quarz
Achso, am TWI die externen Pullups von 4k7 nicht vergessen (SCL und SDA)! Die internen ca. 30kOhm sind möglicherweise etwas hoch.
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.
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
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!!!!!!!!!!!!
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.
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.