Probleme mit Atmega32 SPI (MCP42010)

Gast #3787516
Lesenswert?

Hallo,

Möchte gerne eine MCP42010 Digital-Poti per SPI mit einem Atmega32 
steuern.

Das Poti will: SPI™ serial interface (mode 0,0 and 1,1)
Zuerst ein Commando-Byte und danach ein Daten-Byte

Zuerst möchte ich einmal beide Potis gleich ansteuern was folgendes 
Commando-Byte sein müsste: 0b00010011;

Der IC wurde folgendermaßen beschaltet:

Der SHND-Pin (Shutdown):  dauerhaft low
CS: PB3 ATmega
SCK: an SCK Atmega mit ca. 1k Widerstand dazwischen
Serial Data Input (SI): an MOSI Atmega mit ca. 1k Widerstand dazwischen
Reset: auf Reset-Leitung Atmega


Das Angelegte Signal an den Poti (1V Sinus) erscheint am Schleifer-Pin 
genau halbiert. (Standarteinstellung des Potis).

Ich sehe im Oszi beim Flashen schön die SCK,MOSI,etc. Signale aber 
punkto Poti tut sich absolut nichts :/


Hier meine Routinen:
1
void SPI_INIT (void)
2
{
3
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
4
}
5

6
void SPI_WORD (char data1, char data2)
7
{
8
PORTB|=(1<<PB7);  //SCK
9
PORTB|=(1<<PB5);   //MOSI
10
PORTA &=~(1<<PB3);  //CS
11
SPDR = data1;
12
 while(!(SPSR & (1<<SPIF)));
13
SPDR = data2;
14
while(!(SPSR & (1<<SPIF)));
15

16
PORTB|=(1<<PB3);   //CS
17
PORTB&=~(1<<PB7);  //SCK
18
PORTB&=~(1<<PB5);   //MOSI
19
}
20

21

22
int main (void)
23
{
24
SPI_INIT();
25
SPI_WORD(0b00010011,0b11111111);
26
}

Vielen Dank für die Hilfe!
#3787542
Lesenswert?

Du solltest den SS Pin vom Mega (Port B, Pin PB4) noch auf Ausgang 
schalten. Siehe den Abschnitt über SPI im Datenblatt.
Tust du es nicht, dann steuert der SS Pin, ob sich der Mega als Master 
oder als Slave am SPI Bus verhält. Auf Ausgang schalten vermeidet 
diesbezüglich Probleme und der Mega fungiert definitiv als Master.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren