Например TDA7294

Форум РадиоКот • Просмотр темы - помощ лузерам в прогромировании МК PIC
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт фев 24, 2026 16:34:59

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 235 ]     ... , , , , 12
Автор Сообщение
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Пт ноя 20, 2015 14:43:55 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2973
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24850
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Возможно и это, если Вы разрешите и обслужите ВЛОЖЕННЫЕ прерывания (придется сохранять контекст дважды по уровню максимального вложения).
Можно взять более совершенную архитектуру (пик24, например) и вопрос с прерыванием прерывания будет решаться очень просто. Нужно будет только прописать приоритеты.


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Ср ноя 25, 2015 07:29:40 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
wss60 писал(а):
Значит в pic16 только одно прерывание
Прерываний много, вектор один. :wink:


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 14:50:21 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Доброго времени суток. Тусуюсь в основном в ветке по MCS-51, так как изучаю их (нравятся они мне). Но по работе надо PIC, поэтому пришлось парралельно начать и их изучение. Интересные надо сказать процы оказались, даже не думал. Одни только табличные переходы (возврат по retlw) чего стоят :)) И вот, в процессе изучения возникло несколько вопросов: есть комада movwf (из акумулятора в регистр), а вот вместо обратной команды movfw (из регистра в аккумулятор) надо использовать movf f,0. Но если я в MPLAB IDE наберу movfw, оно выделит ее как существующую команду. Так есть ли такая команда ??? И зачем нужна команда movf f,1 - зачем переписывать регистр сам в себя ? Разве что только считать существующие значения на пинах порта...


Последний раз редактировалось Пока_без_кота Чт дек 10, 2015 15:20:30, всего редактировалось 2 раз(а).

Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 14:58:39 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 399
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Ну например таким образом можно узнать число отрицательное,положительное или нулевое в регистре, так как команда влияет на флаги N и Z
Вместо 0/1 лучше писать MOVF reg,W или MOVF reg,F

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 15:32:54 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Пока_без_кота, какая команда на какие влияет флаги - всегда смотрите INSTRUCTION SET SUMMARY на ваш контроллер.
Дело в том, что у разных поколений PIC-контроллеров есть отличия в наборе команд и на какие флаги влияет "вроде бы, одна и та же" команда.
К примеру, флаги после выполнения команды INCF:
у PIC16F87X - флаг Z
У PIC18F2X/4XK22 - флаги C, DC, Z, OV, N


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 20:33:10 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Спасибо. Вот не поленился проверить, вбил в свою программку бегущего огонька movfw вместо movf f,0 и оно работает. Хотя такой команды в списке 35 команд моего 16F84 нет))

Спойлер
Код:
   list   p=16F84A
   __Config 3FF1

pcl      equ   02
status   equ   03
portA   equ   05
trisA   equ   05
portB   equ   06
trisB   equ   06
pointer   equ   10
del_1   equ   11
del_2   equ   12
 
   org     0

start
   bsf      status,5   ; Выбор 1 банка памяти
   movlw   b'00011111'   ; Весь порт на ввод
   movwf   trisA      ; W в trisA
   movlw   b'00000000'   ; Весь порт на вывод
   movwf   trisB      ; W в trisB
   bcf      status,5   ; Выбор 0 банка памяти
Main   
   movlw   0         ; Потушим весь порт
   movwf   portB      ; Перенос W в portB
   movwf   pointer      ; Очищаем указатель             
Loop
   movfw   pointer      ; Указатель в аккумулятор, по нему будем вытягивать из поисковой таблицы состояние порта
   call   Table      ; Перейдем в поисковую таблицу
   movwf   portB      ; Выведем то, что взяли из нее, в порт В
   call   Delay
   incf   pointer,1   ; Увеличим указатель
   btfsc   pointer,3   ; Если 3 бит установлен, значит счетчик уже досчитал до 8 (00001000), а значит пора его обнулять
   clrf   pointer      ; Досчитали до 8, обнуляем
   goto   Loop      ; Зациклимся
;*****************************************************
Delay
   movlw   d'255'
   movwf   del_2
Reload_del_1
   movlw   d'255'
   movwf   del_1
No_reload_del
   decfsz   del_1,1
   goto   No_reload_del
   decfsz   del_2,1
   goto   Reload_del_1
   return
;******************************************************
Table
   addwf   pcl         ; Добавим значение указателя к текущему значению счетчика команд, перейдя таким образом на команду возврата с необходимым состоянием порта

   retlw   b'00000001'
   retlw   b'00000010'
   retlw   b'00000100'
   retlw   b'00001000'
   retlw   b'00010000'
   retlw   b'00100000'
   retlw   b'01000000'
   retlw   b'10000000'

   end


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 20:47:11 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 399
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Раздел Special Instruction Mnemonics в документе MPASM USER’S GUIDE
Там еще много других мнемоник упрощающих жизнь, например
BZ k - Branch on Zero =
BTFSC 3,2
GOTO k

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 20:56:44 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: -32
Зарегистрирован: Вс ноя 01, 2015 13:13:49
Сообщений: 616
Рейтинг сообщения: 0
Я эти макросы начинающим не показывал бы. Они их путают с командами со всеми вытекающими.


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Чт дек 10, 2015 22:14:14 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
scorpi_0n, полностью поддерживаю.
Лучше, пусть смотрят список команд в документации на контроллер (у Microchip-а эта информация "на поверхности").


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Пн дек 14, 2015 09:34:41 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Подскажите еще такой момент. В 8051 есть очень удобная команда сравнения с константой. В Пиках я пока вижу только способ побитной проверки. Например, сравнить инкрементируемую переменную с числом 13 (дес.) = 1101 (дв.). Я начиная от старшего к маладшему проверяю 3,2,0 бит на установку командами btfss, и если 3 бит установлен, проверяю 2, и в конце 0 бит. Существует ли более елегантное решение ? Потому что сравнивать таким способом например с числом 255 это как-то ...


Последний раз редактировалось Пока_без_кота Пн дек 14, 2015 09:51:44, всего редактировалось 2 раз(а).

Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Пн дек 14, 2015 09:42:29 
Потрогал лапой паяльник

Карма: 11
Рейтинг сообщений: 62
Зарегистрирован: Сб авг 08, 2009 23:02:57
Сообщений: 399
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
XORLW Constant сравнение W с константой, результат Флаг Z =1 значит равны
XORWF Reg, W/F сравнение W с регистром , результат Флаг Z =1 значит равны, модификация регистра или W

сравнение вычитанием

MOVLW CONST
SUBWF REG,W/F

Z=1 - РАВНЫ
С=1 - REG>=CONST

Для 18 серии смотрите также
CPFSEQ
CPFSGT
CPFSLT

_________________
__________________
Все, что нельзя запрограммировать на ассемблере, приходится паять


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Пн дек 14, 2015 09:56:55 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
driver_gv писал(а):
XORLW...

Спасибо, оперативно :)))


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Пн дек 14, 2015 19:19:14 
Родился
Аватар пользователя

Карма: 3
Рейтинг сообщений: 15
Зарегистрирован: Сб апр 03, 2010 10:10:10
Сообщений: 12
Рейтинг сообщения: 0
Всем привет! Прошу помощи.
Имеется схема DC-AC преобразователя, на PIC12F629 в качестве ШИМ. Рабочая частота 25 Кгц.
Схему собрал, работает отлично, но хочется разобраться, как в исходнике правильно изменить частоту, на 50Кгц, 100Кгц.
В MPLAB, в исходнике, нашёл значение call Temp, потом открыл вкладку VIEW/Programm Memory, отыскал значение 2015, если его меняю (уже в готовом HEX), например на 2018, то получаю частоту около 82кгц.

Объясните пожалуйста на пальцах, какие строчки (значения, числа) подправить, и где они вообще? где эта зависимость микросекунд, к тактовой частоте 4Мгц? как расчитать, какие формулы?

Вот, очистил в исходнике всё лишнее (комментарии), чтобы не отвлекаться, ничего не пойму, как эти буквы влияют на частоту, хоть хвост отстрели. Второй день с кодом бьюсь ((



СпойлерLIST p=12F629
#include <p12f629.inc>
__CONFIG _MCLRE_OFF & _CP_OFF & _CPD_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _BODEN_OFF
#DEFINE Pos GPIO,0
#DEFINE Neg GPIO,1
#DEFINE LED GPIO,2
#DEFINE Syn GPIO,4
CBLOCK 0x20
Clign1 : 1
Clign2 : 1
ENDC
org 0x000
bcf STATUS,RP0
clrf GPIO
movlw 0x07
movwf CMCON
bsf STATUS,RP0
clrf TRISIO
call 3FFh
movwf OSCCAL
bcf STATUS,RP0
Debut clrf GPIO
Altp0
bsf Pos
bsf Syn
call Temp
bcf Pos
nop
nop
bsf Neg
bcf Syn
call Temp
bcf Neg
goto Altp0
Temp incf Clign1,F
btfsc STATUS,Z
incf Clign2,F
btfss STATUS,Z
nop
btfsc Clign2,4
bsf LED
btfss Clign2,4
bcf LED
nop
nop
return
END


Вложения:
MPLAB.rar [72.65 KiB]
Скачиваний: 143


Последний раз редактировалось 501 Вт дек 15, 2015 00:58:09, всего редактировалось 1 раз.
Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Пн дек 14, 2015 20:06:24 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
Это не ШИМ , а генератор прямоугольных импульсов.
Зачем править НЕХ, если есть исходник ?
Для ШИМа нужно переписать программу.
Для изменения частоты тоже нужно править весь исходник.
В МПЛАБ есть симулятор и инструменты к нему. Можно наблюдать что и где происходит.


Вернуться наверх
 
 Заголовок сообщения: Re: помощ лузерам в прогромировании МК PIC
СообщениеДобавлено: Вт дек 15, 2015 12:27:27 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
501 писал(а):
как расчитать, какие формулы?
1МЦ (машинный цикл) = 1us (микросекунде)
Команда может выполняться за 1МЦ, некоторые за 2.
Тут все временнЫе задержки выполнены тупо на счётчиках, что в корне неправильно.
Грамотнее, для этой цели, использовать прерывания от таймера.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 235 ]     ... , , , , 12

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y