Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.06.2007, 14:14
|
|
Частый гость
Регистрация: 21.08.2006
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Здесь звучало сравнение с ATMEL AVR. Не очень, по-моему оно уместно (IMHO, конечно, без обид). В сравнении даже с Tiny, не говоря о Mega и AT91, 12/16-й микрочип выглядит очень жалобно. Эти дурацкие банки регистров... Столько с ними мароки. Эти ужасные талицы retlw, которые не помещаются в страницу flash. Хотя, может кому и нравится! Сам-то я прилично по-писал для "mid-range". Уж больно у них корпуса приятные. Особенно у PIC10.
|
|
|
|
07.06.2007, 15:23
|
|
Прописка
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
|
Всем добрый день!
В доках нашол кучу примеров и пр. а вот с этим никак не могу въехать:
-----------------------------
Регистр W_TEMP должен быть определен во всех банках памяти с одинаковым смещением относительно начала банка (банк 0 - 0х20, банк 1 - 0хА0). Регистр STATUS_TEMP может быть определен в одном банке памяти данных.
-----------------------------
Доки по асму нет, и не могу понять как эо должно выглядеть в проге, в смысле определить регистры W_TEMP и STATUS_TEMP?
wm_destroy, вот это я нашол в описании, спасибо. Макросы освоил (раньше все их опасался и зря).
wolfvictor, спасибо за файлик, немного мудрено но я постараюсь разобраться.
lisergin_, а я и не обижаюсь, даже в мыслях не было.
Я учусь на асме и буду премного благодарен за любую помощь. По поводу читать и... дык читаем, и голова порой не вопринимает то обилие, вот и пишу на форум шоб подсказали. А тот кусочек, Вы спросили зачем, это я сигналил светодиодиками, глупо но оставил. А вот за генератор, что там не так, вродебы с ТО брал инфу, если что - растолкуйте.
С уважением Геннадий.
|
|
|
|
07.06.2007, 16:21
|
|
Частый гость
Регистрация: 21.08.2006
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Регистры верхнего банка 0xA0-0xDF отображаются физически на нижний банк (0x20-0x5F). Тоесть читаются и пишутся одинаково вне зависимости от банка. Там и размещаем xx_temp:
W_temp EQU 0x20
status_temp EQU 0x21
и все. А хитрые команды в процедуре сохранения и восстановления нужны чтобы не тронуть флаги статуса. Ведь аппаратное прерывание может застигнуть процессор сразу после команды сравнения перед командой перехода, например
|
|
|
|
07.06.2007, 16:56
|
|
Частый гость
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Цитата:
|
В доках нашол кучу примеров и пр
|
Гут. Указанные Вами регистры - это ОЗУ камня, думаю, с этим понятно. Ничего не надо писать, просто не использовать ячейки с другого банка памяти. То, есть, если у Вас W_TEMP по адресу 0x20, то 0хА0 использоваться не должен. По поводу остального - не зря сперва сохраняется аккумулятор, потом статус, восстановление - в обратной последовательности. То есть, если к моменту входа в прерывание был выбран второй банк, то W_TEMP запишется по адресу 0хА0, а при восстановлении регистров - возьмется именно из 0хА0. Кроме того, регистры 70-7F так сказать, банконезависимые, то есть если напишете W_TEMP equ 0x70, точно не ошибетесь. Блин, а для 12-го семейства по барабану, не парьтесь, то, что написал выше справедливо для более высоких семейств камней от микрочипа.
Далее. Скажите, а OSCCAL нужен для чего? Узнаете - найдете ответ по поводу генератора.
А мигание светодиодом в Вашем случае осуществляется командами
movlw .1
xorwf GPIO, f
Это пока не наступите на грабли "рид-модифи-райт" будет работать. Это есть в даташите, потом почитаете.
Удачи!
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
|
|
|
|
07.06.2007, 16:58
|
|
Прописка
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
|
wm_destroy, я вот сделал немножко не так, посмотрите:
STATUS_TEMP EQU H'0006'
W_TEMP equ H'0007'
подскажите такой вариант возможен? Компилятор не ругается и переход по прерыванию в 4-ю нормально.
С уважением Геннадий.
|
|
|
|
07.06.2007, 17:09
|
|
Гражданин KAZUS.RU
Регистрация: 27.07.2006
Сообщений: 659
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Сообщение от Faworit
|
wm_destroy, я вот сделал немножко не так, посмотрите:
STATUS_TEMP EQU H'0006'
W_TEMP equ H'0007'
подскажите такой вариант возможен? Компилятор не ругается и переход по прерыванию в 4-ю нормально.
С уважением Геннадий.
|
ВЫ ИСПОЛЬЗУЕТЕ ПАМЯТЬ РЕГИСТРОВ ПРОЦЕССОРА,ТАК НЕЛЬЗЯ ВЫ испортите насройки.Если для пользователя отведены определенные адреса так ими и пользуйтесь.
|
|
|
|
07.06.2007, 17:24
|
|
Частый гость
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
EVGENIY1962, в данном случае с Вами не согласен. Ничего не испортится, просто будет читаться как 0 (-;
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
|
|
|
|
07.06.2007, 17:54
|
|
Частый гость
Регистрация: 21.08.2006
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Похоже, случилась путаница с адресами! Как мне видится! ![Подмигивание](images/smilies/icon_wink.gif) У PICов пространство регистров и пространство программ разные. (смотрим страничку 7 и 8 мануала на 675й). Адреса 6 и 7 лежат в пространстве регистров! (регистров, правда по этим адресам нет, поэтому будем всегда читать 0). А вектор прерывания 4 находится в памяти программ! Сохранять надо в доступную RAM (!), в адреса 0х20-0х5F! Причем, всеравно в каком банке! Это ж только на картинке адреса RB0 и RB1 разные! На самом деле, в командах они адресуются одинаково, 7-ю битами. Иным словом, одна и та же RAM доступна в области 0х20-0х5F в любом банке!
|
|
|
|
07.06.2007, 18:08
|
|
Гражданин KAZUS.RU
Регистрация: 27.07.2006
Сообщений: 659
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Сообщение от lisergin_
|
EVGENIY1962, в данном случае с Вами не согласен. Ничего не испортится, просто будет читаться как 0 (-;
|
А я с вами согласен для данного пика
а вообще без необходимости подобные действия не стоит делать.Кстати а почему 0,вроде я читал,что неиспользуемые регистры можно использовать.Или я что то путаю.
|
|
|
|
07.06.2007, 18:08
|
|
Частый гость
Регистрация: 21.08.2006
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
А по поводу OSCCAL там совсем интересно! (только человеки с сильно хитро...ми мозгами молгли такое придумать!) Сам-то регистр - без чудес! Это регистр коррекции частоты встроенного RC генератора 4МГц. Только по старту процессора там лежит не оптимизированная под данную партию чиселка (ну, чтобы 4МГц по-точнее генерилось) а некое число (уж не помню точно, по-моему 0). А константа калибровки лежит в ячейке 0х3FF программной памяти (во флеше). Ее, кстати, лучше не трогать при программировании! Она оптимизированна под данный кристалл, но легко стирается при программировании!
Лежит она в виде RETLW XX. Так вот, надо сделать CALL 0x3ff. retlw положит в W значение константы. А потом надо положить W в OSCCAL. И, наслаждаться оотличными 4МГц с осциллятора! ![Улыбка](images/smilies/icon_smile.gif) А кому супер-пупер (ну, в пределах +-5% ![Подмигивание](images/smilies/icon_wink.gif) )частота не надо - можно с OSCCAL вообще не заморачиваться!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Компилятор Hi-Tech, вычисление, на PIC12F675
|
3ann |
Микроконтроллеры, АЦП, память и т.д |
27 |
06.07.2009 12:01 |
pic12f675
|
Faworit |
Микроконтроллеры, АЦП, память и т.д |
27 |
01.06.2007 17:51 |
Program memory в PIC12F675
|
waiting |
Микроконтроллеры, АЦП, память и т.д |
6 |
01.02.2007 01:21 |
Помогите идиоту с PIC12F675
|
waiting |
Микроконтроллеры, АЦП, память и т.д |
6 |
26.01.2007 22:41 |
уроки от LABCENTRE(PIC12F675+C)
|
dosikus |
Микроконтроллеры, АЦП, память и т.д |
22 |
09.10.2006 10:16 |
Часовой пояс GMT +4, время: 02:20.
|
|