Imotor

Members
  • Публикации

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

  • Посещение

Репутация

8 Обычный

О Imotor

  • Звание
    Осваивающийся

Информация

  • Город
    Омск
  1. Кто бы только объяснил простым языком, что там написано
  2. Смотрел. Если я правильно понял, то для того чтобы передать что-то на дисплей, на цифровые входы дисплея D0-D7 выставляются данные - это либо команда, либо выводимая на дисплей информация, это определяется установкой бита DC. Затем установкой бита WR эти данные считываются контроллером дисплея. Вроде бы все просто. А где найти список команд и формат передачи данных, выводимых на дисплей?
  3. Доброго времени суток. Собственно вопрос не о том как физически подключить дисплей от nokia 6300 к микроконтроллеру, а о том как организованна передача данных в этом дисплее. По какому протоколу? Ясно, что интерфейс дисплея параллельный. Но никакой доступной информации о том, как организовать передачу данный в дисплей нет. Гуглится только вот это и другие похожие статьи http://phreakerclub.com/464. Помогите пожалуйста
  4. Интересно, а каким образом происходит это "заморозка"?
  5. Выходит схема нерабочая?
  6. Там не указан тип микросхемы. Просто дана схема с очень кратким пояснением, я написал пояснение в стартовом сообщении. Пытался разобраться с логикой её работы, но не смог. Если учитывать, что триггеры срабатывают по разным фронтам тактового сигнала, то становится понятно
  7. Объясните пожалуйста как работает данная схема. Почему все триггеры не переключаются одновременно? В книге написано так: Исходное состояние а - 1, б - 0. шаг 1. Т1 запускается (на выходе 1, на инв. выходе 0). На выходе НЕ1 появляется 1. На первом входе элемента И (логич. И) - 0, в точке а - 0, б - 1. шаг 2. Т1 сбрасывается, Т2 запускается. На выходе НЕ2 появляется 1. На втором входе И - 0, в точках а - 0, в точке б -1. Ну и так далее. Вопрос почему в при первом тактовом сигнале все триггеры не устанавливаются? Ведь если пришел первый тактовый сигнал, то на выходе Т1 будет 1, на инв. выходе 0. Это мгновенно должно вызывать переключение Т2, затем Т3 и Т4. В книге к сожалению нет диаграммы работы, без неё ничего не понятно.
  8. Начинающим С Нуля (Pic)

    Тогда бы микроконтроллер вообще не работал как надо и wtd его постоянно бы сбрасывал. Да и программа у меня очень простая и комманду call использую не часто. Нет, точно не из-за стека. Остаётся еще один простой способ все выяснить, это написать прогу без режима сна. Есть у меня подозрение, что это собственный генератор АЦП не запускается как надо, микроконтроллер уходит в сон (останавливает свой генератор) и ждет когда ему поступит комманда прерывания от АЦП, а она не поступает, он так и спит)
  9. Начинающим С Нуля (Pic)

    У меня все потребители управляемые контроллером - это дешифратор к176ид3 и опер lm317. Они в панельках, вытащил из панелек - проблема не исчезла. Сейчас поставил конденсатор после стабилизатора, он даёт плавное нарастание напряжения, пусть пока так поработает. Позже буду посвободнее обязательно займусь.
  10. Начинающим С Нуля (Pic)

    Вот я и сижу гадаю. Я бы лучше для начала приобрел хороший программатор с возможностью отладки, только это дороговато для меня, хотя есть желание сделать его самому, но опять проблема - некогда. А уж осциллограф тем более штука недешевая. Сейчас прошиваю extrapic в связке с PICPgm Programmer. Пробовал IC-prog и затер константу у одного из пиков по незнанию (вписал дефолтную), у второго хотя-бы сохранил, сейчас его и использую. В моей конструкции с затертой константой он вообще отказывается работать, а вот в этой работает и никаких проблем с запуском. Питание и стабилизатор, кстати, тот же. http://alex-exe.ru/r...pic16f676-7seg/
  11. Начинающим С Нуля (Pic)

    Ничего не помогает. Может быть проблема в программе? Посмотрите пожалуйста. include <p16f676.inc> list p=16f676 __config b'11000110101100' ;bits config ;============================================================================= ;special reg ;============================================================================= T1CON equ 10h PCL equ 02h OPTION_REG equ 81h ; bank1 STATUS equ 03h PORTA equ 05h PORTC equ 07h TRISA equ 85h TRISC equ 87h INTCON equ 0Bh PIE1 equ 8Ch PIR1 equ 0Ch ADCON0 equ 1Fh ;ADC reg ADCON1 equ 9Fh ;ADC reg ANSEL equ 91h ;ADC reg ADRESH equ 1Eh ;ADC reg (bank 0) ADRESL equ 9Eh ;ADC reg (bank 1) CMCON equ 19h TMR1H equ 0Fh TMR1L equ 0Eh WPUA equ 95h ;bank1 IOCA equ 96h ;bank1 OSCCAL equ 90h ;bank1 ;============================================================================= ;general purpose registers ;============================================================================= countL equ .32 countH equ .33 tempL equ .34 tempH equ .35 tempL_mean equ .36 ;reg for save context tempH_mean equ .37 ;reg for save context stn equ .38 dstk equ .39 edn equ .40 regbcdL equ .41 regbcdH equ .42 regbcdLH equ .43 button_flag equ .44 push_button equ .45 cntbutL equ .46 t_status equ .47 t_work equ .48 count_addit equ .49 ;============================================================================= f equ 1 w equ 0 ;============================================================================= org 0000h goto init ;============================================================================= ;interrupt vector org 0004h //Вектор прерывания goto int_sel ;============================================================================= table addwf PCL,f ;PCL=PCL+W //таблица для вывода в порт значения с АЦП retlw b'00000000' ;0 //использую дешифратор retlw b'00000100' ;1 retlw b'00001000' ;2 retlw b'00001100' ;3 retlw b'00010000' ;4 retlw b'00010100' ;5 retlw b'00011000' ;6 retlw b'00011100' ;7 retlw b'00100000' ;8 retlw b'00100100' ;9 ;============================================================================= int_sel //определяю что вызвало прерывание clrwdt // разрешено два прерывания: АЦП и таймера1 movwf t_work ;save context swapf STATUS,w movwf t_status ;----------------------------------------------------------------------------- btfsc PIR1,0 call tmr1_int ;----------------------------------------------------------------------------- btfsc PIR1,6 call ADC_int ;----------------------------------------------------------------------------- swapf t_status,w ;extract context movwf STATUS swapf t_work,f swapf t_work,w retfie Далее идет подпрограмма инициализации, где прописана настройка устройств и присвоение портам предварительного значения (индикации нет) и безусловный переход (goto) в главный цикл, где происходит вызов прграммы индикации, вызов прграммы АЦП с уходом в сон и выходом по завершению преобразования, вызов прграммы опроса кнопки.
  12. Начинающим С Нуля (Pic)

    Переписал программу индикации. Вроде пока все работает. Это новая: indication bcf INTCON,7 ;Disables all interrupts ;1111111111111111111111111111111111111111111111111111111111111111111111111111 movf stn,w call table movwf PortC ;----------------------------------------------------------------------------- bcf PortA,5 btfsc push_button,0 bsf PortA,5 ;----------------------------------------------------------------------------- bcf PortA,0 ;----------------------------------------------------------------------------- btfsc push_button,0 goto lbl_1 ;del zero bsf status,0 movlw .1 subwf stn,w btfss status,0 bsf PortA,0 ;----------------------------------------------------------------------------- lbl_1 call delay bsf PortA,0 ;1111111111111111111111111111111111111111111111111111111111111111111111111111 ;2222222222222222222222222222222222222222222222222222222222222222222222222222 movf dstk,w call table movwf PortC ;----------------------------------------------------------------------------- bcf PortA,5 btfss push_button,0 bsf PortA,5 ;----------------------------------------------------------------------------- bcf PortA,1 call delay bsf PortA,1 ;2222222222222222222222222222222222222222222222222222222222222222222222222222 ;3333333333333333333333333333333333333333333333333333333333333333333333333333 movf edn,w call table movwf PortC bcf PortA,2 bcf PortA,5 call delay bsf PortA,2 ;3333333333333333333333333333333333333333333333333333333333333333333333333333 bsf INTCON,7 ;Enables all unmasked interrupts return ;end of cycle of indication Это старая: indication bcf INTCON,7 ;Disables all interrupts ;---------------------------------------------------------------------------- clrf PortA ;cycle of indication clrf PortC movf stn,w call table movwf PortC movlw b'00000110' ;----------------------------------------------------------------------------- btfsc push_button,0 movlw b'00100110' ;inclusion of a point ;----------------------------------------------------------------------------- movwf PortA call delay clrf PortA clrf PortC movf dstk,w call table movwf PortC movlw b'00000101' ;----------------------------------------------------------------------------- btfss push_button,0 ;----------------------------------------------------------------------------- movlw b'00100101' ;inclusion of a point movwf PortA call delay clrf PortA clrf PortC movf edn,w call table movwf PortC movlw b'00000011' movwf PortA call delay bsf INTCON,7 ;Enables all unmasked interrupts return ;end of cycle of indication Отличие во включении разрядов индикатора. В первом случае обнуляется только один бит и включается соответствующий разряд индикатора с общим катодом. Во втором случае всему порту присваивается нужное значение, где 0 - разряд включен, 1 - разряд выключен. Там еще есть включение точки. Она у меня переключается из младшего в старший разряд при нажатии на кнопку. Почему pic стартовал через раз не пойму. Боюсь эта проблема еще напомнит о себе
  13. Начинающим С Нуля (Pic)

    __config b'11 0001 1010 1100' бит 13-12 - биты калибровки сброса по снижению питания (11) - верхний предел Ставил нижний предел - не помагало. бит 11-9 - зарезервированно бит 8 - защита памяти данных отключена бит 7 - защита памяти программ отключена бит 6 - запрещен сброс по снижению питания бит 5 - MCLR работает как MCLR бит 4 - PWRTE включен бит 3 - WDT разрешен бит 2-0 - внутренний осцилятор Калибровочная константа была прочитана и записана на бумажку. Была затерта несколько раз, но записана обратно с бумажки. Сейчас переписал программу динамической индикации. Есть подозрение, что проблема в программе. До этого этот же микроконтроллер стоял в другом устройстве и все работало как надо.
  14. Начинающим С Нуля (Pic)

    Менял на 78l05. Не помогло. Конденсатор ставил. На 1мкф не дало ничего, 470мкф дало небольшую задержку запуска, стал запускаться чаще, но все равно не всегда. Даже кнопку ставил с MCLR на землю, нажимал её и включал питание, после отпускал. Толку никакого. Думаю либо микроконтроллер с браком либо программа кривая.
  15. Начинающим С Нуля (Pic)

    Осцилографа к сожалению у меня нет. А что значит "звенит"? Предполагаю что это переходные процессы и наводки в самом микроконтроллере вследствие резкого скачка по питанию. Попробую другой микроконтроллер. Еще я затирал константу в этом микроконтроллере. Но она у меня была прочитана и записана на бумажку, а потом вписана обратно.