Не работает вот эта штука, не могу понять из-за чего ((
Даташиты поковырял и ничего не нашел, по идее должно работать, но реальность упертая штука
Код: Выделить всё
#include <io.h>
// Declare your global variables here
#include <delay.h>
unsigned char cData=90;
/* Макросы для кнопок: */
#define DDR_Button DDRB
#define Button_0 0
/* - - - - - - - - - - - - - - - - - - - - - - - */
/* Макросы для SPI % Используем аппаратный SPI % */
#define DDR_SPI DDRB
#define DD_PB1 1
#define DD_SS 2
#define DD_MOSI 3
#define DD_MISO 4
#define DD_SCK 5
/* - - - - - - - - - - - - - - - - - - - - - - - */
void SPI_MasterInit(void){
/* Включили SPI, мастер, установили частоту Fck/128 */
SPCR=(0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(1<<SPR1)|(1<<SPR0);
SPSR=(0<<SPI2X);
/* Установили MOSI и SCK выход, все остальные вход */
DDR_SPI=(1<<DD_MOSI)|(1<<DD_SCK)|(0<<DD_MISO);
}
void SPI_MasterTransmit(unsigned char cData){
/* Команда писать данные в нулевой потенциометр */
SPDR=0b00010001; while(!(SPSR & (1<<SPIF)));
/* Старт передачи */
SPDR=cData; while(!(SPSR & (1<<SPIF)));
}
void main(void){
/* Установили кнопки как вход */
DDR_Button=(0<<Button_0)|(1<<DD_PB1)|(1<<DD_SS);
SPI_MasterInit();
while(1)
{
if(PINB.0==1){PORTB.1=0; cData=cData+10; SPI_MasterTransmit(cData);}else{PORTB.1=1;
}
}
}- Вложения
-
- н44.png
- (12.14 КБ) 427 скачиваний




