Externer ADC AS1538 stürzt ab

OP #2655578
Lesenswert?
• ▲
▼
Hi

ich habe eine kleine Frage und zwar hat jemand schon Erfahrung mit den 
Baustein AS1538 gesammelt?

Datenblatt
http://www.austriamicrosystems.com/content/download/1174/6881/565

Etwas allgemeines dazu:
Ich verwende die 4 maximalen Bausteine die ich verwenden kann und lese 
diese mittels TWI aus.
Mikrocontroller ist der AT90CAN128.
Verwenden tue ich dafür die TWI_MASTER.c, welcher aber angepasst ist um 
auch das repeated start flag zu versenden.
Versendet werden die Daten/Befehle so wie es im Datenblatt gefordert 
wird.
Gemessen wird immer der Eingangswert gegenüber masse.

ID's 0x90  0x92  0x94 0x96

Commands  0x84  0x94  0xA4  0xB4  0xC4  0xD4  0xE4  0xF4


Das Problem was ich gerade habe ist folgendes:

der erste Baustein (id 90) lässt sich problemlos auslesen.
Bei den anderen geht dies aber nicht ohne weiteres denn sobald ich an 
diese Eingänge eine Spannung anlege stürzt mir der i2c ab. Und zwar 
nachdem ! dieser Wert eingelesen wurde. Sprich das Ergebnis bekomme ich 
aber wenn ich den nächsten Pin einlese bleibt SDA auf Low und blockiert 
den Bus.

ich kann zwar durch das deaktivieren des Busses + 1sec wartezeit + 2x 
stoppbit den Bus wieder zurück ins leben rufen und dann weitermachen. 
(so funktioniert das meiste gerade) aber weder gefällt mir das noch kann 
ich ständig solange warten bis ich alle channels so ausgelesen habe.



Hat jemand mit dem Baustein schon die gleichen Erfahrungen gemacht und 
weiß was ich ändern muss damit es funktioniert ?



THX
OP #2659645
Lesenswert?
• ▲
▼
Hi


ich bin weitergekommen in der Fehlersuche aber gelöst habe ich es bis 
jetzt noch nicht.


Das Problem ist das wenn ich die Daten auslese nach dem ersten Byte kein 
Ack gesendet wird. Der Pegel fällt zwar am SDA ein wenig aber nur von 5V 
auf 4,7V. Und für den µC ist das somit ein Arbitration Lost.

Das was mich momentan am meisten verwirrt ist immer noch die Tatsache 
das es nur dann auftritt wenn eine Spannung am Baustein anliegt.
Desweiteren kommt es hin und wieder vor das die Daten dann doch mal 
gültig übertragen werden.

Taktgeschwindigkeit an der Clock hab ich auch mal getestet aber der 
Fehler sieht exakt so aus wie es bei schneller Taktrate.
Moderator (Firma: Titel) Persönliche Seite #2659653
Lesenswert?
• ▲
▼
Florian W. schrieb:
> TWI_MASTER.c, welcher aber angepasst ist
Hmmmmm.....
WAS wurde denn WIE und WOMIT "angepasst"?

Florian W. schrieb:
> Der Pegel fällt zwar am SDA ein wenig aber nur von 5V auf 4,7V.
Hört sich nach Buskonflikt an.
Treibst du den SDA vom uC aus zum falschen Zeitpunkt aktiv auf high?
Mach mal einen 100 Ohm Widerstand zwischen die beiden I2C Busteilnehmer, 
dann kannst du leicht messen, wer da was macht: wenn im Fehlerfall z.B. 
der Pegel auf der uC-Seite höher ist, dann treibt der uC beim ACK einen 
high-Pegel, das dürfte er aber nicht!
OP #2659707
Lesenswert?
• ▲
▼
Hi

Angepasst wurde die TWI.c in der Hinsicht das wie im Datenblatt 
gefordert ein Repeated Start gesendet wird weil das war bisher nicht 
vorgesehen.

Ohne das Repeated Start würde der AS1538 keine Messung ausführen.
Das ich das verpfuscht habe glaub ich nicht bzw würde ich ausschließen.

Denn ich frage an sich nur ab ob die Adresse mit dem read bit versendet 
werden soll und schreibe dann auf das Register die Bedingung für des 
RepStart

 TWCR = (1<<TWEN)|
        (1<<TWIE)|(1<<TWINT)|
        (0<<TWEA)|(1<<TWSTA)|(0<<TWSTO)|
        (0<<TWWC);

Und erst beim nächsten Interrupt die Adressierung.

Am Oszi sieht es jedenfalls so aus wie es sein muss. Einzig sogar mit 
mindestens 5µsec zeit zwischen RepStart und Anforderung zum Lesen. 
(gefordert sind im Datenblatt mindestens 3,7)


Ich werd mir später das mit dem Widerstand anschauen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.