у меня такая проблема, потребовалось использовать этот драйвер, нашел в интернете на него документацию
написал свою программу,весь день с ней мучался,неработает
делал так : c этого проекта http://avrproject.ru/publ/kak_podkljuch ... /2-1-0-142 снимал осцилограмму, и полученные значения вписывал в свою программу , тоесть мой мк выдает импульсы такие же как и в том проекте, но почему то не работает. помогите разобраться
вот мой исходник
Код: Выделить всё
#include <pic.h>
__CONFIG (INTIO & UNPROTECT & LVPDIS
& BOREN & MCLRDIS & PWRTEN & WDTDIS);
#define CS RA1
#define CLK RA2
#define DIN RA0
void write_data(unsigned char addr,unsigned char dat);
// === начало программы
void main (void){
INTCON = 0; // чистим регистр прерываний
TRISA = 0b00000000; TRISB = 0b00000000;
CMCON = 0x07; // отключение компараторов
PORTA = 0; PORTB = 0;
RBPU = 0; // подтягивающие R (1-откл, 0-вкл)
PEIE = 1; // разрешаем прерывания периферии)
//===========подготовка МАХ7221==========
write_data(0b00001100,0b00000000); //гашение нет
write_data(0b00001001,0b00000000); //отключить режим декодирования
write_data(0b00001010,0b00001010); //интенсивность свечения 11/16
write_data(0b00001011,0b00000011); //включаем в работу индикаторы 1,2,3,4
write_data(0b00001111,0b00000000); //тест индикаторов нет
write_data(0b00001100,0b00000000); //гашение нет
while(1)
{
//начало бесконечного цикла
//должна быть надпись GOOD
write_data(0b00000001,0b01011110);//G
write_data(0b00000010,0b00011101);//O
write_data(0b00000011,0b00011101);//O
write_data(0b00000100,0b00111110);//D
} //конец бесконечного цикла
} //конец программы
//вывод данных по SPI
void write_data(unsigned char addr,unsigned char dat)
{
//выводим адрес
unsigned char s=8;
CS=0; //обращаемся к микросхеме
while (s>0)
{
s--;
DIN = ((addr>>(s))&1);//на линию данных выставляем бит
CLK=1; NOP(); CLK=0; //синхроимпульс
}
s=8;
//выводим команду
while (s>0)
{
s--;
DIN = ((dat>>(s))&1);//на линию данных выставляем бит
CLK=1; NOP(); CLK=0; //синхроимпульс
}
CS=1;//конец обращения
}

