Решил сделать своими силами для паяльника регулятор на МК PICF676.Написал программку упрощенную.Потом буду по мере реализации одного из блоков регулятора и познании азов в програмировании,делать следующий.Сейчас занимаюсь прогонкой рабочей точки по всей программе.Столкнулся с непонятным для меня явлением.При записи константы в регистр w , потом перезаписи ее в другой Pwr , величина константы не сохраняется,а меняется все время на 47 п.п.1-2. Проверка п.п.3-4,наблюдал в окне МПЛАВ 'SFR'.Подскажите кто нибудь,где я ошибся.
bcf STATUS,RP0
1. movlw .7
2. clrf Pwr
3. movwf Pwr
4. movlw Pwr
5. nop
6. и результат ?????47 :help01:
Цитата: Boris от 26-11-2011, 20:17:52
Решил сделать своими силами для паяльника регулятор на МК PICF676.Написал программку упрощенную.Потом буду по мере реализации одного из блоков регулятора и познании азов в програмировании,делать следующий.Сейчас занимаюсь прогонкой рабочей точки по всей программе.Столкнулся с непонятным для меня явлением.При записи константы в регистр w , потом перезаписи ее в другой Pwr , величина константы не сохраняется,а меняется все время на 47 п.п.1-2. Проверка п.п.3-4,наблюдал в окне МПЛАВ 'SFR'.Подскажите кто нибудь,где я ошибся.
bcf STATUS,RP0
1. movlw .7
2. clrf Pwr
3. movwf Pwr
4. movlw Pwr
5. nop
6. и результат ?????47 :help01:
bcf STATUS,RP0
1. movlw .7 // загружаешь число 7 в аккумулятор
2. clrf Pwr // очищаешь
Pwr 3. movwf Pwr // загружаешь из аккумулятора 7 в Pwr
4. movlw Pwr // загружаешь адрес расположения регистра (переменной)
Pwr в аккумулятор
командой
movfw Pwr ты вызывашь в аккумулятор значение перемееной
командой
movlw Pwr - её адрес
Спасибо, Вы не представляете как рад подсказке,все получилось.Правда выполнение команд
bsf PORA,0 ; включить симистор
bcf PORTA,0 ; ychet > 10, отключить симистор.
в том же окне SFR не вижу,бит не меняет "0" значения.РегитртыTRISFA,C прописаны в 1,а portA "0"банке нулевой.Что еще нужно?
Паяльник с микропроцессором - жесь :-[
Даешь паяльнику интернет-браузер на ассемблере!
Спасибо за помощь.Все получилось.Сейчас остановился на командах
bcf PORTA,0 ; ychet > 10, отключить симистор.
bsf PORTA,0 ; включить симистор
нет изминений в окне SFR, нулевой байт не миняет свое значение.Вкл. работа "0" банка,регистры в1
;инициализация регистра TRISA
movlw b'00110100'
movwf TRISA
Цитата: Boris от 26-11-2011, 22:32:16
Спасибо за помощь.Все получилось.Сейчас остановился на командах
bcf PORTA,0 ; ychet > 10, отключить симистор.
bsf PORTA,0 ; включить симистор
нет изминений в окне SFR, нулевой байт не миняет свое значение.Вкл. работа "0" банка,регистры в1
;инициализация регистра TRISA
movlw b'00110100'
movwf TRISA
Такой инициализации недостаточно
;инициализация регистра TRISA
movlw b'00110100'
movwf TRISA
Необходимо отключить компараторы и отключить АЦП
bsf STATUS,RP0 ; выбрать банк 1
clrf ANSEL ; отключение АЦП
bсf STATUS,RP0 ;выбрать банк 0
movlw 05h ;отключение компаратора
movwf CMCON ;
Протестировал и опрос кнопок.Всеработает правильно,если ветвление команд делать однозначными.Т.е. прорграмма на этих двух подпрограмм работает.При исполнении их только не реагирует (спит)
bsf PORTA,0 ; включить симистор.
Это наверное из-за того ,что МПЛАВ выдает Register in operand not in bank 0 при проверке по трем регистрам программы.Я их прописал
bcf STATUS,RP0 ; Переходим в "0" банк.
movlw .0 ; Mодуль АЦП выключен
movwf ADCON0 ;и не потребляет тока.
;инициализация регистра INTCON.
movlw b'10000000' ; Bсе прерывания
movwf INTCON ;запрещены.
;инициализация регистра CMCON.
movlw b'00000111' ; Отключить входы
movwf CMCON ;компаратора
bsf STATUS,RP0 ; Переходим в "1" банк
;инициализация регистра TRISA.
movlw b'00110100' ; Порты RA2,RA4,Ra5 на вход, остальные выход.
movwf TRISA
;инициализация регистра TRISC.
movlw b'00000000' ; Все порты
movwf TRISC ;на выход
;инициализация регистра OPTIONS_REG.
Сейчас исправлю.Вот что значит, не знать перевода инстукции использования МК.
:hands01:Все получилось,Вам спасибо за подсказку.Сейчас программа бегает как белка в колесе,даже лучше,она останавливается на переыв,а программа пока нет.Включу ее для тестирования до вечера,посмотрим что из этого получится.А пока буду пробывать задержки писать. :)
Вопрос.Вы отключили компаратор его 5 бит. ,который в регистре затемнен(нерабочий).Я откл. 111 в 0-2 байт.Так тоже работает.Вы же использовали бит по умалчиванию,который автоматом выставляется сам.Так?И почему если так?
Я думал,что если откл. модуль АЦП,сниму напряжение с него,значит он будет отключен.Неверно думал,АЦП оказалось более емким.Скажите Вы сами переводите или есть русская документация.Если есть ,не смогли бы ей поделится?
Цитата: Boris от 27-11-2011, 08:30:59
:hands01:Все получилось,Вам спасибо за подсказку.Сейчас программа бегает как белка в колесе,даже лучше,она останавливается на переыв,а программа пока нет.Включу ее для тестирования до вечера,посмотрим что из этого получится.А пока буду пробывать задержки писать. :)
Вопрос.Вы отключили компаратор его 5 бит. ,который в регистре затемнен(нерабочий).Я откл. 111 в 0-2 байт.Так тоже работает.Вы же использовали бит по умалчиванию,который автоматом выставляется сам.Так?И почему если так?
Я думал,что если откл. модуль АЦП,сниму напряжение с него,значит он будет отключен.Неверно думал,АЦП оказалось более емким.Скажите Вы сами переводите или есть русская документация.Если есть ,не смогли бы ей поделится?
Ни в ацп, ни самих компараторах дело. Дело, в том, что есть регистры, которые управляют, какое устройство подключено к ножке (к выводу) контроллера. И именно в этих регистрах ножка контроллера подключается или к порту ввода вывода или к АЦП (или к компаратору). И при этом не зависит, включен сам модуль АЦП или нет.
ЦитироватьВопрос.Вы отключили компаратор его 5 бит. ,который в регистре затемнен(нерабочий).Я откл. 111 в 0-2 байт.Так тоже работает.Вы же использовали бит по умалчиванию,который автоматом выставляется сам.Так?И почему если так?
я тут не разбирался, я взял, то, что написано в описании
:)Еще раз хочу выразить благодарность, за оказанную помощь. :help01:Во вторник базарный день в г.Донецк,поеду покупать МОС3041, тр-р 220/6-9в и светодиоды.Начну ваять И посмотрю на его в деле.Портов свободных мало в мк для меня, на этом этапе.Да и желание, увидеть все на яву побыстрей.Потом сделаю на индикаторе.
ЦитироватьНеверно думал,АЦП оказалось более емким.Скажите Вы сами переводите или есть русская документация.Если есть ,не смогли бы ей поделится?
http://www.microchip.ru/ (http://www.microchip.ru/) есть русские описания.
Проверял русские описания PIC http://www.microchip.ru/lit/?mid=1x0 (http://www.microchip.ru/lit/?mid=1x0) все скачивается и все читается.
По этой да,по предыдущей нет.
Скачал и запустил 8.6 .
Выскакивает ошибка: Argument out of range (not a valid config register address)
__CONFIG H'0F86' ;& _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _INTRC_OSC_CLKOUT
Старый МПЛАВ не считал конфигурацию за ошибку.Новый 8.6 выдаеет ошибку.Пробывал и шестьнадцатиричное число и прописью,не получается.Подскажите, где собака сало зарыла?
Цитата: Boris от 29-11-2011, 00:31:01
Выскакивает ошибка: Argument out of range (not a valid config register address)
__CONFIG H'0F86' ;& _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _INTRC_OSC_CLKOUT
Старый МПЛАВ не считал конфигурацию за ошибку.Новый 8.6 выдаеет ошибку.Пробывал и шестьнадцатиричное число и прописью,не получается.Подскажите, где собака сало зарыла?
старый и неправильно конфигурировал контроллер, поэтому надо ошибки исправлять, а не переносить их в новые проекты.
ЦитироватьH'0F86' ;& _
такое написание недопустимо.
должно быть <параметр><пробел>&<пробел><параметр> и так далее. Никаких запятых и точек с запятой между параметрами.
"Само написание" параметра необходимо смотреть в P16F676.INC (если для 676 контроллера) файле конфигурации.
; The following is an assignment of address values for all of the
; configuration registers for the purpose of table reads
_CONFIG EQU H'2007'
;----- CONFIG Options --------------------------------------------------
_FOSC_LP EQU H'3FF8' ; LP oscillator: Low power crystal on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
_LP_OSC EQU H'3FF8' ; LP oscillator: Low power crystal on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
_FOSC_XT EQU H'3FF9' ; XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
_XT_OSC EQU H'3FF9' ; XT oscillator: Crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
_FOSC_HS EQU H'3FFA' ; HS oscillator: High speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
_HS_OSC EQU H'3FFA' ; HS oscillator: High speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN
_FOSC_EC EQU H'3FFB' ; EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN
_EC_OSC EQU H'3FFB' ; EC: I/O function on RA4/OSC2/CLKOUT pin, CLKIN on RA5/OSC1/CLKIN
_FOSC_INTRCIO EQU H'3FFC' ; INTOSC oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
_INTRC_OSC_NOCLKOUT EQU H'3FFC' ; INTOSC oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
_FOSC_INTRCCLK EQU H'3FFD' ; INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
_INTRC_OSC_CLKOUT EQU H'3FFD' ; INTOSC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN
_FOSC_EXTRCIO EQU H'3FFE' ; RC oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
_EXTRC_OSC_NOCLKOUT EQU H'3FFE' ; RC oscillator: I/O function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
_FOSC_EXTRCCLK EQU H'3FFF' ; RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
_EXTRC_OSC_CLKOUT EQU H'3FFF' ; RC oscillator: CLKOUT function on RA4/OSC2/CLKOUT pin, RC on RA5/OSC1/CLKIN
_WDTE_OFF EQU H'3FF7' ; WDT disabled
_WDT_OFF EQU H'3FF7' ; WDT disabled
_WDTE_ON EQU H'3FFF' ; WDT enabled
_WDT_ON EQU H'3FFF' ; WDT enabled
_PWRTE_ON EQU H'3FEF' ; PWRT enabled
_PWRTE_OFF EQU H'3FFF' ; PWRT disabled
_MCLRE_OFF EQU H'3FDF' ; RA3/MCLR pin function is digital I/O, MCLR internally tied to VDD
_MCLRE_ON EQU H'3FFF' ; RA3/MCLR pin function is MCLR
_BOREN_OFF EQU H'3FBF' ; BOD disabled
_BODEN_OFF EQU H'3FBF' ; BOD disabled
_BOREN_ON EQU H'3FFF' ; BOD enabled
_BODEN EQU H'3FFF' ; BOD enabled
_CP_ON EQU H'3F7F' ; Program Memory code protection is enabled
_CP EQU H'3F7F' ; Program Memory code protection is enabled
_CP_OFF EQU H'3FFF' ; Program Memory code protection is disabled
_CPD_ON EQU H'3EFF' ; Data memory code protection is enabled
_CPD EQU H'3EFF' ; Data memory code protection is enabled
_CPD_OFF EQU H'3FFF' ; Data memory code protection is disabled
;----- DEVID Equates --------------------------------------------------
_DEVID1 EQU H'2006'
;----- IDLOC Equates --------------------------------------------------
_IDLOC0 EQU H'2000'
_IDLOC1 EQU H'2001'
_IDLOC2 EQU H'2002'
_IDLOC3 EQU H'2003'
это строка из файла 16F676TEMP.ASM.
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
её читают так, защита памяти программ - отключена, защита памяти данных EEPROM - отключена, контроль по понижению питания - отключен, вывод внешнего сброса - активен (включен), сторожевой таймер отключен, задежка по запуску при подаче питания включена, используется внутрений генератор, выводы генератора используются как порты ввода/вывода.
за основу используйте файл 16F676TEMP.ASM (скопируйте его в свою рабочию папку и переименуйте под свой проект)
ЦитироватьВыскакивает ошибка: Argument out of range (not a valid config register address)
потому, что вы не включили P16F676.INC в свой проект в котором содержиться описание адреса регистра.
:(Как понимать, в даташит печатают WDTE,а в файле и Вы WDT?Как написать конфигурацию в цыфрах Н ?. Регистр конф-и 13 битовый,получается 3 байта,а можем выразить только 2 байта.
Я написал __CONFIG 0F86Н- это выражение конф-и (цвет синий),значит нормально,но всеравно ругается.
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT -цвет розовый,значит не правильно и ругается.
Цитата: Boris от 29-11-2011, 11:05:20
:(Как понимать, в даташит печатают WDTE,а в файле и Вы WDT?Как написать конфигурацию в цыфрах Н ?. Регистр конф-и 13 битовый,получается 3 байта,а можем выразить только 2 байта.
Я написал __CONFIG 0F86Н- это выражение конф-и (цвет синий),значит нормально,но всеравно ругается.
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT -цвет розовый,значит не правильно и ругается.
От цвета независит, зависит от того правильно ли вы читаете ответ или дочитали до конца.
Решение вашей проблемы может быть следующее:1. дочитать до конца прерыдуший пост (и прописать адрес для __CONFIG, а также инициализацию констант _CP_OFF).
2. дочитать до конца прерыдуший пост (и использовать для основы программирования, то что предлагает Microchip).
если непонятно могу расписать по шагам.
:(Пока повременим. Я запутался с новым МПЛАВ.Скачал анг. инструкцию и почти ни чего не понимаю.Русская есть, старой версии. Нада на новую.
Запустил МПЛАВ 8.6,толко он сам устанавливает свою заготовку хи-теч8.92. Все работает пока. Вставил свою болванку программы,создал нех файл. Правда ошибки выдал те же, что и старый,про его сомнения о регистрах в банках.Но я, все вставил из .INC файла, как Вы советовали. В МПЛАВ 5.7 в окнах было все понятно .В этом же ,считываю информации пока , почти 0.Там регистр любой в полной красе,все как на ладоне.В этом, не вижу изминения,кроме в РС.Если можно, распишите кратко, как отладить код программы.