Forum: Mikrocontroller und Digitale Elektronik SPI Probleme mit SS Ausgang am ATM8535


von Jens (Gast)


Lesenswert?

Hallo zusammen

Die Aufgabe die ich mir am Wochenende gestellt habe klang zuerst nicht 
so schwer, aber treibt mich nach und nach an den Rande des Wahnsinns.

Ich probiere einen Mega8535 via SPI mit einem AS5040 (Berührungslosen 
Poti)
zu verbinden.
Mein Problem ist das, sobald ich den SPI initialisiere -->

// PB4=SS PB5=MOSI PB6=MISO PB7=SCK
DDRB= 0b10111111;                                     // MISO als 
Eingang
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1) | (1<<SPR0);  //SPI 
initialisieren
PORTB |= (1<<PB2);                                    //SS auf HIGH 
setzen

der Ausgang PB4 nach dem HI setzen nur noch 1V am Ausgang ausgibt.
Sobald ich die Initialisierung auskommentiere, liegen an PB4 wie gewohnt 
5V an.
Laut Datenblatt sollte der SS Ausgang im Master-Modus frei ein und aus 
geschaltet werden können.
SS habe ich in meiner Testschaltung am CS vom AS5040.
Aber testweise zur Fehlersuche auch schon abgeklemmt.
Stehe im Moment irgendwie auf dem Schlauch.
Wer für jeden Hilfeansatz dankbar.
Danke schon mal.
MfG
Jens

von Michael H. (michael_h45)


Lesenswert?

Jens schrieb:
> // PB4=SS PB5=MOSI PB6=MISO PB7=SCK
     ^^^^^^

> PORTB |= (1<<PB2);                                    //SS auf HIGH
               ^^^                                        ^^
> setzen

von Jens (Gast)


Lesenswert?

Sorry mein Fehler (beim hin und her Kopieren der Zeilen ins Forum hab 
ich falsche Zeile erwischt)habe natürlich PB4 auf 1 gesetzt.
// PB4=SS PB5=MOSI PB6=MISO PB7=SCK
DDRB= 0b10111111;                                     // MISO als
Eingang
SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR1) | (1<<SPR0);  //SPI
initialisieren
PORTB |= (1<<PB4);                                    //SS auf HIGH
setzen

Wie gesagt beim HI setzen stehen etwa 1V an,(mit Oszi gemessen)
Danke für den schnellen hinweis.

von Michael H. (michael_h45)


Lesenswert?

Ich weiß zwar nicht, ob es beim 8535 schon so ist, aber bei neueren 
Megas wird die SPI automatisch zum Slave, wenn der SS low ist.
Setz den doch mal per PORTB-Register auf high und nimm einen andren für 
den CS des Slaves.

Oder vielleicht: JTAG Fuse deaktiviert?

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.