Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 05.06.2007, 13:13  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию PIC12F675 снова вопросы.

Добрый день Всем. Раскажите пож. как обрабатывать прерывания от устройств (АЦП, таймеры, вывод INT)? Собрал файлик, подключил TMR1 по переполнению прерывание и дальше вкл/выкл на GP5 светодиод. Привожу текст:
;-----------------------------------------------
list p=12F675
#include "p12F675.inc"

__CONFIG _INTRC_OSC_NOCLKOUT & _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF

cl1 equ 0x34
cl2 equ 0x35
cl3 equ 0x36
cl4 equ 0x37
cl5 equ 0x38
cl6 equ 0x39

org 0x0000

reset goto start

start bcf STATUS, RP0 ; Выбрать банк 0
; clrwdt ; Очистка WDT
clrf GPIO ; Инициализация защелок GPIO

movlw 0x07 ;компаратор выключить
movwf CMCON ;каналы GPIO-цифровые входы/выходы

clrf ADCON0
bsf STATUS, RP0 ;Выбрать банк 1
movlw 0x02 ;
movwf ANSEL ;
movlw 0xd0 ;Сбрасываем флаги, и разрешаем все
movwf INTCON ;прерывания, кроме TMR0
movlw 0x47 ;Прерывание по переднему фронту INT,
movwf OPTION_REG ;вкл. подтяг. резюки, предделитель перед TMR0
movlw 0x0f ;GP4,GP5 - out; GP0-GP3 - in
movwf TRISIO ;
movlw 0xff ;Установим максимальное значение
movwf OSCCAL ;для внутреннего генератора
clrf WPU
bsf WPU, 1 ;вкл. подтягивающий резистор на GP1
clrf IOCB ;запретить прерывания по изменению входного уровня на GP0-GP3
;Конфигурируем TMR1
bcf STATUS, RP0 ;Выбрать банк 0
; clrwdt ; Очистка WDT
clrf TMR1H ;Очистить счетчик Н
clrf TMR1L ;Очистить счетчик L
movlw 0xff ;
movwf TMR1H ;
movlw 0xfd ;
movwf TMR1L ;
movlw 0x31 ;установим предделитель
movwf T1CON ;для таймера TMR1 (11)
bsf STATUS, RP0 ;Выбрать банк 1
bsf PIE1, TMR1IE ;разрешаем прерывание
bsf INTCON, PEIE ;по переполнению
bsf INTCON, GIE ;таймера TMR1
bcf STATUS, RP0 ;Выбрать банк 0
bcf PIR1, TMR1IF ;сброс флага переполнения TMR1
int_t1 btfss PIR1, TMR1IF ;проверка флага переполнения
goto int_t1 ;
bcf PIR1, TMR1IF ;
btfss GPIO, GP5 ;
bsf GPIO, GP5 ;
bcf GPIO, GP5 ;
goto int_t1 ;


End
;--------------------------------------------------
Когда установится флаг TMR1IE (в пошаговом режиме) курсор сразу переходит на 21 строку. Растолкуйте чайнику как работают с прерываниями?
С уважением Геннадий.
Реклама:
Faworit вне форума  
Непрочитано 05.06.2007, 15:41  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Правильно переходит, на 4 адрес (кажется)
Сам забыл, давно не работал в асме - а в си над этим не задумываешься. Где само прерывание (обработчик ???)
http://www.microchip.ru/lit/?mid=1x0
Здесь - на русском литература
urry вне форума  
Непрочитано 05.06.2007, 16:10  
EVGENIY1962
Гражданин KAZUS.RU
 
Регистрация: 27.07.2006
Сообщений: 659
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
EVGENIY1962 на пути к лучшему
По умолчанию

Сообщение от urry
Правильно переходит, на 4 адрес (кажется)
Сам забыл, давно не работал в асме - а в си над этим не задумываешься. Где само прерывание (обработчик ???)
http://www.microchip.ru/lit/?mid=1x0
Здесь - на русском литература
Да на 4.Вы должны на адр 4 поместить GOTO на программу обработки прерывания.У вас на 4 сидит что то другое поэтому проц бесится.В описании на любой пик есть болванка на обработку прерывания.Посмотрите,для обработки одного прерывания там все нормально написано.Обратите внимание с тем ли банком вы заходите на обработку и стем ли выходите.
EVGENIY1962 вне форума  
Непрочитано 06.06.2007, 00:06  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию

urry, спасибо за ссылку на доку, с утра займусь. Это чо на каждое прерывание(от разных устройств) есть свой адрес перехода? Для TMR1 -› 4 адрес. Ладно почитаем доку. Спасибо всем.
С уважением Геннадий.
Faworit вне форума  
Непрочитано 06.06.2007, 00:26  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Сообщение от Faworit
Это чо на каждое прерывание(от разных устройств) есть свой адрес перехода?
С уважением Геннадий.
Называется таблица векторов прерываний. Когда срабатывает прерывание, программа скачет в начало, в эту самую таблицу, а дальше на метку соответствующего прерывания... во всяком случае так для AVR.
dimonbest вне форума  
Непрочитано 06.06.2007, 01:39  
lisergin_
Частый гость
 
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
lisergin_ на пути к лучшему
По умолчанию

И земляк, и тезка...
Уважаемый, ну это везде написано. Я понимаю, конечно, что проще спросить. Лентяй Вы.
Вектор прерывания в ПИКах один, он располагается по адресу 4, а далее ручками перебираете, что сработало.
Записи в CMCON семерки достаточно для того, чтобы рассказать камню, что компараторы с АЦП вам не нужны.
Зачем левое значение для внутреннего генератора? В большинстве случаев его при первом программировании нужно сохранить, особенно в условии отсутствия осциллографа, при этом следует помнить, что самым надежным, долговечным и с хорошей системой восстановления информации источником является бумага.
Цитата:
btfss GPIO, GP5 ;
bsf GPIO, GP5 ;
bcf GPIO, GP5 ;
Что Вам дает этот кусок? Проще bcf GPIO, GP5.

Да там еще пару вещей, ну ничего, было бы желание...

Вывод: очень внимательно, очень много и очень часто читать ТУ. Думать головой. Юзать симуляторы, а еще лучше паяльник с макеткой. Выкладывать кусок программы используя тег "code".
Удачи!
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
lisergin_ вне форума  
Непрочитано 06.06.2007, 11:03  
Faworit
Прописка
 
Регистрация: 28.12.2006
Сообщений: 277
Сказал спасибо: 25
Сказали Спасибо 20 раз(а) в 18 сообщении(ях)
Faworit на пути к лучшему
По умолчанию

lisergin_, по поводу лени, возможно вы правы, хотя тут можно и спорить но это будет лиш тратой времени. Ассемблером занимаюсь недавно и многое мне еще ... но я учусь и не стоит сильно браниться на чайников за их "глупые" вопросы.
urry, спасибо за ссылку, НАШОЛ!!!
С уважением Геннадий.
Faworit вне форума  
Непрочитано 06.06.2007, 11:12  
lisergin_
Частый гость
 
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
lisergin_ на пути к лучшему
По умолчанию

Обиделись? Дело Ваше.
Жаль, что зря старался обратить Ваше внимание на то, как не надо делать.
Пожалуйста.
Кстати, ругать не собирался, написал что думал.
Удачи!
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
lisergin_ вне форума  
Непрочитано 06.06.2007, 16:40  
wolfvictor
Частый гость
 
Регистрация: 05.05.2006
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
wolfvictor на пути к лучшему
По умолчанию

во-первых, ТО это хорощо! Популярно: 1. Настроить соответствующие порты на ввод записью в TRISIO 1.
2. Отключить компараторы - записать соответствующие биты в CMCON.
3. Настроить ADCON0 (регистр АЦП).
4. Настроить ANSEL
и т.д.
даю готовую программу настройки для АЦП - GP2.
Посмотри ТО!
5. Флаги прерываний - это которые оканчиваются на F устанавливаються независимо от битов разрешения прерываний - это которые оканчиваються на Е. Все это в принципе описано в ТО. И биты F - должны сбрасыватся программно!!

Прикрепленный файл: 1606987.zip
wolfvictor вне форума  
Непрочитано 07.06.2007, 13:58  
wm_destroy
Частый гость
 
Регистрация: 21.08.2006
Сообщений: 11
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
wm_destroy на пути к лучшему
По умолчанию

От себя добавлю, что хорошо бы при входе в прерывание (аппаратно генерируется call 0x4 по поднятию соотв. флага. Попутно, тоже аппаратно запрещаются все прерывания) сохранить W и статус:
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP

а после обработки(перед RETI) восстановить:

SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
(xx_temp - 2 регистра для сохранения).

Задача обработчика - просканировать флаги разрешенных прерываний и выполнить переход на соответствующую процедуру. После обработки прерывания необходимо вручную сбрасывать флаг. Сам он не падает. По RETI глобальные прерывания разрешаются автоматически.
wm_destroy вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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, время: 23:42.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot