реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Прерывания, нужна помощь
Xenom0rph
сообщение Oct 13 2008, 14:10
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646



Здравствуйте уважаемые.
Вот и подошел я к изучению прерываний.
Значит задача такая, у меня есть синхро-импульс CLOCK и линия DATA. Обе линии установлены в лог.1. Когда идет пакет данных, CLOCK начинает падать с 1 на 0 и с 0 на 1 и т.д.
По линии DATA начинают идти данные, суть в том что когда CLOCK принимает лог.0 мне нужно считать состоянии линии DATA. Вот в прочем и все.
Почитав литературу и даташиты. Настроил свою тиньку так
Код
GIMSK=0x20;
MCUCR=0x00;
PCMSK=0x20;  // Тут я установил порт PB5/PCINT5, это у меня CLOCK
EIFR=0x20;

Так вот про INT0-1 все понятно, ими можно крутить как угодно, можно ли и с PCINT сделать, что бы обработчик срабатывал, когда лог.0., как я понял, сейчас он у меня срабатывает при каждом перепаде, т.е. когда с 1 на 0 он срабатывает и когда с 0 на 1 тоже срабатывает (кстати так ли это?).

Ещё я не могу найти, что такое void pin_change_isr0 (void) и void pin_change_isr1(void), можете рассказать или сказать где про это можно почитать.
Да и вот последний вопрос. Когда при отладке курсор в любой функции попадает на delay_ms, программа перезапускается. Почему это происходит и как это можно исправить.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Oct 13 2008, 16:45
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



Судя по вашему описанию,у вас интерфейс типа SPI.Почитайте в даташите на тини раздел
Universal Serial Interface-SPI Slave Operation.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Xenom0rph
сообщение Oct 13 2008, 20:15
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646



Цитата(garbuz @ Oct 13 2008, 20:01) *
В даташите наверняка НАПИСАНО подробнейше !

В том то и дело, что в даташите подробно написано как использовать INT0 и INT1, про PCINT там мало что сказанно. Допустим если в регистре MCUCR , бит ISC11 = 0 и ISC10 = 0 то низкий уровень на выходе INT1 генерирует запрос на прерывание, также INT0 можно склнфигурироват. А про PCINT написанно только что он может генерировать запрос по изменению сигнала. Вот мне и итересно можно ли это выполнить?

В принципе, в голове назрела идея, что если в обработчике прерывания поставить условие, если уровень PB5 = 0 тогда сверять уровнь PB6(это DATA), если нет просто выходить из прерывания. Завтра попробую.

CodeVisionAVR сгенерировал мне код котрый я написал в первом посте.
Go to the top of the page
 
+Quote Post
garbuz
сообщение Oct 13 2008, 20:25
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 12-10-08
Пользователь №: 40 892



Цитата(Xenom0rph @ Oct 14 2008, 00:15) *
А про PCINT написанно только что он может генерировать запрос по изменению сигнала. Вот мне и итересно можно ли это выполнить?.

Ну если в даташит написано то наверно можно.

Цитата(Xenom0rph @ Oct 14 2008, 00:15) *
что если в обработчике прерывания поставить условие, если уровень PB5 = 0 тогда сверять уровнь PB6(это DATA), если нет просто выходить из прерывания. Завтра попробую.

на PIC с его минимальзмом векторов прерываний так и делают

Цитата(Xenom0rph @ Oct 14 2008, 00:15) *
CodeVisionAVR сгенерировал мне код котрый я написал в первом посте.

Отлично !
Go to the top of the page
 
+Quote Post
Xenom0rph
сообщение Oct 13 2008, 20:34
Сообщение #5


Частый гость
**

Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646



Цитата(WHALE @ Oct 13 2008, 20:45) *
Судя по вашему описанию,у вас интерфейс типа SPI.Почитайте в даташите на тини раздел
Universal Serial Interface-SPI Slave Operation.

Нет это не SPI

Цитата(garbuz @ Oct 14 2008, 00:25) *
Ну если в даташит написано то наверно можно.

Неправильно выразился наврно я, в даташите написано, только, что PCINT реагирует на изменение уровня сигнала, а мне нудно, что бы только на 0 реагировал!

Цитата(garbuz @ Oct 14 2008, 00:25) *
на PIC с его минимальзмом векторов прерываний так и делают

Всё перелистал ничего не нашел, наврное это единственный выход.

Сообщение отредактировал Xenom0rph - Oct 13 2008, 20:29
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 11:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01319 секунд с 7
ELECTRONIX ©2004-2016