|
|
|
|
Не хочет работать как надо PIC16F876. Прошивается отлично с первого раза без ошибок,но не работает. Генератор генерит-смотрел осцилографом.Все порты у меня на выход. Порт С должен управлять м/с последовательной загрузки 74HC595 для семисегментных индикаторов . На выходах PORTC 1,2,3 нет импульсов. На MCLR через диод и резистор 10ком подаю +5вольт. ПортА прописан. MOVLW 0X06 MOVWF ADCON1^80 ; каналы PORTA - цифровые входы/выходы Пробовал загнать тестовую программу. Включить_выключить все порты.Работает,но до сброса через MCLR. После сброса молчок.Для повторного запуска надо отключить и включать питание. Кварц 4мгц-керамика.Емкости 47пф. Я,правда,не уверен в процессорах(у меня два) Они уже побывали в различных конструкциях и не помню,чтоб работали(просто не помню) До PIC16F876 эта программа прекрасно работала в PIC16F628,но не хватило памяти и решил перейти на PIC16F876 Мож кто что посоветует.Первый раз встречаю такое. |
|
|
99% проблема в программе - отладчиком хоть проганяли? в конце концов протеус никто не отменял. 1% оставил на проблему с железом (для самоуспокоения) |
|
|
А порты сконфигурированы нормально? |
|
|
DDR: 99% проблема в программе - отладчиком хоть проганяли? в конце концов протеус никто не отменял. 1% оставил на проблему с железом (для самоуспокоения) Прогонял в PIC Simulator IDE Все ОК.Осциллограммы как надо. http://itmages.pro-radio.ru/h_1268016517_06e000e64b.jpg pictele: До PIC16F876 эта программа прекрасно работала в PIC16F628,но не хватило памяти и решил перейти на PIC16F876 . Splav56: А порты сконфигурированы нормально? Вроде да... Все INIT у меня B'00000000' Init bank1 MOVLW 0X06 MOVWF ADCON1^80 ; каналы PORTA - цифровые входы/выходы movlw INIT_PORTA MOVWF TRISA^80 movlw INIT_PORTB movwf TRISB^80h movlw INIT_PORTC movwf TRISC^80h movlw INIT_OPTION movwf OPTION_REG^80 bank0 movlw INIT_INTCON movwf INTCON CLRF PORTA CLRF PORTB CLRF PORTC return
|
|
|
А у Вас в программе нет определения причины сброса питание/собака? PWM, I2C/SPI,UART всю периферию точно отключили? После сброса пропадают импульсы на всех портах или только на С? PS На 876 делал 2а проекта подобных глюков замечено не было. |
|
|
Забыл, попробуйте в код добавить такую конструкцию (это из примеров микрочипа) ORG 0x0000 ; Вектор сброса clrf PCLATH ; Сброс "hi" счетчика комманд goto main ; Переход на основную программу |
|
|
Когда начинаешь программировать новый проц, надо сначала изучить его. т.е. что при подаче питания включено, а что выключено, а потом решаешь что надо включить что выключить. Я с 876 не работал, а для 876А, чтобы все порты были цифровые надо movlw b'00001011' ; movwf TRISA ; настройка порта А все на выход clrf TRISB ; настройка порта В все на выход clrf TRISC ; movlw 0x06 ; настройка выводов АЦП movwf ADCON1 ; настроить все выводы портов используемые АЦП как цифровые movlw 0x07 ; 0x07 код movwf CMCON ; отключить компараторы clrf CVRCON ; BANKSEL PORTA ; выбрать банк портов clrf PORTA ; очистить порты clrf PORTB ; clrf PORTC ; отключить АЦП и отключить компараторы |
|
|
AlexAlcoa: А у Вас в программе нет определения причины сброса питание/собака? Собаку не ставил. AlexAlcoa: После сброса пропадают импульсы на всех портах или только на С? На всех портах. AlexAlcoa: clrf PCLATH ; Сброс "hi" счетчика комманд Добавил.Все тоже. Catcatcat: Когда начинаешь программировать новый проц, надо сначала изучить его Согласен,но сейчас в край некогда. Программа-то у меня простая-только места много занимает. Очень много переменных. Никакие PWM, I2C/SPI,UART мне не нужны. В PIC16F876 нет АЦП,Да они отключены по умолчанию. Вот вся инициализация,которую я делаю. Поправьте плз,если чего не хватает... Все INIT у меня B'00000000' INIT bank1 MOVLW 0X06 MOVWF ADCON1^80 ; каналы PORTA - цифровые входы/выходы movlw INIT_PORTA MOVWF TRISA^80 movlw INIT_PORTB movwf TRISB^80h movlw INIT_PORTC movwf TRISC^80h movlw INIT_OPTION movwf OPTION_REG^80 bank0 movlw INIT_INTCON movwf INTCON CLRF PORTA CLRF PORTB CLRF PORTC |
|
|
Catcatcat: надо сначала изучить его. т.е. что при подаче питания включено, а что выключено, а потом решаешь что надо включить что выключить Я думаю, лучше самому все явно задать (что вкл., а что выкл.), чтобы избежать неясностей. pictele: movlw INIT_PORTA MOVWF TRISA^80 В данном случае можно записать так: clrf TRISA вместо двух строчек выше. pictele: В PIC16F876 нет АЦП есть у него АЦП! Чем заканчивается программа? goto $? |
|
|
А банальный "хелло ворд" всеми пинами после сброса работает?
|
|
|
|
|