Помогите в освоении PIC
Помогите в освоении PIC
Здравствуйте! Ребята, решил осваивать PIC посмотрел видеоуроки и решил на PIC16F628A(пока только он в наличии) смоделировать в MPLAB схему: через одну сек. после подачи питания на всех выводах PORTB должны загореться светодиоды, а через 5сек. погаснуть. Проверяю в PROTEUSе. Вобщем всё работает, только светики через1сек. включаются и через 5сек. выключаются и так без останова. Весь вечер сижу и ничего не понимаю. Где я накосячил?
- Вложения
-
- рис1.png
- (47.91 КБ) 563 скачивания
- Реклама
Re: Помогите в освоении
Задержки времени считал в "PIC_Delay"
Вот что пишет PROTEUS в окне сообщений:
Вот что пишет PROTEUS в окне сообщений:
- Вложения
-
- рис2.png
- (33.73 КБ) 579 скачиваний
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите в освоении
Листинги нужно выкладывать в текстовом виде. И к тому же в тегах Code.
Протеус ругается на переполнение стека.
Протеус ругается на переполнение стека.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Помогите в освоении
Seryi, после последнего NOP-а программа не останавливается.
END означает что после этого нет текста программы.
В предварительно стёртом контроллере, далее во флеше данные 0xFF, которые соответствуют команде addlw 0xFF.
После последнего адреса, счётчик команд сбрасывается в 0 и продолжается выполнение с первой команды.
END означает что после этого нет текста программы.
В предварительно стёртом контроллере, далее во флеше данные 0xFF, которые соответствуют команде addlw 0xFF.
После последнего адреса, счётчик команд сбрасывается в 0 и продолжается выполнение с первой команды.
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите в освоении
По поводу программы.
1.Конфиг следует писать в виде "слов", как указано в соответствующем inc файле. Так легче понимать и переносить на другие камни.
Например так:
2. Вместо описания системных регистров через equ (у Карабельникова вычитали?) достаточно вначале вписать "include p16f628a.inc".
3. Задержки delay и delay2 - обычно используются как подпрограммы, а к ним нужно обращаться через call (а не goto). Выходить из них через return ( а не goto). Ваш вариант рабочий, если учтете пункт 4. Кстати, Picloops - поинтереснее будет. Она обратно тоже считать может. Бывает полезно при разборе чужого кода.
4. Программа не может заканчиваться. Она должна постоянно работать, хотя бы впустую, если действия должны производиться однократно. Например посредством goto $.
Исправляйте.
P.S. Для данного МК банки переключаются одним битом. Вы делаете двумя. Это не ошибка, но лишнее действие.
Есть и другой вариант, но это потом.
1.Конфиг следует писать в виде "слов", как указано в соответствующем inc файле. Так легче понимать и переносить на другие камни.
Например так:
Код: Выделить всё
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF3. Задержки delay и delay2 - обычно используются как подпрограммы, а к ним нужно обращаться через call (а не goto). Выходить из них через return ( а не goto). Ваш вариант рабочий, если учтете пункт 4. Кстати, Picloops - поинтереснее будет. Она обратно тоже считать может. Бывает полезно при разборе чужого кода.
4. Программа не может заканчиваться. Она должна постоянно работать, хотя бы впустую, если действия должны производиться однократно. Например посредством goto $.
Исправляйте.
P.S. Для данного МК банки переключаются одним битом. Вы делаете двумя. Это не ошибка, но лишнее действие.
Есть и другой вариант, но это потом.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- Реклама
Re: Помогите в освоении
Всех благодарю за чуткое отношение к новичку. Карабельникова я не читал. Просмотрел первые 10 видеоуроков ЗДЕСЬ и делал всё по аналогии.
Сначала я задал свой вопрос на "Easyelectronics.ru" в "Детских вопросах", но ответы которые я там получил могут навсегда отбить охоту заниматься МК. Об авторе видеоуроков там отзываются крайне негативно. Вопрос специалистам по МК которые их смотрели: "Скажите стоит ли ими руководствоваться при освоении МК? "
Сначала я задал свой вопрос на "Easyelectronics.ru" в "Детских вопросах", но ответы которые я там получил могут навсегда отбить охоту заниматься МК. Об авторе видеоуроков там отзываются крайне негативно. Вопрос специалистам по МК которые их смотрели: "Скажите стоит ли ими руководствоваться при освоении МК? "
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите в освоении PIC
Закончил просмотр урока на фразе "это черный параллелепипед, длина которого..." ))
Может быть дальше будет еще интереснее, но я этого не узнаю. Поэтому по этим урокам ничего посоветовать не могу.
Можете начать, как это делал я. Мне попалась в руки очень интересная и очень нужная мне конструкция, которая к тому же имела исходники. После сборки ее захотелось расширить функционал. Распечатал таблицу команд и начал разбираться, что они делают. Вот так и учился. И учусь до сих пор, т.к. это для меня развлечение, а не род занятий.
Но вы не написали, исправили вы что-нибудь или нет.
Может быть дальше будет еще интереснее, но я этого не узнаю. Поэтому по этим урокам ничего посоветовать не могу.
Можете начать, как это делал я. Мне попалась в руки очень интересная и очень нужная мне конструкция, которая к тому же имела исходники. После сборки ее захотелось расширить функционал. Распечатал таблицу команд и начал разбираться, что они делают. Вот так и учился. И учусь до сих пор, т.к. это для меня развлечение, а не род занятий.
Но вы не написали, исправили вы что-нибудь или нет.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Помогите в освоении PIC
Сделал, текстовый файл прилагаю. В PROTEUSе работает. Только на выводе RB4 светодиод вообще не включается.
- Вложения
-
- PROBA.txt
- (2.71 КБ) 219 скачиваний
Re: Помогите в освоении PIC
Для связи email: risctronix собака gmail.com
Re: Помогите в освоении PIC
Спасибо! Сейчас скачаю все уроки и буду вникать.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Помогите в освоении PIC
Seryi, Привыкайте, до старта программы, делать INIT всей периферии контроллера (включая то, что в данный не используете).
Так вы быстрее узнаете "внутренности" контроллера.
К тому же, не всегда стОит доверять значениям регистров POR (при подаче питания).
Так вы быстрее узнаете "внутренности" контроллера.
К тому же, не всегда стОит доверять значениям регистров POR (при подаче питания).
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите в освоении PIC
А вы не в Протеусе, а мысленно пройдитесь.Seryi писал(а):Сделал, текстовый файл прилагаю. В PROTEUSе работает. Только на выводе RB4 светодиод вообще не включается.
Подправил слегка, но так и не понял, как подключены светодиоды, включаются они нулем или единицей.
И с конфигом непонятки. Расписал его так, как нужно писать, чтобы видно было что включено/выключено, т.к. 03FF1H ни о чем не говорит.
Для чего нужны два куска в конце тоже непонятно.
И как уже советовали, лишнюю периферию отключите, ее в этом МК всего ничего.
Спойлер
Код: Выделить всё
LIST p=16F628A
include p16f628a.inc
; __CONFIG 03FF1H ; 0b0011 1111 1111 0001
__CONFIG _INTOSC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_ON & _LVP_ON & _DATA_CP_OFF & _CP_OFF
Reg_1 equ 21h
Reg_2 equ 22h
Reg_3 equ 23h
org 0
; bsf STATUS,5 ;perehodim
; bcf STATUS,6 ;v bank1
bsf STATUS,RP0
clrf TRISB
; bcf STATUS,5 ;perehodim
; bcf STATUS,6 ;v bank0
bcf STATUS,RP0
movlw b'00000000' ;stavim
movwf PORTB ;nizkiy uroven
call delay
movlw b'11111111' ;stavim
movwf PORTB ;vysokiy uroven
call delay2
; goto Start
goto $ ; здесь программа зациклится навсегда
delay
movlw .173
movwf Reg_1
movlw .19
movwf Reg_2
movlw .6
movwf Reg_3
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
decfsz Reg_3,F
goto $-5
nop
nop
return
delay2
movlw .190
movwf Reg_1
movlw .75
movwf Reg_2
movlw .21
movwf Reg_3
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
decfsz Reg_3,F
goto $-5
nop
return
;Start
; bsf STATUS,5 ;perehodim
; bcf STATUS,6 ;v bank1
;Start2
; clrf TRISB
; bcf STATUS,5 ;perehodim
; bcf STATUS,6 ;v bank0
; movlw b'00000000' ;stavim
; movwf PORTB
; goto Start2
; end
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Помогите в освоении PIC
Два куска в конце я написал чтобы выключить светодиоды. Мне нужно чтобы через 1сек. после включения они загорелись и через 4сек. погасли. Мне не нужно чтобы они мигали.
Пробовал вместо "__CONFIG 03FF1H" поставить "__CONFIG __CONFIG _INTOSC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_ON & _LVP_ON & _DATA_CP_OFF & _CP_OFF"
Компиляция не проходит -ошибки.
Пробовал вместо "__CONFIG 03FF1H" поставить "__CONFIG __CONFIG _INTOSC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_ON & _LVP_ON & _DATA_CP_OFF & _CP_OFF"
Компиляция не проходит -ошибки.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Помогите в освоении PIC
Синтаксис:
/у вас лишнее слово __CONFIG/
Код: Выделить всё
__CONFIG _INTOSC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BOREN_ON & _LVP_OFF & _CPD_OFF & _CP_OFF- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Помогите в освоении PIC
А Вы не заметили тут ничего странного ?Seryi писал(а):"__CONFIG __CONFIG _INTOSC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_ON & _LVP_ON & _DATA_CP_OFF & _CP_OFF"
Вы бы хоть проверяли что пишите, проходясь по тексту глазами.
PS: Опоздал. Альберт уже поправил свой пост, дописав Вашу ошибку
Последний раз редактировалось Аlex Вс авг 21, 2016 22:52:04, всего редактировалось 1 раз.
Причина: -
Причина: -
Re: Помогите в освоении PIC
Лишнее "__CONFIG" только в сообщении(загружал из буфера обмена и ошибся).
MPLAB пишет: "... Register in operand not in bank 0. Ensure that bank bits are correct."
MPLAB пишет: "... Register in operand not in bank 0. Ensure that bank bits are correct."
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите в освоении PIC
Это не ошибка, а напоминание, чтобы вы убедились, что переключились в нужный банк.
Эти сообщения можно отключить, но вам они пока нужны.
Эти сообщения можно отключить, но вам они пока нужны.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Помогите в освоении PIC
Вы не поняли. "__CONFIG" я написал 2 раза, общаясь с вами, на форуме. Когда я вставил в программу, то что мне рекомендовали выше , PROTEUS не откомпилировал.
А когда я вставил в программу, всё прошло успешно.
Код: Выделить всё
__CONFIG _INTOSC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_ON & _LVP_ON & _DATA_CP_OFF & _CP_OFFА когда я вставил в программу
Код: Выделить всё
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _BODEN_OFF & _MCLRE_ON- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Помогите в освоении PIC
Мое предыдущее сообщение относилось к этому:
Вы в курсе, что означает _HS_OSC, который вы скормили ему?
Что касается ругательства Протеуса... Он не знает некоторые конфигурационные слова, например BODEN / BOREN и пр. Поэтому надо смотреть на что он ругается и менять на альтернативу из inc файла. Это Протеус такой капризный.MPLAB пишет: "... Register in operand not in bank 0. Ensure that bank bits are correct."
Вы в курсе, что означает _HS_OSC, который вы скормили ему?
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Помогите в освоении PIC
Я опять напутал. Ругается не PROTEUS. Ругается MPLAB v. 2.35 Не принимает "_DATD_CP_OFF". Заменил на"_CPD_OFF" и всё заработало.


