Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
09.01.2008, 01:30
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Проблема в том, что код прийдет байтом. И на сколько я знаю, в асме нет команды сравнения значений в регистрах.
Не имею ввиду модуль ЗахватасравненияШИМ, еще не изучил до конца.
Сегодня посетила другая идея:
Как писал уважаемый kison, за что огромное спасибо, внести некоторые изменения: вместо возврата из подпрограммы с загрузкой константы RETLW применить команду goto и указать метку подпрограммы исполнения, получится такой вариант, в коде числа приходит "адрес" ячейки в таблице, он прибавляется к адресу стека - ADDWF PC, и переход осуществляется на требуемую команду перехода и соответственно исполнение нужного алгоритма.
Вынашу идею на ваш суд.
Еще вопрос: Как лучше принять пиком 16f628a 40 бит информации по последовательному интерфейсу идущему со скоростью 9,6 б/сек. Есть идея 5 байт принять с помощью USART, а потом разложить по регистрам. Может кто еще что подскажет, лучше или удобней?
|
|
|
|
09.01.2008, 02:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Что то я не пойму а чем не устраивает предложение kison-a ?
Код:
|
;W содержит
;значение смещения
CALL TABLE ;
;W теперь содержит
;значение из таблицы.
TABLE ADDWF PC ;W=смещение
RETLW k1;Начало таблицы table
RETLW k2
*
*
*
RETLW kn; конец таблицы table |
|
|
|
|
09.01.2008, 03:12
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Предложение дельное, но есть одно но.
Мне нужно исполнение одной из подпрограмм, в зависимости от пришедшего кода. А применив предложенный вариант я получаю только загрузку нового байта в аккумулятор, а это просто число. Ведь как работает:
;W содержит
;значение смещения
CALL TABLE ;вызов подпрограммы TABLE
;W теперь содержит
;значение из таблицы.
TABLE ADDWF PC ;W=смещение
RETLW k1;Начало таблицы table
RETLW k2
т.е. в коде приходит константа смещения по таблице, а при возврате из подпрограммы в W загружена константа из таблицы командой RETLW. В моем предложении так:
W содержит
;значение смещения
CALL TABLE ;
;теперь выполнена нужная подпрграмма
TABLE ADDWF PC ;W=смещение
goto M1 ;переход на М1
goto M2 ;переход на М2
M1
bfs PORTB,1 ;например зажечь бит порта В
return ;возврат
M2
bsf PORTB,2
return
*************
|
|
|
|
09.01.2008, 04:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Вполне работоспособное решение. Даже я бы сказал - стандартное для ущербного микрочиповского ядра. Удачи!
ЗЫ. А может все же сменить процессор? АВР дешевле и намного лучше. Или если такая тяга к Микрочипу то DSPic вполне достоин внимания.
|
|
|
|
09.01.2008, 04:13
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Я совсем недавно работаю с микроконтроллерами и во многом еще не разобрался. ![Обижен](images/smilies/icon_beee.gif) Что есть DSPic, если в двух словах? Или где почитать? Буду признателен.
|
|
|
|
09.01.2008, 04:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Как обычно, на сайте производителя - http://www.microchip.com/stellent/id...PAGE&nodeId=75
Но если только начинаете, то пока еще легко сменить платформу - выбирайте АВР. Меги16 за 2 доллара хватит чтобы "пощупать" практически все. Да и быстродействие повыше, команд побольше. Там есть команда сравнения
|
|
|
|
09.01.2008, 04:56
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо за совет и за ссылку, сонный уже, сразу не сообразил где искать. Но все же хочется с ПИКами повозится. Не знаю чем, но по душе ![Улыбка](images/smilies/icon_smile.gif)
Вы не подскажите ответ на вопрос: как лучше 40 бит информации в ПИК принять. Есть идея получше USART (асинхронный), скорость 9600 ?
|
|
|
|
09.01.2008, 07:37
|
|
Прописка
Регистрация: 16.04.2004
Сообщений: 201
Сказал спасибо: 337
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
А принять 40 бит информации ОТКУДА? Если с компа по RS-232, то лучше USART идеи уже не будет.
P.S. И почему все АВРщики так пик хают. У него всего 35 команд на асме, разобраться проще простого, да и сишных компиляторов хватает. У АВРа 130 команд. Ну и что, что у АВР быстродействие выше? Зато у пиков счетчик асинхронный. Да и светодиодами моргать даже этого быстродействия за глаза. Начинать с dsPIC все же не самая лучшая идея. 628-й вполне подходящий вариант для освоения.
|
|
|
|
09.01.2008, 14:34
|
|
Частый гость
Регистрация: 18.10.2007
Сообщений: 22
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Да как раз почти из компа... С бесконтактного считывателя, для контроля доступа. CTU-005.
Спасибо, продолжаю работать с USART.
|
|
|
|
09.01.2008, 14:42
|
|
Прописка
Регистрация: 01.11.2006
Сообщений: 199
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 13 сообщении(ях)
|
Re: Реализация чтения таблиц для Pic
Сообщение от J-t
|
Как на асемблере написать таблицу для Pic?
Например таблицу с ASCII кодов.
|
Подключить внешнюю память и с помощью программатора зашить хоть кучу таблиц. Затем путем перебора и сравнения принятого байта и считанного из таблицы байта на принятие решения (используя адрес)
SUBWF REG1,0
BTFSC STATUS,Z
(чем не сравнение регистров?)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:06.
|
|