Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
gadeama
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 43
1

ATMega8. Использование прерываний

08.04.2013, 02:35. Просмотров 3209. Ответов 8
Метки нет (Все метки)

Решил написать программу для вывода имени на диодной матрице размером 5 на 7. Программу для микроконтроллера Atmega8 решил написать на Code vision AVR, но так как нужно использовать прерывания а не функцию delay, то возникла проблема с переключением с одной буквы на другую. Если кто сможет помочь буду весьма рад.
0
Вложения
Тип файла: rar iterrups AVR.rar (30.9 Кб, 57 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2013, 02:35
Ответы с готовыми решениями:

Как разместить таблицу векторов прерываний в atmega8?
Что сделал не так?

ATTiny2313. Использование прерываний по таймеру
Помогите мне пожалуйста разобраться с программой: есть код программы для использования прерываний...

Совместное использование ATmega8 и FT232RL
...доброго времени суток, уважаемые форумчане! Возник вопрос: требует ли микросхема FT232RL...

Разница между ATMEGA8-16AI и ATMEGA8-16AU
Кто подскажет, в чем разница между ATMEGA8-16AI и ATMEGA8-16AU. Смотрю в Платане цены между ними...

Использование UART в ATMega8
Доброго времени суток! Столкнулся с проблемой написания программы на C для микроконтроллера...

8
Ethereal
5496 / 1948 / 255
Регистрация: 17.02.2013
Сообщений: 2,895
08.04.2013, 05:46 2
Вот ты подачу клока на Timer 0 выключил (впрочем, после подачи питания она была и так выключена) :
C
1
    TCCR0=0x00;
А где включил ?
0
gadeama
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 43
08.04.2013, 11:15  [ТС] 3
не дело в том что я использую таймер под номером 1, TCCR1 и решил использовать прерывание по сравнению
0
Ethereal
5496 / 1948 / 255
Регистрация: 17.02.2013
Сообщений: 2,895
08.04.2013, 15:58 4
C
1
2
3
4
5
6
7
8
9
10
void lampon_B()
{
   if (0<=i<=7)
    {         
        PORTD=(1<<i); 
        PORTB=B[i];   
        i++;  
        if(i==9)i=0;
    }
}
Да никогда у тебя i не достигнет 9-и.
7-ка превратится в 8-ку и дальше if никогда уже к i++ не подпустит.

i, кстати, нигде не инициализирована. Я не уверен, что при старте процессора она имеет определенное значение.
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
08.04.2013, 20:20 5
Другой таймер нужно запускать для отсчета времени переключения букв.

Один индикатор маловато будет. Сделайте на сдвиговых регистрах 74595.
1
gadeama
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 43
08.04.2013, 20:28  [ТС] 6
Цитата Сообщение от russo turisto Посмотреть сообщение
Другой таймер нужно запускать для отсчета времени переключения букв.

Один индикатор маловато будет. Сделайте на сдвиговых регистрах 74595.
Я тоже думал параллельно запустить еще один таймер , который по переполнению будет переключать буквы , только прерывание в ней будет происходить медленнее , чтобы интервал переключения между буквами был примерно 1 секунда.

Но пока я новичок , и медленно учусь , если можно то был бы рад каким то вашим наброскам
0
russo turisto
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
08.04.2013, 21:23 7
Запускаете любой таймер, можно 16ти битный, при переполнении инкрементируется переменная, при достижении переменной например 20ти - переключаем букву.

В плане схемы - лучше мегу 32 взять и штук пять этих индикаторов подключить.
Например вот так
1
Миниатюры
ATMega8. Использование прерываний  
Voland_
1694 / 1038 / 98
Регистрация: 04.01.2010
Сообщений: 3,517
08.04.2013, 22:21 8
russo turisto, 74hc595 - это как раз то, что для этой задачи нужно , но с программной точки зрения надо вешать SH_CP на MOSI, чтобы использовать аппаратный SPI Меги8. Это даст возможность выводить данные с бешенной скоростью, т.к. частота SPI устанавливается равной половине частоты проца, что не мало. Да еще прерывания есть.
0
gadeama
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 43
09.04.2013, 01:46  [ТС] 9
Цитата Сообщение от russo turisto Посмотреть сообщение
Запускаете любой таймер, можно 16ти битный, при переполнении инкрементируется переменная, при достижении переменной например 20ти - переключаем букву.

В плане схемы - лучше мегу 32 взять и штук пять этих индикаторов подключить.
Например вот так
Вот решил , но все таки по своему , но признаю ваш метод тоже хорош
0
Вложения
Тип файла: rar Interrups_AVR.rar (32.8 Кб, 72 просмотров)
09.04.2013, 01:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 01:46

Использование обработчика прерываний
Несколько дней назад прошел тему &quot;Обработчик прерываний&quot;, сейчас решил освежить память и...

Использование вектора прерываний для вывода значения на экран с продолжением цикла
В программе имеется циклический счётчик, считающий от 1 до 6. При нажатии любой клавиши содержимое...

Какие функции прерываний используются в обработчике прерываний от клавиатуры?
Под функциями же имеется ввиду int ..h?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru