Gast
#1461699
Hallo, ich habe eine Schaltung mit einem Atmega 8 und einem 74HC595, nach dem Tutorial auf dieser Seite verschaltet (s. Anhang). An die Ausgänge des 74HC595 habe ich Widerstände und LEDs gehängt um erstmal zu testen ob das ganze funktioniert. Mein Programm, welches ich in CodeVison AVR verfasst habe sieht in groben zügen so aus: main.h: #include <mega8.h> // SPI functions #include <spi.h> #include <delay.h> // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=In Func0=In // State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=T State0=T PORTB=0x00; DDRB=0x2C; ... // SPI initialization // SPI Type: Master // SPI Clock Rate: 4000,000 kHz // SPI Clock Phase: Cycle Start // SPI Clock Polarity: High // SPI Data Order: MSB First SPCR=0x5C; SPSR=0x00; ... while (1) { // Place your code here spi(0xff); delay_ms(2000); spi(0); delay_ms(2000); }; spi.h: #ifndef SPIF #define SPIF 7 #endif unsigned char spi(unsigned char data) { SPDR=data; while ((SPSR & (1<<SPIF))==0); return SPDR; } Leider tut sich nichts bei den LED, habe schon alle möglichen SPI-Modien ausprobiert, sowie gefühlte 100 mal die verkabelung gecheckt. Ich kann beobachten, wenn ich den OE* (13) offen lasse (also weder an VDD noch an GND), dann gehen alle LEDs aus und wieder an aber sobald ich OE* wieder anfasse oder mit VDD verbinde tut sich da nichts. Allerdings gehen dann auch nur alle LEDs an oder aus, egal welchen Wert ich bei spi(0x..) eintrage. Was mache ich falsch?
