Господа, кто работал с T6963 контроллером, пожалуста гляньте тестовый код (AVR-GCC), задолбался уже....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ES 23 августа 2003 г. 09:51

Сдела по мотиван найденых в инете проектов и нихрена не работает, физически, схема работает, все сигналы проходят, контроллер шевелится
в функция прога не виснет, статус везде считывается....

#define T6963_CE 0x01
#define T6963_WR 0x02
#define T6963_RD 0x04
#define T6963_CD 0x08
#define T6963_RES 0x10
#define T6963_FS 0x20

#define T6963_IO_PORT PORTA
#define T6963_IN_PORT PINA
#define T6963_IN_DIR DDRA
#define T6963_SERV_PORT PORTC
#define T6963_SERV_DIR DDRC

//
//
//

void Delay(unsigned char D)
{
register unsigned char i,ii;

for(i = 0;i < D;i++)
for(ii = 0;ii < 0xFF;ii++) asm volatile ("nop");
}

//
//
//

unsigned char T6963ReadStatus(void)
{
unsigned char assa;

T6963_IN_DIR = 0x00;
T6963_SERV_DIR |= T6963_CD + T6963_WR + T6963_CE + T6963_RD;
T6963_SERV_PORT = 0xFF;
T6963_SERV_PORT &= ~T6963_RD;
T6963_SERV_PORT &= ~T6963_CE;
Delay(2);
assa = T6963_IN_PORT;
T6963_SERV_PORT |= T6963_CE;
return assa;
}


//
//
//

void T6963WriteData(unsigned char Data)
{
while(!(T6963ReadStatus()&0x0b));
T6963_IN_DIR = 0xFF;
T6963_IO_PORT = Data;
T6963_SERV_DIR |= T6963_CD + T6963_WR + T6963_CE;
T6963_SERV_PORT = 0xFF;
T6963_SERV_PORT &= ~T6963_CD;
T6963_SERV_PORT &= ~T6963_WR;
T6963_SERV_PORT &= ~T6963_CE;
Delay(1);
T6963_SERV_PORT |= T6963_CE;
}

//
//
//

void T6963WriteCommand(unsigned char Data)
{
while(!(T6963ReadStatus()&0x0b));
T6963_IN_DIR = 0xFF;
T6963_IO_PORT = Data;
T6963_SERV_DIR |= T6963_CD + T6963_WR + T6963_CE;
T6963_SERV_PORT = 0xFF;
T6963_SERV_PORT |= T6963_CD;
T6963_SERV_PORT &= ~T6963_WR;
T6963_SERV_PORT &= ~T6963_CE;
Delay(1);
T6963_SERV_PORT |= T6963_CE;
}

//
//
//

unsigned char T6963ReadData(void)
{
unsigned char assa;

while(!(T6963ReadStatus()&0x0b));
T6963_IN_DIR = 0x00;
T6963_SERV_DIR |= T6963_CD + T6963_WR + T6963_CE + T6963_RD;
T6963_SERV_PORT = 0xFF;
T6963_SERV_PORT &= ~T6963_CD;
T6963_SERV_PORT &= ~T6963_RD;
T6963_SERV_PORT &= ~T6963_CE;
Delay(2);
assa = T6963_IN_PORT;
T6963_SERV_PORT |= T6963_CE;
return assa;
}

//
//
//

void T6963WriteChar(unsigned char Data)
{
while(!(T6963ReadStatus()&0x0b));
T6963WriteData(Data);
T6963WriteCommand(0xC0);
}

//
// Процедура инициализации
//

void T6963Init(void)
{
T6963WriteData(0x00); // Text home adres
T6963WriteData(0x08);
T6963WriteCommand(0x40);

T6963WriteData(0xFF); // Text area
T6963WriteData(0x00);
T6963WriteCommand(0x41);

T6963WriteData(0x00); // Graphics home adres
T6963WriteData(0x00);
T6963WriteCommand(0x42);

T6963WriteData(0xFF); // Graphics area
T6963WriteData(0x07);
T6963WriteCommand(0x43);

T6963WriteData(0x00); // Mode set "EXOR"
T6963WriteData(0x00);
T6963WriteCommand(0x81);

T6963WriteData(0x00); // Adres point set
T6963WriteData(0x00);
T6963WriteCommand(0x24);

T6963WriteData(0x00); // Display mode set "Text On, Graphics Off"
T6963WriteData(0x00);
T6963WriteCommand(0x97);

/* T6963WriteData(0x00); // Set cursor pos
T6963WriteData(0x00);
T6963WriteCommand(0x21);
*/
}

Чего этой .... еще надо???

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru