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