- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 6 von 6

Thema: Digital-Poti via SPI und ATMega ansteuern - aber wie? Komplettes Neuland!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Hey Maik,

    Oh je, wenn sich die Seiten soooo langsam bei Dir aufbauen, werde ich mal versuchen, mich auf 10 nicht allzu lange Sätze zu beschränken

    Da ich die Bauteile erst in der Praxis testen kann (habe kein geeignetes Testboard zur Verfügung), würde ich gern im Vorfeld einen Fehler vermeiden.
    Das geht doch auch ohne spezielle und teure Testboards! Ich entwickle und teste eigentlich alle meine Mikrocontroller-Anwendungen auf einem ganz normalen Labor-Steckboard. Das erspart einem unangenehme Überraschungen, und für etwa 10 Euro bist Du dabei:

    http://www.pollin.de/shop/dt/NDI4OTg...teckboard.html
    http://www.pollin.de/shop/dt/Mjk5ODg...65_teilig.html

    Die Verdrahtung ist genau wie Du es beschrieben hast:
    Der als Clock definierte Anschluss des Controllers geht bei allen 3 Potis auf Pin 2 (SCK), Ss des Controllers geht dementsprechend dreimal auf Pin 1 (CS), nur Dout wird "durchgeschleift", d.h. beim ersten Poti bei Pin 3 rein (SI für "Serial In"), bei Pin 13 wieder raus (SO für "Serial Out") und von dort in´s zweite Poti usw. Im Datenblatt ist auf Seite 20 genau dieser Aufbau skizziert.

    Nun muss man noch wissen, dass man dem MCP42010 immer zwei Bytes senden muss, um eine Einstellung vorzunehmen: Ein sogenanntes Kommandobyte und ein Datenbyte. Das Kommandobyte sagt dem Chip, was man von ihm will (z.B. Poti 1 einstellen, Poti 2 einstellen o.Ä.), und das Datenbyte entspricht dann dem einzustellenden Wert.

    Beim Kommandobyte sind nur die Bits 5, 4, 1 und 0 von Bedeutung. Mit den Bits 5 und 4 wird festgelegt, ob entweder ein neuer Wert eingestellt werden soll (Bit 5 = 0, Bit 4 = 1), oder das Poti "abgeschaltet" werden soll (Shutdown-Modus: Bit 5 = 1, Bit 4 = 0). Mit den Bits 1 und 0 sagst Du dem Controller, welches der beiden Potis denn gemeint ist. Für Poti 1: Bit 1 = 0, Bit 0 = 1, für Poti 2: Bit 1 = 1, Bit 0 = 0, für beide Potis: Bit 1 = 1, Bit 0 = 1.

    Wenn Du also z.B. einen neuen Wert für Poti 1 senden willst, muss das Kommando-Byte &b00010001 sein.
    Da Du ja wahrscheinlich den Shutdown-Modus nicht brauchst, sondern den Potis i.d.R. immer nur aktuelle Werte zuweisen wirst, dürftest Du mit den drei Kommandobytes &b00010001 (neuer Wert für Poti 1), &b00010010 (neuer Wert für Poti 2) und &b00010011 (neuer Wert für Potis 1+2) auskommen.

    Und nach dem Kommandobyte folgt dann gleich das Datenbyte, mit dem die eigentliche Einstellung des ausgewählten Potis erfolgt.

    So, nachdem ich nun das halbe Datenblatt auf deutsch übersetzt habe, noch zwei Beispiele, dass es vollständig klar wird:

    Poti 1 soll auf die Mittelstellung (128ste von 255 Stufen) gebracht werden:

    Code:
    Dim A(2) as Byte
    A(1)=&b00010001
    A(2)=128
    
    Spiout A(1), 2
    Und wenn Du beide Potis auf 90% stellen willst (229ste von 255 Stufen) ginge das so:

    Code:
    Dim A(2) as Byte
    A(1)=&b00010011
    A(2)=229
    
    Spiout A(1), 2
    Und wenn Du drei Chips hintereinanderhängst, musst Du die Prozedur verdreifachen:

    A(1) = Kommandobyte für Chip Nr. 3
    A(2) = Datenbyte für Chip Nr. 3
    A(3) = Kommandobyte für Chip Nr. 2
    A(4) = Datenbyte für Chip Nr. 2
    A(5) = Kommandobyte für Chip Nr. 1
    A(6) = Datenbyte für Chip Nr. 1

    Spiout A(1), 6

    Ich würde das ganze mal auf einem Steckboard aufbauen und mich mit ein bisschen Code & ´nem Ohm-Meter vertraut mit der Materie machen. Und das Datenblatt runterladen & lesen

  2. #2
    Sauerbruch: Wärst du eine Frau und ich nicht verheiratet, ich hätte dir einen Antrag gemacht
    Spaß beiseite - ich bin ehrlich mehr als beiegstert. Auch wenn du dies sicher schon öfter geschrieben hast, so hilfst du mir so dermaßen weiter, das kann ich gar nicht wieder gutmachen.
    So sind nun keine Fragen mehr offen.
    Als ich den Beitrag das erste mal durchlas und beim ersten Beispiel ankam, fragte ich mich, warum da bei "Spiout a(1), " eine 2 hinter stand. Als du dann die Kommandokette für 3 der Controller schriebst, hatte ich das erst gescheckt, dass mit der Ziffer die Anzahl der zu übertragenden Befehlszeilen gemeint ist ^^. Ich Dummchen . Bei mir dauern solche Sachen immer ein wenig länger - offenbar sitzt da ein Knoten zwischen Auge und Gehirn-Synapsen

    Ein Steckboard habe ich, sogar das ganz große. Bislang hatte ich immer Probleme, die Programmieranbindung direkt auf das Board zu bringen, weshalb ich den Controller auf dem Eva-Board programmierte und dann umsetzte.

    Werde deinen Rat aber sauber befolgen und am Wochenende mal ein Testprogramm fertig machen.

    Dank deiner Hilfe kann ich nun auch weitaus mehr anstellen. Statt einfach nur Bass und Lautstärke, wäre auch eine Kanal-Absenkung (Fading) problemlos machbar.


    Dankedankedankedankedanke dir noch einmal recht herzlich. Die Seite speichere ich mir gleich ab ^^.


    LG - Maik

Ähnliche Themen

  1. Wie ein AD5263 Digital Poti per SPI ansprechen ?
    Von Ceos im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 02.03.2009, 11:51
  2. Atmega 162 16 PU 0702H ISP, aber wie ...
    Von Ceos im Forum AVR Hardwarethemen
    Antworten: 17
    Letzter Beitrag: 24.01.2008, 10:52
  3. Antworten: 8
    Letzter Beitrag: 17.04.2006, 21:28
  4. SPI...aber wie?
    Von full_metall_bunny im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 28.08.2005, 10:56
  5. SPI...aber wie?
    Von full_metall_bunny im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 25.07.2005, 22:27

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen