Hallo, ich möchte das digitale Potentiometer MCP41100 über den ATTINY85 ansteuern. Ich hätte das folgendermaßen gemacht(siehe angehängte Datei). Allerdings hat mich folgender Forenbeitrag etwas verwirrt: Beitrag "SPI am attiny2313 initialisieren" Kann man wirklich nicht den SCK-PIN des ATTINY mit dem SCK-PIN des MCPs verbinden und ist es wirklich nicht möglich den SI des MCPs über den MOSI des ATTINY zu steuern? Danke schon mal in Vorraus!
Hallo Peter Ich verstehe deine Frage nicht ganz. Natürlich kannst du die beiden SCK pins miteinander verbinden. Vielmehr musst Du diese verbinden! Neben dem reinen Datensignal benötigt deine Gegenstelle natürlich das Clocksignal, um die Daten interpretieren zu können. Im Gegensatz zur UART-Schnittstelle, bei welcher beide Teilnehmer vorher auf eine geneimsame Taktfrequenz eingerichtet werden müssen, kann der Master hier durch das Clock-Signal einen Takt vorgeben. Ich würde llerdings noch externe PullUp's an den SPI-Leitungen verwenden. Ansonsten ist deinme Schaltung okay. Sollte etwas nicht klappen, dann liegt es an der Software und nicht an der Beschaltung.
Peter, du hast doch als Programmierer jede Freiheit die benötigten Portpins frei zu wählen. Merke ein attiny85 ist kein attiny2313. Auf das USI-SPI Interface greife ich nie zurück und steuere meine "SPI-Geräte" direkt an. Laut Datenblatt des MCP41100 http://ww1.microchip.com/downloads/en/DeviceDoc/11195c.pdf benötigst Du nur 3 Signale #CS, SI und SLK Dann kann man auch sehr einfach das Timing aus Bild5-1: "Timing Diagram for Writing Instructions or Data to a Digital Potentiometer" realisieren.
/CS fehlt in deiner Zeichnung. Den musst du schon noch mit einem weiteren Pin ansteuern.
Ersteinmal vielen Dank. Muss an dem CS pin ein HIGH oder ein LOW anliegen wenn der MPC als Slave arbeiten soll, da er im Datenblatt negiert ist?
In welchem Bereich sollten die Pullup-Widerstände liegen?
Datenblatt Seite 6 und wie bei SPI üblich: Während du dem Poti Befehl und Daten sendest Low, sonst High.
Peter schrieb: > In welchem Bereich sollten die Pullup-Widerstände liegen? Pullup ist eigentlich auch nur an CS nötig, um eine saubere Initialisierung zu ermöglichen und das Poti nicht während der Programmierung des AVR ungewollt anzusprechen.
Dann müsste die Hardware doch passen (siehe Anhang), oder? Als Widerstand werde ich wahrscheinlich einen 1M nehmen.
Danke für den Hinweis, dann kann ich mich ja ans Löten machen. Hier mein kleines Testprogramm (ich programmiere den ATTINY über einen Arduino UNO): #include <SPI.h> const int csPin = 1; void setup() { pinMode(csPin, OUTPUT); SPI.begin(); } void loop() { PotWrite(0, 0); delay(1000); PotWrite(0,256); delay(1000); } void PotWrite(int address, int value) { digitalWrite(csPin, LOW); SPI.transfer(address); SPI.transfer(value); digitalWrite(csPin, HIGH); }
Dass sich PB5 bei Arduino "1" schimpft glaube ich dir jetzt einfach mal. Aber was meinst du mit address (=0)? Laut DB des DigiPots muss im ersten Byte der Befehl (Wert setzen oder Shutdown) und die Auswahl des Potis (beim 41XXX immer Nummer 0) stehen. Eine Adresse gibt es da nicht. Zum setzen des Potis müsste da also 0x11 hin.
Benötigt man den MOSI UND den MISO, auch wenn man wie hier nur Daten an das Potentiometer sendet?
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.