Snaper
22.11.2010, 20:35
Hallo zusammen,
versuche schon den ganzen Tag erfolglos mein 74HC595 vernünftig anzusteuern. Das Problem ist, dass es zwar mit dem veränderten Pseudocode aus dem rn-wissen Tutorial funktioniert aber mir das etwas sehr spektakulär aussah und so habe ich versucht nach bestem Wissen selber etwas hinzubekommen aber so richtig was ankommen tut nichts. Vielleicht kann ja mal einer drüber schauen und Tipps geben
spi.h
#ifndef SPIF
#define SPIF 7
#endif
unsigned char spi(unsigned char data)
{
SPDR=data;
while ((SPSR & (1<<SPIF))==0);
return SPDR;
}
main.c
#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
#define F_CPU 16000000UL /* Quarz mit 3.6864 Mhz */
#endif
#include <avr\io.h>
#include <util\delay.h>
#include "spi.h"
#define DD_MOSI PINB5
#define DD_SCK PINB7
#define DDR_SPI PORTB
void SPI_MasterInit(void)
{
// Set MOSI and SCK output, all others input
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
// Enable SPI, Master, set clock rate fck/16
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
int main(void) {
SPI_MasterInit();
while (1)
{
PORTB |= (1<<PB4);
// Place your code here
spi(0xff);
_delay_ms(2000);
spi(0);
_delay_ms(2000);
PORTB &= ~(1<<PB4);
};
}
Benutze einen atmega32 und ja ich weiss alles etwas wirsch aber wäre trotzdem über Hilfe dankbar.
Gruß Snaper[/code]
versuche schon den ganzen Tag erfolglos mein 74HC595 vernünftig anzusteuern. Das Problem ist, dass es zwar mit dem veränderten Pseudocode aus dem rn-wissen Tutorial funktioniert aber mir das etwas sehr spektakulär aussah und so habe ich versucht nach bestem Wissen selber etwas hinzubekommen aber so richtig was ankommen tut nichts. Vielleicht kann ja mal einer drüber schauen und Tipps geben
spi.h
#ifndef SPIF
#define SPIF 7
#endif
unsigned char spi(unsigned char data)
{
SPDR=data;
while ((SPSR & (1<<SPIF))==0);
return SPDR;
}
main.c
#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
#define F_CPU 16000000UL /* Quarz mit 3.6864 Mhz */
#endif
#include <avr\io.h>
#include <util\delay.h>
#include "spi.h"
#define DD_MOSI PINB5
#define DD_SCK PINB7
#define DDR_SPI PORTB
void SPI_MasterInit(void)
{
// Set MOSI and SCK output, all others input
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
// Enable SPI, Master, set clock rate fck/16
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
int main(void) {
SPI_MasterInit();
while (1)
{
PORTB |= (1<<PB4);
// Place your code here
spi(0xff);
_delay_ms(2000);
spi(0);
_delay_ms(2000);
PORTB &= ~(1<<PB4);
};
}
Benutze einen atmega32 und ja ich weiss alles etwas wirsch aber wäre trotzdem über Hilfe dankbar.
Gruß Snaper[/code]