roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 11:19

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 15:31 
Не в сети

Зарегистрирован: 23 июн 2008, 15:24
Сообщения: 5
Вообщем то сабж.Уже намучался с прерыванием =( по INT0 .
Вот код.Посмотрите пожалуйста в чем ошибка.Регистры настроенны таким образом,что прерывание срабатывает по нсподаещему фронту на INTO.Как я понимаю нисподающий фронт это изменение сигнала с "лог 1" до "лог 0".Правильно?И собственно код: компилятор WinAvr.Проверял в Proteus'e;
Код:


#include <avr/io.h>
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/signal.h>

// External Interrupt 0 service routine
INTERRUPT(SIG_INTERRUPT0)
{
PORTB ^=0xff;
}

void main(void)
{
PORTB=0x00;
DDRB=0xFF;
GICR|=0x40;
MCUCR=0x02;
GIFR=0x40;

sei();

while (1)
      {

      };
}





Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 16:56 
Не в сети
Аватара пользователя

Зарегистрирован: 21 дек 2006, 19:56
Сообщения: 4468
Откуда: Украина, г.Одесса
прог. языки: Delphi и С
А ты уверен что нужно писать не так
Код:
#asm("sei")


Добавлено спустя 2 минуты 1 секунду:
И это может эту ножку порта нужно настроить как вход, а не как выход?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 17:00 
Не в сети

Зарегистрирован: 23 июн 2008, 15:24
Сообщения: 5
Код:
error: invalid preprocessing directive #asm


:cry: и не компилиться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 17:46 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
bond писал(а):
Уже намучался с прерыванием

http://avr123.nm.ru/03.htm


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 22:47 
Не в сети

Зарегистрирован: 26 мар 2008, 20:11
Сообщения: 47
Откуда: Украина. Херсон.
ФИО: Дмитрий
2avr123.nm.ru У Вас отличный курс,но на мой взгляд про прерывания стоит подкинуть пару примеров - уже готовых простейших программ, чтобы быстрее понималось))Например: мигает светодиод,при нажатии кнопки мигает 5 раз другой светодиод, и снова начинает мигать первый.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 22:58 
Не в сети

Зарегистрирован: 23 июн 2008, 15:24
Сообщения: 5
Да,совершенно согласен,я прочитал курс от корочки до корочки,все отлично понятно,вообщемто все азы я узнал из курса,но с прерываниями вышла небольшая проблема.У меня будет небольшая просьба ко всем участникам данного форума:пожалуйста напишите простой пример внешнего прерывания,в WinAvr и простую схемку в Proteus,мне очень поможет,да и думаю другим новичка.Заранее большое спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 23 июн 2008, 23:54 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Kartush писал(а):
2avr123.nm.ru У Вас отличный курс,но на мой взгляд про прерывания стоит подкинуть пару примеров - уже готовых простейших программ, чтобы быстрее понималось))


Дак вы внимательно посмотрите ! Там и есть готовый для симуляции пример с двумя кнопками на прерывания.

bond писал(а):
просьба ко всем участникам данного форума:пожалуйста напишите простой пример внешнего прерывания,в WinAvr и простую схемку в Proteus,мне очень поможет,да и думаю другим новичка.


У меня там (на стр. 3 курса) пример для CVAVR и VMLAB.

А вам нужно там посмотреть как объявлять обработчик прерывания в WinAVR.

И еще по WinAVR - viewtopic.php?f=2&t=3928


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 24 июн 2008, 11:09 
Не в сети

Зарегистрирован: 26 мар 2008, 20:11
Сообщения: 47
Откуда: Украина. Херсон.
ФИО: Дмитрий
avr123.nm.ru писал(а):
Kartush писал(а):
2avr123.nm.ru У Вас отличный курс,но на мой взгляд про прерывания стоит подкинуть пару примеров - уже готовых простейших программ, чтобы быстрее понималось))


Дак вы внимательно посмотрите ! Там и есть готовый для симуляции пример с двумя кнопками на прерывания.

Согласен,пример есть. Но если кто-то уже ссимулировал работу прерываний и теперь хочет вернуться в реальность. Какую программу ему прошивать? В примере дана программа под симулятор. Что именно нужно тогда изменить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 24 июн 2008, 11:31 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Ни чего менять не нужно. Просто прошить .hex в МК и подключить кнопки через резисторы 240-750 Ом и для индикации светодиоды через резисторы 470-750 Ом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 24 июн 2008, 11:34 
Не в сети

Зарегистрирован: 26 мар 2008, 20:11
Сообщения: 47
Откуда: Украина. Херсон.
ФИО: Дмитрий
Спасибо, будем разбираться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 24 июн 2008, 12:21 
Не в сети

Зарегистрирован: 23 июн 2008, 15:24
Сообщения: 5
Опять же.Сделал все как написанно в курсе,тольок не работает...
Код:



#include <avr/io.h>
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/signal.h>


// External Interrupt 0 service routine
ISR(SIG_INTERRUPT0)
{
PORTB ^=0xff;
}

void main(void)
{
PORTB=0x00;
DDRB=0xFF;
GICR|=0x40;
MCUCR=0x02;
GIFR=0x40;
sei();


while (1)
      {

      };
}






Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 10 июл 2008, 16:41 
Не в сети

Зарегистрирован: 10 июл 2008, 16:14
Сообщения: 4
Проверьте по ходу программы, устанавливается ли у вас бит I в регистре SREG? Например в VMlab это можно легко сделать.

sei(); - это фигня какая-то, сделайте лучше вот так: SREG |= (1 << 7);

[


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 10 июл 2008, 16:48 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Kip писал(а):
sei(); - это фигня какая-то, сделайте лучше вот так: SREG |= (1 << 7);

Это че еще за новости?

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 10 июл 2008, 16:58 
Не в сети

Зарегистрирован: 10 июл 2008, 16:14
Сообщения: 4
blindman писал(а):
Это че еще за новости?


Разве это новости?
Бит 7 в регистре SREG отвечает за прерывания. Если установлен-разрешены глобально, если не-то нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Внешние прерывания Atmega8
СообщениеДобавлено: 10 июл 2008, 17:07 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Для меня новость, что sei это "фигня". Может порадовать этой новостью разработчиков контроллера? Наверно, по твоему фигня также и то, что твой код будет исполняться в 3 раза дольше? И то, что тот, кто будет потом читать твой код, должен помнить, что I это именно седьмой бит?

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

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


Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 5


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO