Hallo Gemeinde, Ich versuche gerade ein Digitalpoti DS1267-100 (14-Pin DIP) über einen Atmega8 zu steuern. Rudementär scheint sich auch etwas zu tun, der DS1267 bekommt Daten vom Atmega. Ich habe einen Signalgenerator und ein Oszi angeschlossen. Der Signalgenerator gibt ein Rechteck auf Pin 2(H1) des DS1267, Pin 4(W1) geht an das Oszi, Pin 3(L1) liegt auf GND. Über ein LCD gebe ich die Daten aus, die an das DS1267 gesendet werden. Die Daten, die gesendet werden sind soweit korrekt. Was passiert ist folgendes: Beim ändern der Daten toggelt das Signal auf dem Oszi nur zwischen zwei Werten hin un her. Bin etwas ratlos, vielleicht kann mir einer von Euch auf die Sprünge helfen. Hier die relevanten Zeilen des Bascom-Programmes: ' Ansteuerung des DS1267 Ds1267_clk Alias Portc.5 Ds1267_dq Alias Portc.4 Ds1267_rst Alias Portc.3 Config Ds1267_clk = Output Config Ds1267_dq = Output Config Ds1267_rst = Output ... ' Lautstärke über DS1267 regeln Sub Setvolume(byval Tot_vol As Word) Dim Vreg17 As Long ' DS1267 ansteuern ' Start Datenübertragung RST HIGH Set Ds1267_rst Vreg17 = Tot_vol ' Stack Select Bit setzten BIT 0, Bit 1-8 Poti0, Bit 9-16 Poti1 Shift Vreg17 , Left ' 17 Bits nach DS1267 shiften Shiftout Ds1267_dq , Ds1267_clk , Vreg17 , 3 , 17 ' Ende Datenübertragung RST LOW Reset Ds1267_rst Cls Upperline Lcd Vreg17 Lowerline Lcd Tot_vol End Sub vielen Dank für Eure Hilfe smalldevice
DS1267 ±5V Dual Digital Potentiometer Chip http://datasheets.maxim-ic.com/en/ds/DS1267.pdf Wie sendest du das Stack Select Bit und wie die Daten? Ich würde mir dies zusammenreimen: DIM Vreg17 AS LONG ... ' Daten Vreg17 = Tot_vol SHIFT Vreg17, LEFT, 1 ' Stack Select Bit dazu je nach Hardware 1 oder 0 Vreg17 = Vreg17 + 0 ' LSB first raus RESET Ds1267_clk SET Ds1267_rst SHIFTOUT Ds1267_dq , Ds1267_clk , Vreg17 , 3 , 17 RESET Ds1267_rst Beim Parameter Option (3 oder 4 für LSB first) des Shiftout ist die Doku des BASCOM IMHO unklar. Leider ist kein Timingdiagramm angegeben. Bei DS1267 soll ja DQ vor CLK anliegen und bei CLK low=>HIGH übernommen werden. Ich weiss nicht, ob SHIFTOUT das passend zum DS1267 Timingdiagramm leisten kann. Unterschied zu deinem Code: Die Dimensionierung von Vreg17 und das definierte Setzen der Clock vorm Shiftout. Eventuell würde ich noch kurze Wartezeiten zwischen RESET, SET, SHIFTOUT und RESET verwenden.
Michael Pippert schrieb: > Ich habe einen Signalgenerator und ein Oszi angeschlossen. Der > Signalgenerator gibt ein Rechteck auf Pin 2(H1) des DS1267, Pin 4(W1) > geht an das Oszi, Pin 3(L1) liegt auf GND. > Was passiert ist folgendes: Beim ändern der Daten toggelt das Signal auf > dem Oszi nur zwischen zwei Werten hin un her. Das ist IMHO auch richtig, weil du auf dem Oszi das Rechtecksignal des Signalgenerators beobachtest und durch den DS1267 die Amplitude veränderst. Einer der Werte sollte 0 sein (0 des Rechtecks) und der andere Wert sollte durch die Einstellung des DS1267 beeinflussbar sein.
Hallo Stefan, Danke für Deine Mühe. Hab alles probiert, leider ohne Erfolg. Ich mache für heute erst mal Schluss mit der Sache, vielleicht habe ich ja beim nächsten Anlauf eine göttliche Eingebung. ;) sd
Hallo Stefan, habe das Problem zu Fuß gelöst. Shiftout funktionierte in keiner möglichen Kombination. Sub Setvolume(byval Tot_vol As Word) ' Lautstärke für aktiven Kanal sichern Vol_chl(aktiv_channel) = Vol_l Vol_chr(aktiv_channel) = Vol_r ' Start Datenübertragung RST HIGH Set Ds1267_rst ' Stack Select Bit setzten (BIT 1) übertragen Ds1267_dq = 0 ' Clock pulse Ds1267_clk = 1 Ds1267_clk = 0 ' Bit 2-9 Poti0 übertragen (MSB first) For I = 7 To 0 Step -1 Ds1267_dq = Vol_l.i ' Clock pulse Ds1267_clk = 1 Ds1267_clk = 0 Next I ' Bit 10-17 Poti1 übertragen (MSB first) For I = 7 To 0 Step -1 Ds1267_dq = Vol_r.i ' Clock pulse Ds1267_clk = 1 Ds1267_clk = 0 Next I Reset Ds1267_rst Call Show_volume End Sub Gruß sd
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.