Mit einem Atmega32 will ich folgendes 32bit Schieberegister ansteuern...
http://www.allegromicro.com/en/Produ.../6833/6833.pdf
Ich benutze die SPI des Atmegas und habe folgende Pinbelegung:
Data In vom a6833 geht an MOSI, also PB5,
CLLock geht an SCK, also PB7,
STrobe geht an SS, also PB4,
OE geht dauerhaft an 5V.
Hier ist mein Code:
Code:
#include <avr/io.h>
#include <stdint.h>
#ifndef F_CPU
# define F_CPU 16000000L
#endif
#define SPIPORT PORTB
#define SPIDDR DDRB
#define CSPORT SPIPORT
#define CSDDR DDRB
#define MISO PB6
#define MOSI PB5
#define SCK PB7
#define CS PB4
#define SETSTROBE() (CSPORT) |= (1<<CS)
#define CLRSTROBE() (CSPORT) &= ~(1<<CS)
void spi_init(void)
{
SPIDDR = (1<<MOSI)|(1<<SCK);
CSDDR = (1<<CS);
SPIPORT = (1<<MISO);
/*
* SPI als Master
* MSB zuerst
* SCK Ruhepegel ist im Datenblatt LOW!
SPCR = (1 << SPE) | (1 << MSTR);
}
void spi_put_byte( uint8_t data)
{
SPDR = data;
while(!(SPCR & (1<<SPIF)))
;
}
void set_a6833(uint32_t data)
{
int8_t i;
uint8_t tmp;
for(i=3;i >= 0; i--){
tmp = (data >> (8*i));
spi_put_byte(tmp);
}
SETSTROBE();
asm volatile ("nop");
CLRSTROBE();
}
int main(void)
{
spi_init();
set_a6833(0x5500ff0fL);
for(;;)
;
return 0;
}
leider leuchten nich die angeschlossenen Led's die sollen, nur immer andere, ohne erkennbares Muster
Kann mal jemand rübergucken und mir evtl.nen Tip geben?
MFG
Kons
Lesezeichen