Jump to content

    

Okor

Участник
  • Content Count

    17
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Okor

  • Rank
    Участник
  1. Cпасибо большое. Проверю. Так-то меня это не беспокоит сильно. С устройством могу связаться по TCPIPб WIFI, XBee или по шнурку. Просто немножко нервирует подобная некорректность. Устройство - тахограф/сигнализация.
  2. Добрый день всем! Может быть, кто-то сталкивался с новыми картами МТС? SIM900 (и SIM900B) не хочет отправлять СМС и выполнять исходящие звонки. Тупо зависает на подобные запросы. По TCPIP все нормально работает. Ставлю в сотовый эту карточку МТС - СМС-ки отправляются и звонки осуществляются. Спасибо.
  3. Добрый день! Как-то обращался с этим вопросом на форуме, но никто не ответил. Решил оставить на потом. Все уже сделал с контроллером, что хотел, довольно-таки легко. И вот, "потом" наступил. Уже 3 дня мучаю - ни тпру, ни ну. Понимаю, что где-то галочку поставить надо, но где и какую? Никак не получается аппаратно подсчитать внешние события (частотомер) на входе CAP2.1. Частота до 50 кГц. Программно сделал по этому же входу (P0.5 или P2.15) - работает, но это же не правильно при наличии аппаратных возможностей! Инициализация такая: void Init_TIMER2(void) { PCONP |= (1 << 22); PINSEL4_bit.P2_15 = 0x10; PINMODE4_bit.P2_15 = 0x10; // PINSEL0_bit.P0_5 = 0x11; // PINMODE0_bit.P0_5 = 0x10; T2TCR = 2; // Reset timer 2. T2CTCR = 5; // Set external clock CAP2.1. T2PR = 0; // Prescaler is set to division. T2PC = 0; T2MCR = 0; T2CCR = 0; // Capture is disabled. T2EMR = 0; // No external match output. T2TCR = 1; // Start timer. } Прошу помочь.
  4. Добрый день всем! Вопросик такой. Не получается настроить таймер на подсчет внешних событий. Как счетчик внутренних тактов работает, а внешних - нет. Что ж может быть? Пин Р0_5 - тестовый выход тактового сигнала случайной длительности. Инициализация такая: void Init_TIMER2(void) { PCONP |= (1 << 22); PINSEL0_bit.P0_4 = 0x11; PINSEL0_bit.P0_5 = 0x00; FIO0DIR_bit.P0_5 = 1; FIO0PIN_bit.P0_5 = 0; T2TCR = 2; // Reset timer 2. T2CTCR = 0x1; // Set external clock CAP2.0. T2PR = 0; // Prescaler is set to division. T2PC = 0; T2MCR = 0; // T2MR0 = Fp / 2; // Delay 0,5 s. T2CCR = 0; // Capture is disabled. T2EMR = 0; // No external match output. T2TCR = 1; // Start timer. } Спасибо заранее.
  5. Добрый день всем! Преамбула. Собран среднечастотный генератор от 10 до 100 кГц. Он состоит из PFC, преобразователя напряжения (косой мост), и, собственно, частотного генератора (прямоходовой). Мощность на выходе до 2200 Вт. Нагрузка - индуктивная во всем частотном диапазоне (до 100мкГ), но возможны резонансные участки. Управление - на сигнальных МК. Вопросик такой. Как мне защитить транзисторы преобразователя напряжения от разряда индуктора в PFC в случае резкого снижения нагрузки - сгорел оконечный каскад генератора, или нагрузка сгорела или управление зависло? Сейчас корректным отключением занимаются контроллеры. Т.е. отключается генерация в PFC и дальше все не страшно. Но это отключение занимает до 20 мкс, чего достааааточно, чтобы сжечь IGBT в ПН. Спасибо.
  6. Timer1 на dsPIC30

    Это внутренний осциллятор с умножением 16. Внутренняя частота 120 МГц Протокол обмена (UART), ШИМ у меня привязаны к внутренней частоте и работают стабильно. А здесь какая-то ерунда. Осциллограф показывает девиацию частоты входного сигнала в интервале 2 нс, а счетчик дает на выходе, например, 0х02aa,0х02ad,0х02ad,0х02aa,0х02a7 и тд. Получается, период изменяется в пределах 200 нс. Мне понятен дрейф внутреннего осциллятора, но где промежуточные значения? ХМ...
  7. Timer1 на dsPIC30

    Добрый день ВСЕМ! Помогите советом! Преамбула... Установлен режим FRC_PLL16. Таймер 1 используется как счетчик для вычисления скважности внешних импульсов, чтобы потом обеспечить на дсПИКе соответствующую фазировку устройства. Импульсы поступают на вход прерывания INT1. Все бы ничего..., но устройство работает как-то неправильно. Проверил что считает Таймер1 - ужас. Счетчик работает с дискретностью 3. Т.е. 0х0105, 0х0108, 0х010B и так далее. Промежуточные значения отсутствуют. Такое ощущение, что входящие импульсы поступают кратно 100нс. Хотя в электрической спецификации заявлено не более 25нс. Я, конечно, поступился временем обработки и сделал расчет среднего арифметического 3хN событий и тем самым получил в близком приближении пропущенные значения, но... хотелось бы знать откуда ноги растут. Подскажите что бы это могло быть! С уважением, Олег
  8. Добрый день всем! Откопал у себя платку WLNB-AN-DP101 годичной давности. Сразу захотелось ее приделать к чему-нибудь. А вот разблюдовку контактов разъема никак не могу найти в инете. Покупать КИТ - дороговато. Может, у кого есть описание коннектора? ПодЕлитесь? А? Спасибо заранее!
  9. Добрый день всем! Ситуасьен такой... Разработан инвертер на пару-тройку кВА. Нагрузка - активно-индуктивная. Ну все хорошо. Чисто работает. Греется в расчетном диапазоне. Но... ПЛИС, в данном случае - EPM7128SLI84-10 самопроизвольно отключается. Данная ПЛИС отвечает за управление силовыми МОСФЕТами. В нее заложена ШИМ и широкочастотное регулирование. Генератор - 60 МГц. Сигнальные выводы пущены через резюки. Питание отфильтровано (может, плохо отфильтровано?). Осциллограф не заметил никаких искажений ни на входах, ни на выходах. Я вот не пойму - то ли вообще генерация отключается, то ли только выходы? У кого, может быть, было подобное. Не важно с какой ПЛИС. С уважением, ОК
  10. А Вы не забыли в четырехпроводном режиме подвесить остальные выводы LCD (с 0 по 3) на питание через сопротивления? Или по крайней мере, если они подсоединены к контроллеру, то отправлять, например не "Х0h", а "Хfh"? И еще. У меня в LCD нет кириллицы - только латиница.
  11. Плюнул я на поиски причин блокировки GPIO5. Сделал я развязочку с одного выхода GPIO1 на одну диагональ, с GPIO4 - на другую. Пусть это не совсем правильно, но зато работает и жужжит.
  12. Спасибо за подсказки, но я их сразу учитываю - "собаку съел" за несколько-то лет программирования ПИКов. С PIC12F629/675 я часто имел дело и думал, что - "раз плюнуть" в любом случае его применения. Но... Каналы-то 0, 1 и 4 работают, а 5-й - блокируется независимо от схемы подключения к диагоналям транзисторного моста. Такое ощущение, что где-то установки в микроконтроллере какие-то не сделал. Превышения по электрическим параметрам нет. Ладно. На недельку откину в сторону, а там и мысля придет сама.......................................................
  13. Добрый день всем в это время суток и дальше тоже! Такая вот у меня загогулина. Сдохли все (5) рулевые машинки на модели самолетика по причине перепутанных потенциалов. Решил отремонтировать - там стоит обычный микроконтроллер (какой-то заказной с обвязкой без надписи) и 4 транзистора по мостовой схеме. Взял PIC12f675, четыре 2n4401 и, соответственно, резисторы в базы. Накидал программку за пару часов. Зашил в контроллеры. Стал радоваться. Но не тут-то было... Электроны перестали меня слушаться... В произвольное время блокируется вывод GPIO5. У меня GPIO0 и GPIO1 управляют одной диагональю моста, GPIO4 и GPIO5 - другой. Почему-то вывод GPIO5 самопроизвольно переключается на вход (такое ощущение) то сразу, то через пару минут. С остальными выводами такого не происходит и исправно отрабатывают положение движка. Менял управление диагоналями, все регистры переустанавливал - не помогает. 3 дня уже "коту под хвост". Используются внутренние RCгенератор и MCLR. Подскажите решение вопроса. А? С уважением, ОК
  14. Добрый день. Тут кусок моей программульки для ПИК18. На таймере TMR2 выполнены регламентируемые задержки, т.к. я без проверки загоняю данные в LCD. Пробовал с проверкой - особого выигрыша во времени нет. С уважением, ОК ; - RD4-RD7 - выходы передачи данных на LCD в четырехразрядном режиме ; - RD3 - выход выбора LCD ; - RD2 - выход управления записью инструкций в LCD ; - RD1 - выход управления записью адреса в LCD ;************************************************************************ ; Вывод верхней строки на экран из памяти по адресам 0x0060** ;************************************************************************ PrintStringUP: movwf TBLPTRL movlw 0x00 movwf TBLPTRU movlw 0x60 movwf TBLPTRH movlw 0x80 call LCD_Command movlw d'16' movwf CounterL OutStringToLCD_UP: tblrd*+ movf TABLAT,W call LCD_Out decfsz CounterL goto OutStringToLCD_UP return ;************************************************************************ ; Вывод верхней строки на экран из памяти по адресам 0x0061** ;************************************************************************ PrintStringUP_1: movwf TBLPTRL movlw 0x00 movwf TBLPTRU movlw 0x61 movwf TBLPTRH movlw 0x80 call LCD_Command movlw d'16' movwf CounterL OutStringToLCD_UP_1: tblrd*+ movf TABLAT,W call LCD_Out decfsz CounterL goto OutStringToLCD_UP_1 return ;************************************************************************ ; Вывод нижней строки на экран из памяти по адресам 0x0060** ;************************************************************************ PrintStringDOWN: movwf TBLPTRL movlw 0x00 movwf TBLPTRU movlw 0x60 movwf TBLPTRH movlw 0xc0 call LCD_Command movlw d'16' movwf CounterL OutStringToLCD_DOWN: tblrd*+ movf TABLAT,W call LCD_Out decfsz CounterL goto OutStringToLCD_DOWN return ;************************************************************************ ; Вывод нижней строки на экран из памяти по адресам 0x0061** ;************************************************************************ PrintStringDOWN_1: movwf TBLPTRL movlw 0x00 movwf TBLPTRU movlw 0x61 movwf TBLPTRH movlw 0xc0 call LCD_Command movlw d'16' movwf CounterL OutStringToLCD_DOWN_1: tblrd*+ movf TABLAT,W call LCD_Out decfsz CounterL goto OutStringToLCD_DOWN_1 return ;************************************************************************ ; Инициализация LCD в четырехзначном режиме. Здесь же подпрограммы управления LCD. ;************************************************************************ LCDinit: movlw 0xff call TimeDelayTMR2 movlw 0xff call TimeDelayTMR2 bcf PORTD,1 bcf PORTD,2 bsf PORTD,3 movlw 0x30 call Out_Nibble bcf PORTD,3 movlw 0xff call TimeDelayTMR2 bcf PORTD,1 bcf PORTD,2 bsf PORTD,3 movlw 0x30 call Out_Nibble bcf PORTD,3 movlw 0xff call TimeDelayTMR2 bcf PORTD,1 bcf PORTD,2 bsf PORTD,3 movlw 0x30 call Out_Nibble bcf PORTD,3 movlw 0xff call TimeDelayTMR2 bcf PORTD,1 bcf PORTD,2 bsf PORTD,3 movlw 0x20 call Out_Nibble bcf PORTD,3 movlw 0xff call TimeDelayTMR2 movlw 0x28 call LCD_Command movlw 0x0d call LCD_Command ; Подпрограмма очистки дисплея LCD_Clear: movlw 0x01 call LCD_Command movlw 0xff call TimeDelayTMR2 movlw 0x06 call LCD_Command movlw 0x00 call PrintStringUP movlw 0x10 call PrintStringDOWN return ; Подпрограмма отправки команды LCD_Command: bcf PORTD,1 bcf PORTD,2 movwf Value bsf PORTD,3 call Out_Nibble bcf PORTD,3 swapf Value,W bsf PORTD,3 call Out_Nibble bcf PORTD,3 movlw 0x02 call TimeDelayTMR2 return ; Подпрограмма вывода символа по адресу знакогенератора LCD_Out: bcf PORTD,1 bsf PORTD,2 movwf Value bsf PORTD,3 call Out_Nibble bcf PORTD,3 swapf Value,W bsf PORTD,3 call Out_Nibble bcf PORTD,3 movlw 0x02 call TimeDelayTMR2 return ; Подпрограмма загрузки четырехзначного канала Out_Nibble: movwf LCD_Data bcf PORTD, 4 btfsc LCD_Data, 4 bsf PORTD, 4 bcf PORTD, 5 btfsc LCD_Data, 5 bsf PORTD, 5 bcf PORTD, 6 btfsc LCD_Data, 6 bsf PORTD, 6 bcf PORTD, 7 btfsc LCD_Data, 7 bsf PORTD, 7 return
  15. Да, собственно, граблей не было. Обычная невнимательность. При табличном обсчете CRC16 две тетрады одного байта таблицы были перепутаны местами. Соответственно, вероятность выпадения ошибки короткого пакета была мала. Но при отправке 520 байт, видимо, эта опечатка вылазила. А ведь целую неделю потерял на поиск ошибки. ОК