Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ATmega AVR Таймер обратного отсчета https://www.cyberforum.ru/ avr/ thread1628695.html
Задание состоит вот в чем: - сделать таймер обратного отсчета,который запускается нажатием кнопки -по окончанию что-бы загорелся светодиод и появилась надпись END в нижней строчке дисплея P.s. Стартовую точку отсчета задать нужно задать сразу в коде. #include <mega16.h> // Alphanumeric LCD functions #include <alcd.h> int a = 0; // переменная для хранения секунд int b = 0;
Фьюзы ATmega AVR
Народ, решил перейти с ATmega8A на ATmega328P. Помогите перевести фьюзы... Все ни как разобраться не могу.. Желательно чтобы были подстроены под максимальный такт (20MHz). На ATmega8A использовал такие: 0x9F L; 0xD9 H;
ATmega AVR Как работает программа Помогите пожалуйста разобраться, только начинаю изучать программирование микроконтроллеров. include "can128def.inc" .ORG 0x0000 jmp RESET .ORG 0x0050 RESET: inc r16 jmp RESET ; End of program https://www.cyberforum.ru/ avr/ thread1627066.html ATmega AVR Сколько уходит времени на выполнение команды? Задался вопросом, а сколько всё таки уходит времени на выполнение одной команды у микроконтроллера PORTB = 0b00000000; PORTB = 0b11111111; это пример https://www.cyberforum.ru/ avr/ thread1626968.html
ATmega AVR Запутался в прерываниях
В общем стоит такая задача: Через мультиплексор на вход контроллера последовательно подаются 4 разных сигнала (разная частота). Номер входа, попадающего на мультиплексор, определяется контроллером. После этого, контроллер начинает считать пришедшие на вход импульсы, сохраняя результат в переменной, соответствующей номеру сигнала. Через 1 секунду после начала отсчета, контроллер должен подать...
ATmega AVR STK 500 для ATmega8515 Здравствуйте. Я новичок в программировании микроконтроллеров. Поэтому если напишу тут какую нибудь бредятину, то сильно грязью не поливайте) Итак, вот в чём загвоздка: Мне нужно запрограммировать микроконтроллер ATmega8515. Создаю новый проект в AVR Atmel Studio, в качестве микроконтроллера выбираю ATmega8515. Симулятор AVR не поддерживает данный вид микроконтроллера, поэтому выбираю в... https://www.cyberforum.ru/ avr/ thread1623486.html
ATmega AVR Организация прерывания по INT0,INT1 (AVR ATmega8535) Здравствуйте уважаемые знатоки. У меня сложилась такая проблема.Попытаюсь кратко ее описать: Делаю на ассемблере светофор где, по нажатию кнопки S1 (подсоединенной к PD2/INT0) задержка между зажиганиями светодиодов увеличивается , по нажатию кнопки S2(подсоединенной к PD3/INT1) задержка между зажиганиями светодиодов уменьшается. Я решил взять 3 задержки: 1.основная (5с и ни одна кнопка не нажата)... https://www.cyberforum.ru/ avr/ thread1623318.html Побитовая настройка в AtmelStudio 6 ATmega AVR
ААА! Помогите, всю голову сломал, как в AtmelStudio 6 сделать побитовую настройку. т.е. грубо говоря PORTB.0 = 1; // присвоить первому биту "1" но AtmelStudio не жуёт такую запись - ошибку выдает. Всё перелопатил PORTB0 = 1; // присвоить первому биту "1"
ATmega AVR ATMEGA16 ошибка в коде https://www.cyberforum.ru/ avr/ thread1622431.html
Помогите исправить пожалуйста ошибку в коде... задание , схему и код прикреплю ниже. Схема и код программы добавил в архив ПОмогите пожалуйста, от этого зависит моя сессия
ATmega AVR Код программы для электронных весов с мк ATMEGA128 https://www.cyberforum.ru/ avr/ thread1622239.html
Нужен код программы электронных весов с функцией ИМТ!!!!! Горит курсач, завтра защита((( выручите пожалуйста! На фото изображены пункты для выполнения. То что зачеркнуто - не нужно!
Не работает тело основной программы ATmega AVR
Добрый дань! Подскажите, пожалуйста, осваиваю AVR, написал небольшой код: отображение чисел на 4 разрядном семисегментном индикаторе. Так вот, сейчас хочу изменять значение одного разряда каждую секунду от 0 до 9. С помощью прерывания делаю отсчеты по 5мс, и каждые 200 прерываний увеличиваю значение разряда. Вроде все должно работать, а почему-то не хочет, при чем если тело программы поместить в...
ATmega AVR AVR и USB https://www.cyberforum.ru/ avr/ thread1621755.html
Здравтсвуйте!! Возникла необходимость сборки железки на МК AVR.. Суть её-непрерывно подсчитывать импульсы по двум каналам и фиксировать значения на каждом из каналов каждые 500 мкс, путём передачи на хост сообщений посредством usb, причём момент передачи никак не должен отражаться на подсчёте.. Пробывал собирать на Atmega128 (МК): Завел на МК V-USB..два канала завел на ноги МК для внешнего...
1 / 1 / 0
Регистрация: 16.11.2015
Сообщений: 18
0

Внешние прерывания - ATmega AVR - Ответ 8573760

02.01.2016, 22:36. Показов 697. Ответов 4
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! пытаюсь осуществить светодиодную подсветку лестницы. Вверху и внизу стоят датчики движения. Начинаешь подыматься ступеньки последовательно загораются, (при спуске тоже самое) проходит некоторое время и ступеньки так же последовательно затухают. Использую мега8, внешние прерывания (их там 2 (инт0,инт1)),таймер Т1.
Проблема в том что когда мк обрабатывает прерывание, допустим инт0, то надо сделать так чтобы он не видел прерывание по инт1 и наоборот.В начале и конце каждого кода обработки прерывания запрещаю и разрешаю внешние прерывания.Схему симулирую в протеусе, может на железе будет всё работать, просто слышал что протеус бывает гонит с прошивками мк. Или может есть еще какие пути решения проблемы, прошу помощи!!!!Вот код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
//F = 4 mHz, коэффециент предделителя 1024
#include <mega8.h>
 
void wait2(void) // функция задержки времени на 16сек, используется несколько раз для выключения светодиодов
{
 
 TCNT1 = 0;
 while (TCNT1 <65534)
 {
 
 }
 
}
 
void wait1(void)//функция задержки времени на 400 мс, используется для последовательного включения светодиодов
{
 
TCNT1 = 0;
while(TCNT1 <1540)
{
}
 
}
interrupt [EXT_INT0] void ext_int0_isr(void)  //низ, начало лестницы
{
 #asm ("cli")// выключаем глобальные прерывания,чтобы не считывался сигнал от верхнего датчика 
 PORTB = 0b00000001;
 wait1();
 PORTB = 0b00000011;
 wait1();
 PORTB = 0b00000111;
 wait1();
 PORTB = 0b00001111;
 wait1();
 PORTB = 0b00011111;
 wait1();
 PORTB = 0b00111111;
 wait1();
 PORTB = 0b01111111;
 wait1();
 PORTB = 0b11111111;
 //выключение светодиодов через 32 сек
 
 wait2();  
 wait2(); 
 PORTB = 0b11111110;
 wait1();
 PORTB = 0b11111100;
 wait1();
 PORTB = 0b11111000;
 wait1();
 PORTB = 0b11110000;
 wait1();
 PORTB = 0b11100000;
 wait1();
 PORTB = 0b11000000;
 wait1();
 PORTB = 0b10000000;
 wait1();
 PORTB = 0b00000000;
 #asm("sei")
}
 
 
interrupt [EXT_INT1] void ext_int1_isr(void)  //верх, конец лестницы
{
 #asm("cli") //выключаем глобальные прерывания,чтобы не считывался сигнал от нижнего датчика
 PORTB = 0b10000000;
 wait1();
 PORTB = 0b11000000;
 wait1();
 PORTB = 0b11100000;
 wait1();
 PORTB = 0b11110000;
 wait1();
 PORTB = 0b11111000;
 wait1();
 PORTB = 0b11111100;
 wait1();
 PORTB = 0b11111110;
 wait1();
 PORTB = 0b11111111;
 //выключение светодиодов через 32 сек
  
 wait2();
 wait2();
 PORTB = 0b01111111;
 wait1();
 PORTB = 0b00111111;
 wait1();
 PORTB = 0b00011111;
 wait1();
 PORTB = 0b00001111;
 wait1();
 PORTB = 0b00000111;
 wait1();
 PORTB = 0b00000011;
 wait1();
 PORTB = 0b00000001;
 wait1();
 PORTB = 0b00000000;
 
 #asm("sei")
 
}
 
void main(void)
{
 
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
 
 
DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
 
PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
 
 
DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
 
PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (1<<PORTD3) | (1<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
 
 
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11,719 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer Period: 5,5924 s
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) | (1<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
 
 
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
GICR|=(1<<INT1) | (1<<INT0);
MCUCR=(1<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00);
GIFR=(1<<INTF1) | (1<<INTF0);
 
 
// Global enable interrupts
#asm("sei")
 
while (1)
      {
      
 
      }
}
P.S.: Я начинающий поэтому прошу сильно не судить, недавно освоил таймер, раньше использовал delay_ms()

Вернуться к обсуждению:
Внешние прерывания ATmega AVR
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2016, 22:36
Готовые ответы и решения:

Внешние прерывания
нужно что бы при нажатии на кнопку отрабатывало прерывание. Я сделал так (все на мегае16, на...

Внешние прерывания
Добрый вечер, у меня на меге 8 работает ацп + необходимо обрадатывать внешнее прерывание от пина...

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

мега48, внешние прерывания
всем здрасти) ситуация такова: планируется устройство с емкостной сенсорной клавиатурой, каждый...

4
02.01.2016, 22:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2016, 22:36
Помогаю со студенческими работами здесь

Внешние прерывания ATMega128
Всем привет. У меня задача такая: есть меиндр с изменяющейся частой и надо замерять время между...

Внешние прерывания для AtMega16
Всем ,привет!)Подскажите пожалуйста:как правильно написать код программы для внешнего прерывания?Ну...

внешние прерывания tiny85 - растолкуйте даташит!
я тут типа пытаюсь мелким шаговиком управлять напрямую. ловлю внешние импульсы и по их частоте -...

Не срабатывают внешние прерывания INT0/INT1 в Atmega8
Помогите разобраться новичку в МК, в чем может быть проблема. Пытаюсь освоить самостоятельно...

Нужен совет. Atmega88 + DS1307 + внешние прерывания
Собрался тут сделать один проектик, не знаю как пойдет, но если все будет ок, то будет и раздел в...

Вызов прерывания в обработке прерывания
В программе,нажатие кнопки вызывает прерывание,в котором оно обрабатывается.Попутно в обработке...

Attiny 13 и внешние прервания
Всем привет. Помогите разобратся новичку.... Допустим есть у меня два события, которые нужно...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru