PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Daten über I2C Bus an D/A Wandler...aber wie????



drivepro82
03.09.2008, 17:05
Hallo!
Stehe vor dem nächsten Problem!
Zur Zeit kann ich meine im uC berechneten Werte nur üder RS232 am Terminalprogramm in Bascom ausgeben.
Der nächste Schritt soll aber die Ausgabe an einen D/A-Wandler (LTC 1451) sein.
Hierzu möchte ich den I2C-Bus nutzen. (s. kleiner Schaltplan in der Anlage)
Der LTC 1451 hat ein 12 bit Schieberegister, in das die Daten mit dem Clocksignal geladen werden müssen. Zum Wandeln der Daten in eine Spannung muss ein Chip Select (CS) Signal angelegt werden.
Wie in meinem kleinen Schaltplan zu erkenn ist, möchte ich abwechselnd 2 D/A Wandler ansprechen, die beide immer alle Daten bekommen. Über CS wird ausgewählt, welcher der beiden Wandler arbeiten soll.
Kann mir jemand sagen, wie ich meine Werte ( im Moment noch als Single an den Bascom Terminal) an den DA Wandler bekomme (mit dem I2C Bus), und wie ich das zeitlich richtig mit dem CS signal hin bekomme?

zerush
03.09.2008, 17:27
Den LTC 1451 kannst du nicht per I2C ansteuern!
Du musst hier SPI verwenden.

Ich kenne leider die Bascom Datentypen nicht, aber ich gehe mal davon aus Single entspricht 16Bit (?!).
Dann musst du einfach den Wert in 2 Bytes aufteilen, und diese nacheinander per SPI raussenden. Ist wesentlich einfacher als I2C, weil du keinen Slave adressieren musst.

Gruß,
Thomas

drivepro82
04.09.2008, 15:08
Hallo Thomas!
Hört sich ja gut an, wenn das einfacher ist als I2C. Dann muss ich aber auch die richtigen Hardwareausgänge am uC benutzen, also am Atmega32: PB5/MOSI, PB7/SCK und zwei Ausgänge für CS oder SS, oder?
Muss ich denn den Eingang MISO am uC auch belegen? Eigentlich müssen die D/A Wandler ja kein Signal zurück schicken!?
Wäre es auch möglich jeden beliebigen I/O-Port als SPI Bus zu nutzen?
Muss ich bei Verwendung von SPI auch die Shiftout funktion nutzen, oder wie bekomme ich meine 12 bit auf den wandler? Könnte die Variable ja als Integer deklarieren, dürfte dann aber nur 12 der 16 Bits rüber schicken.
Hab keine Ahnung, wie ich das anstellen soll.
Gruß Christian