ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
22126
Zloj_ya (14.02.2005 19:54, просмотров: 9462)
Блин, да что же это такое с PENIRQ в ADS7843 ?! Сплошное издевательство! Замкнутый круг: к тач-панели с контроллером ADS7843 (входит в состав LCD AT320240Q...) подключен PIC18F452 по SPI. Подключен правильно. Выход PENIRQ подключен на RB0 пика, резюк 100 К - между +пит. и RB0. Зациклил, смотрю осциллом - вроде импульсы все есть, при нажатии на панель инф-ция на RC4(SDI) меняется, т.е. ADS7843 с пиком общается. Но!!! На PENIRQ (RB0 пика) единица стоит глухо, хотя при нажатии на панель должна давать перепад в ноль! Прерывания запретил! Все! Что это? Неужели я совсем тупой? Помогите, плиз, кто чем может! Спасибо. Пример проги: // ОСЦИЛЛЯТОР ТИПА HS, ЧАСТОТА КВАРЦА - 20 МГц // WDT - ОТКЛЮЧЕН, Power Up Timer - ВКЛЮЧЕН, // Brown Out Detect - ВЫКЛЮЧЕН, Low Voltage Program - ВЫКЛЮЧЕН // В приборе используется графический ЖКИ AT320240Q4FAT35 c TOUCH-панелью от фирмы "Ampire" // Контроллер ЖКИ - SED1335F, контроллер Touch-панели - ADS7843 //=============================================================== // Линии связи с LCD : // -------------------------------- #include #include #include #include #include #include #include #define IRQ_TOUCH RB0 // определить бит0 порта B (прерывание при нажатии на экран) #define CS_TOUCH RC2 // определить бит2 порта C (выборка ADS7843) //-------------------------------------------------------------- //-----------ОПИСАНИЕ ПОДПРОГРАММ ДЛЯ ADS7843 ------------------ void read_touch();// команда опроса сенсорной панели //---- КОНЕЦ ОПИСАНИЯ ПОДПРОГРАММ - КОМАНД ДЛЯ ADS7843 --------- //================================================== void main() { INTCON = 0x00; INTCON2 = 0b10000000; PIE1 = 0x00; ADCON1 = 0x07; // настр.портов RA и RE как цифровой I/O TRISC = 0b11111101;// настройка RC с учетом CS_TOUCH для SPI CS_TOUCH = 1; // запретить обращение к TOUCH TRISB = 0b00000001; // настр.RB // ============ ========== =================== // Пробный кусок с TOUCH-ПАНЕЛЬЮ cykl: read_touch(); // проверочная goto cykl; } //------------------------------------------------- //Подпрограмма "read_touch" ДЛЯ ADS7843 //------------------------------------------------- void read_touch()// команда опроса сенсорной панели { unsigned char a; unsigned char i; a = TRISC; // сохранение настроек RC до вызова подпрограммы TRISC = 0b11010011; // настр.SDO/RC5 - на вывод, SDI/RC4 - на ввод, // SCK/RC3 - на вывод, CS_TOUCH/RC2 - оставить на вывод CS_TOUCH = 1; // запретить выбор ADS7843 SSPSTAT = 0b01000000; SSPCON1 = 0b00100001; // Скорость тактов SPI 20/16=1,25 МГц BF = 0; // очистить флаг завершения приема/передачи CS_TOUCH = 0; // разрешить выбор ADS7843 for (i=0;i<50;i++); // задержка SSPBUF = 0b10010100; // тестовая настройка while(!BF);// Ожидание, пока завершится прием/передача команды BF = 0; // очистить флаг завершения приема/передачи SSPBUF = 0; // Инициируем прием старшего байта while(!BF);// Ожидание, пока завершится прием/передача команды BF = 0; // очистить флаг завершения приема/передачи SSPBUF = 0; // Инициируем прием старшего байта while(!BF);// Ожидание, пока завершится прием/передача команды BF = 0; // очистить флаг завершения приема/передачи } //-----------------------------------------