Forum: Mikrocontroller und Digitale Elektronik SPI problem bei CS Leitung


von schurli (Gast)


Lesenswert?

Hi

Wenn ich bei meinem Atmega64 für ein SPI EEPROM die CS Leitung steuern 
will, funktioniert diese nicht.

Ich habe einen Externen Pullup zwischen EEPROM und AVR, damit die 
Leitung auch während einem Reset high bleibt.

Hier mein Code:
1
/* I/0 high-low Routinen */
2
#define CS_LOW    PORTB |= (1<<PINB0)  //set CS high
3
#define CS_HIGH    PORTB &=~ (1<<PINB0)  //set CS low
4
5
void spi_init()
6
{
7
8
/*SPI Pins initialisieren
9
PB0...CS  output
10
PB1...SCK  output
11
PB2...MOSI  output
12
PB3...MISO  input  
13
*/
14
15
DDRB &= ~(1<<PINB3);    // PortB Pin 3 (SPI MISO)   -> Eingang
16
DDRB |=  (1<<PINB1);    // PortB Pin 1 (SPI SCK)   -> Ausgang
17
DDRB |=  (1<<PINB2);    // PortB Pin 2 (SPI MOSI)   -> Ausgang
18
DDRB |=  (1<<PINB0);    // PortB Pin 0 (SPI CS)   -> Ausgang
19
20
CS_HIGH;
21
CS_LOW;
22
}


Weder CS_HIGH noch CS_LOW funktinieren (Laut meinem Multimeter auf der 
CS Leitung)

Weiß jemand was da sein könnte?

mfg

von schurli (Gast)


Angehängte Dateien:

Lesenswert?

Pullup hier dargestellt:

von dummy (Gast)


Lesenswert?

>#define CS_LOW    PORTB |= (1<<PINB0)  //set CS high

Was denn nun ? Low oder high ? Kommentar stimmt.

von Michael H* (Gast)


Lesenswert?

dein CS_LOW setzt CS auf high und umgekehrt. is da vllt der fehler?

von schurli (Gast)


Lesenswert?

Danke für den Hinweis!
Es funktioniert trotzdem nicht.
Pin bleibt immer auf high!

von schurli (Gast)


Lesenswert?

Habe den Fehler schon entdeckt.
Die Software war schuld.

von Magnus Müller (Gast)


Lesenswert?

schurli wrote:
> Die Software war schuld.

Und wer hat die Software erfunden?  ....die Schurlis!

(frei nach "Ricola")

Gruß,
Magnetus

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.