Пишу SPI master для ATTINY26, делаю, прямо как написано в примере из даташита:
void write_spi(unsigned char data) { unsigned char tmp; USIDR = data;
USISR |= 0x40; // clear interrupt flag
tmp = USICR | (1 << USITC) | (1 << USICLK) | (1 << USIOIE); while ((USISR & 0x40) != 0x40) { USICR = tmp; } }
SLK вижу, а DO - всякая фигня не соответствующая действительности. вернее, если data = 1 или 5, то ворде как нормально, а все остальное - прыгает и скачет как хочет. в чем проблема?
USICR изначально сконфигурен так: // Universal Serial Interface initialization // Mode: Three Wire (SPI) // Clock source: Register & Counter=USICLK // USI Counter Overflow Interrupt: Off USICR=0x12;
Сообщение отредактировал QuadMan - Jun 20 2006, 14:39
|