Перейти к содержанию
    

grek81

Участник
  • Постов

    13
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Все работает, проблема в питании пока не разобрался почему, но почему садится напряжение.
  2. Добрый день. Мучаюсь с AD7730 ни как не получается залить данные и увидеть их изменения в регистрах. Читаются значения по умолчанию,а прописать ничего не могу. Протокол SPI роде как работает смотрел осцилографом все сигналы на мести и чистые. По сути AD7730 принимает команды на чтение и выдает данные. А команды на запись не принимает. Пробывал подвешивать входа на землю и на питание через резистор ничего не помогает. codevision // SPI initialization // SPI Type: Master // SPI Clock Rate: 1000.000 kHz // SPI Clock Phase: Cycle Start // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=0x51; SPSR=0x00; ADC_Reset(); void ADC_Reset() { CHIP_UNSELECT_AD7730_1; CHIP_SELECT_AD7730_1; spi(0xFF); spi(0xFF); spi(0xFF); spi(0xFF); CHIP_UNSELECT_AD7730_1; } unsigned char AD7730_Read_ModeReg() { unsigned char mode[2]; //unsigned int iTmp; CHIP_UNSELECT_AD7730_1; CHIP_SELECT_AD7730_1; delay_ms(10); spi(0x12);// switch com to mode reg mode[0]=spi(0xFF);//hi mode[1]=spi(0xFF);//low CHIP_UNSELECT_AD7730_1; //iTmp=iTmp<<8; //iTmp=iTmp+mode[1]; PORTD.4=1; // вкл передачу RS485; putchar(mode[0]); delay_ms(1); putchar(mode[1]); delay_ms(1); PORTD.4=0; // вкл передачу RS485; //return iTmp; } void AD7730_Write_ModeReg(unsigned int iData) { unsigned char mode[2]; mode[0] = (unsigned char) (iData>>8); mode[1] = (unsigned char) (iData&0x00FF); CHIP_SELECT_AD7730_1; delay_us(2); spi(0x02);// switch com to mode reg spi(mode[0]);// spi(mode[1]);// CHIP_UNSELECT_AD7730_1; delay_ms(1); PORTD.4=1; // вкл передачу RS485; putchar('o'); delay_ms(1); putchar('k'); delay_ms(1); PORTD.4=0; // вкл передачу RS485; } if(getchar()==0x30) // запись значения в флеш { AD7730_Read_ModeReg(); } if(getchar()==0x40) // запись значения в флеш { AD7730_Write_ModeReg(0xB132); PORTD.4=1;// прием по RS485 printf("good"); delay_ms(4); PORTD.4=1;// прием по RS485 } соответсвено считываю значение и передаю в порт. Может кто подскажет почему же данные для чтения принимаются,а данные на запись нет. Вот еще, что забыл указать не могу увидеть частоту на кварце. Схема в приложении только, немного изменена и изменения указаны.
  3. Отпишусь,занимаюсь этим вопросом.В инете что то ничего не нашел
  4. В программе Proteus есть LCD монитор HDM32GS12Y-3,ни как не могу его инициализировать.Использую CodeVision мега 32.То есть хотелось бы написать программу для графического LCD 122x32,но ни как не получается.Не могу понять инициализировался LCD или нет.Хотелось бы нарисовать точку в определенном месте,но никак не могу. LCD_CONTROL_DDR=0xFF;// óñòàíàâëèâàåì PORTA â âûõîäû LCD_DATA_DDR=0xFF; // óñòàíàâëèâàåì PORTC â âûõîäû SetBit(LCD_CONTROL_PORT, E);//Íà÷àëüíîå çíà÷åíèå ñèãíàëà èíäèêàòîðó ClrBit(LCD_CONTROL_PORT, RES);// âûâîä RES â ñîñòîÿíèè ëîãè÷åñêîãî “0” delay_us(20); SetBit(LCD_CONTROL_PORT, RES);// óñòàíàâëèâàåì íà RES = 1; delay_ms(2); SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xE2);//Reset ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xE2);//Reset SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xEE);//ReadModifyWrite off ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xEE);//ReadModifyWrite off SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xA4);//Âêëþ÷èòü îáû÷íûé ðåæèì ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xA4);//Âêëþ÷èòü îáû÷íûé ðåæèì SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xA9);//Âêëþ÷èòü îáû÷íûé ðåæèì ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xA9);//Âêëþ÷èòü îáû÷íûé ðåæèì SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xC0);//Âåðõíþþ ñòðîêó íà 0 ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xC0);//Âåðõíþþ ñòðîêó íà 0 SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xA1);//Invert scan RAM ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xA0);//NonInvert scan RAM SetBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E1 ClrBit(LCD_CONTROL_PORT, E2); WriteCode(0xAF);//Display on ClrBit(LCD_CONTROL_PORT, E1);//âêëþ÷åíèå E2 SetBit(LCD_CONTROL_PORT, E2); WriteCode(0xAF);//Display on и точку рисую вот так но ничего не получается,либо каких то непонятных 2 точки *Ôóíêöèÿ êîòîðàÿ ðåñóåò íà ýêðàíå 1 ïèêñåë*/ void LCD_PUT_PIXEL(byte x, byte y){ //Îáüÿâëÿåì ïåðåìåííûå byte bite; byte page; byte data, data2; //Âûõîä åñëè òî÷êà ëåæèò âíå ýêðàíà if((x>MAX_X)|(y>MAX_Y)) return; //Âûáèðàåì êðèñòàëë if(x>=61){ ClrBit(LCD_CONTROL_PORT, E1); SetBit(LCD_CONTROL_PORT, E2); x=x-61; } else{ ClrBit(LCD_CONTROL_PORT, E2); SetBit(LCD_CONTROL_PORT, E1); } //page-íîìåð ñòðàíèöû page=y/4; //bite-Íîìåð áàéòà êîòîðûé íàì ïðåäñòîèò âûâåñòè bite=y%4; //Óñòàíàâëèâàåì ñòðàíèöó è àäðåññ LCD_SET_PAGE(page); LCD_SET_ADDRESS(x); //×èòàåì áàéò ñ LCD(2 öèêëà ò.ê. â ïåðâîì ìóñîð) data=ReadData(); data=ReadData(); // çàâèñèìîñòè îò ìåòîäà âûâîäà âûâîäèì íàø ïèêñåë. // Àäðåññ ñòðàíèöû íå ìåíÿëñÿ, ïîýòîìó åãî íå óñòàíàâëèâàåì switch(met){ case MET_OR : { data=data|(1<<bite); break;} case MET_XOR : {data=data^(1<<bite); break;} } LCD_SET_ADDRESS(x); WriteData(data); }
  5. А как все таки правильно настроить xlc файл для правильной работы IAR 7.20D?У меня 6.10 работает без каких либо проблем,а вот на с 7.20 ругается на разные ошибки(в xlc файле).Может у кого есть настроенный xlc файл для работы с AT89C2051?
  6. А всего то нужно было скачать и указать на файл настроек XCL
  7. Да вы читайте,я же написал что компилирую другим компилятором все работает,и что вы тут пишите про электронику.Да я много не знаю,но я схему запуска и два конденсатора и кварц подсоединил.Поэтому и спрашиваю,ну нет у меня частоты,а какие настройки компилятора неправильные не знаю,уже много настроек перепробовал,либо пишет что не хватает какого то файла,который находится в папки LIB/clib но там действительного его нет,либо компилирует делает hex файл но в микроконтроллере не работает???Если бы было все так просто....
  8. Попробовал я этот HEX файл,как установил что вы сказали и все тоже самое контроллер стоит молчит,не нравятся мне в прошивке FF.То есть если смотреть HEX редактором то в начале идут цифры а потом ШТУК 8 FF? Так почемуто и получается что нет генерации частоты?Где она указывается,частота на которой работает контроллер?
  9. Hex стал другой,но пока не попробовал.Программатор на работе,а не объясните в чем может быть проблема?
  10. Зато на картинках все наглядно и понятно,может все таки пришлеш,либо хотя бы намекни в чем может быть проблема...????
  11. я согласен но проблему надо решить,так окажите помощь если у кого точно все настройки работают пришлите скриншотами.
  12. Да уж отправили к начинающим хотя вопрос немного не к ним.Может конечно это просто,но не у меня одного такая проблема.В настройках стоит intel-standart.Ну начну с самого начала.Стоял у меня IAК 6.10 и на нем у меня обнаружилась такая фигня.После компиляции забиваю файл прошивки в контроллер AT89C2051 и он как не живой хотя настройки вроде все сделаны.Думал, что может что то с компилятором,скачал и установил новую версию 7.20D,но все тоже самое что мы не пытались так и не сделали.Как я понимаю компилятор не прошивает(компилирует) частоту с которой работает процессор.А настройки не как не можем подобрать,то компилятор пишет что не могу открыть какой то файл то еще что то.Так как в симуляторе сам задаешь частоту то в нем программа работает,но вот в микросхеме ни как заводится не хочет.Не могли бы вы прислать скриншот с наиболее важными настройками для компилятора.Свои настройки я оставил во вложении.У нас на этом компиляторе написано массу программ для этого контроллера,но перейдя на последнюю версию не можем разобраться с настройками.Вроде все просто,а нет не получается. _________.rar
  13. Не могу настроить компилятор версии 4.05 8051 для вывода нормального HEX файла.То есть получается так, что после компиляции программы она работает в симуляторе(использую протеус),а после того как заливаю в контроллер,программа как мертвая.Думаю что,что то с частотой,так как нет генерации.Программа записанная на другом компиляторе(keil) и зашитая в контроллер нормально работает.Я немного не понимаю где вообще указывается частота на которой работает контроллер,как мне объяснили она не указывается.Не могли бы помочь с вопросом по настройке компилятора,потому что при изменении некоторых параметров появляются непонятные мне ошибки.
×
×
  • Создать...