Форум сети D-Lan

Электроника => Microchip => Тема начата: Boris от 26-11-2011, 20:17:52

Название: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: 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:
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 26-11-2011, 20:54:11
Цитата: 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 - её адрес
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 26-11-2011, 21:53:38
Спасибо, Вы не представляете как рад подсказке,все получилось.Правда выполнение команд
bsf         PORA,0         ; включить симистор
bcf         PORTA,0         ; ychet > 10, отключить симистор.
в том же окне SFR не вижу,бит не меняет "0" значения.РегитртыTRISFA,C прописаны в 1,а portA "0"банке нулевой.Что еще нужно?
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Sasha от 26-11-2011, 21:58:35
Паяльник с микропроцессором - жесь  :-[
Даешь паяльнику интернет-браузер на ассемблере!
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 26-11-2011, 22:32:16
Спасибо за помощь.Все получилось.Сейчас остановился на командах
bcf         PORTA,0         ; ychet > 10, отключить симистор.
bsf         PORTA,0         ; включить симистор
                 нет изминений в окне SFR, нулевой байт не миняет свое значение.Вкл. работа "0" банка,регистры в1
;инициализация  регистра  TRISA
movlw   b'00110100'
  movwf   TRISA
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 27-11-2011, 07:19:35
Цитата: 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        ;
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 27-11-2011, 07:33:52
Протестировал и опрос кнопок.Всеработает правильно,если ветвление команд делать однозначными.Т.е. прорграмма на этих двух подпрограмм работает.При исполнении их только не реагирует (спит)
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.   
Сейчас исправлю.Вот что значит, не знать перевода инстукции использования МК.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 27-11-2011, 08:30:59
     :hands01:Все получилось,Вам спасибо за подсказку.Сейчас программа бегает как белка в колесе,даже лучше,она останавливается на переыв,а программа пока нет.Включу ее для тестирования до вечера,посмотрим что из этого получится.А пока буду пробывать задержки писать. :)
Вопрос.Вы отключили компаратор его 5 бит. ,который в регистре затемнен(нерабочий).Я откл. 111 в 0-2 байт.Так тоже работает.Вы же использовали бит по умалчиванию,который автоматом выставляется сам.Так?И почему если так?
Я думал,что если откл. модуль АЦП,сниму напряжение с него,значит он будет отключен.Неверно думал,АЦП оказалось более емким.Скажите Вы сами переводите или есть русская документация.Если есть ,не смогли бы ей поделится?
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 27-11-2011, 08:47:45
Цитата: Boris от 27-11-2011, 08:30:59
     :hands01:Все получилось,Вам спасибо за подсказку.Сейчас программа бегает как белка в колесе,даже лучше,она останавливается на переыв,а программа пока нет.Включу ее для тестирования до вечера,посмотрим что из этого получится.А пока буду пробывать задержки писать. :)
Вопрос.Вы отключили компаратор его 5 бит. ,который в регистре затемнен(нерабочий).Я откл. 111 в 0-2 байт.Так тоже работает.Вы же использовали бит по умалчиванию,который автоматом выставляется сам.Так?И почему если так?
Я думал,что если откл. модуль АЦП,сниму напряжение с него,значит он будет отключен.Неверно думал,АЦП оказалось более емким.Скажите Вы сами переводите или есть русская документация.Если есть ,не смогли бы ей поделится?
Ни в ацп, ни самих компараторах дело. Дело, в том, что есть регистры, которые управляют, какое устройство подключено к ножке (к выводу) контроллера. И именно в этих регистрах ножка контроллера подключается или к порту ввода вывода или к АЦП (или к компаратору). И при этом не зависит, включен сам модуль АЦП или нет.

ЦитироватьВопрос.Вы отключили компаратор его 5 бит. ,который в регистре затемнен(нерабочий).Я откл. 111 в 0-2 байт.Так тоже работает.Вы же использовали бит по умалчиванию,который автоматом выставляется сам.Так?И почему если так?

я тут не разбирался, я взял, то, что написано в описании
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 27-11-2011, 19:56:16
   :)Еще раз хочу выразить благодарность, за оказанную помощь. :help01:Во вторник базарный день в г.Донецк,поеду покупать МОС3041, тр-р 220/6-9в и светодиоды.Начну ваять И посмотрю на его в деле.Портов свободных мало  в мк для меня, на этом этапе.Да и желание, увидеть все на яву побыстрей.Потом сделаю на индикаторе.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 27-11-2011, 20:00:34
ЦитироватьНеверно думал,АЦП оказалось более емким.Скажите Вы сами переводите или есть русская документация.Если есть ,не смогли бы ей поделится?

http://www.microchip.ru/ (http://www.microchip.ru/) есть русские описания.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 28-11-2011, 08:14:10
Проверял русские описания PIC http://www.microchip.ru/lit/?mid=1x0 (http://www.microchip.ru/lit/?mid=1x0) все скачивается и все читается.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 28-11-2011, 08:42:23
По этой да,по предыдущей нет.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 28-11-2011, 19:50:54
Скачал и запустил 8.6 .
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: 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 выдаеет ошибку.Пробывал  и шестьнадцатиричное число и прописью,не получается.Подскажите,  где собака сало зарыла?
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 29-11-2011, 07:09:21
Цитата: 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 в свой проект в котором содержиться описание адреса регистра.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: 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 -цвет розовый,значит не правильно и ругается.

Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Catcatcat от 29-11-2011, 16:47:25
Цитата: 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).

если непонятно могу расписать по шагам.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 29-11-2011, 17:38:54
 :(Пока повременим. Я запутался с новым МПЛАВ.Скачал анг. инструкцию и почти ни чего не понимаю.Русская есть, старой версии. Нада на новую.
Название: Re: Регулятор мощностью паяльника на МК PIC16F676
Отправлено: Boris от 30-11-2011, 12:56:59
Запустил МПЛАВ 8.6,толко он сам устанавливает свою заготовку  хи-теч8.92. Все работает пока. Вставил свою болванку программы,создал нех файл. Правда ошибки выдал те же, что и старый,про его сомнения о регистрах  в банках.Но я, все вставил из .INC файла, как Вы советовали. В МПЛАВ 5.7 в окнах было все понятно .В этом же ,считываю информации пока , почти 0.Там регистр любой в полной красе,все как на ладоне.В этом, не вижу изминения,кроме в РС.Если можно, распишите кратко, как отладить код  программы.