Forum: Mikrocontroller und Digitale Elektronik ATTINY 85 und MCP41100 digitales Potentiometer


von Peter (Gast)


Angehängte Dateien:

Lesenswert?

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!

von Andre (Gast)


Lesenswert?

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.

von Uwe (de0508)


Lesenswert?

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.

von Malte S. (maltest)


Lesenswert?

/CS fehlt in deiner Zeichnung. Den musst du schon noch mit einem 
weiteren Pin ansteuern.

von Peter (Gast)


Lesenswert?

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?

von Peter (Gast)


Lesenswert?

In welchem Bereich sollten die Pullup-Widerstände liegen?

von Malte S. (maltest)


Lesenswert?

Datenblatt Seite 6 und wie bei SPI üblich: Während du dem Poti Befehl 
und Daten sendest Low, sonst High.

von Malte S. (maltest)


Lesenswert?

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.

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Dann müsste die Hardware doch passen (siehe Anhang), oder? Als 
Widerstand werde ich wahrscheinlich einen 1M nehmen.

von Peter (Gast)


Lesenswert?

CS wird mit PIN 2 verbunden.

von Malte S. (maltest)


Lesenswert?

Genau, aber besser zwischen 10k und 100k.

von Peter (Gast)


Lesenswert?

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);
}

von Malte S. (maltest)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.