Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
ATmega32
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 11
1

Не могу понять как выполнить задание на ATmega

26.11.2016, 18:38. Просмотров 326. Ответов 10
Метки нет (Все метки)

Добрый день, у меня есть задание написать программу что бы было прерывание и таймер, суть задания сделать что бы диод начал светится через 250 ms а гаснуть через 750 ms. Не знаю как сделать таймер и прерывание кто то может помочь?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2016, 18:38
Ответы с готовыми решениями:

Как выполнить умножение на Atmega 8535 (ASM)?
Можно перемножить числа следующим образом? ldi r17 2 ldi r18 3 mul r18, r17...

ПРОБЛЕМА НЕ МОГУ ПРОШИТЬ atmega 8
я НЕ МОГУ ПРОШИТЬ АТМЕГУ ТАК КАК ВЫХОДИТЬ ОКОШКО И НЕ МОГУ ПОНЯТЬ В ЧЕМ ПРОЛЕМА...

Макетная плата для Atmega 32?atmega 8
Здравствуйте !Уважаемые мастера нужна помощь (а именно нужна схема макетной...

Не могу понять условие, следовательно, и выполнить задание
Дана следующая задача: Даны целое число k (1<=k<=180 ) и последовательность...

Не могу понять как делать задание про шифр Цезаря и потоки
Слезно прошу помочь, сил больше нет... Задание: Пользователь вводит строку,...

10
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,686
26.11.2016, 18:57 2
В CVAVR запустить визард и запустить таймер. ВременнЫе промежутки посчитать и вписать в программу.
0
ATmega32
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 11
26.11.2016, 19:17  [ТС] 3
Мне нужно это как то прописать в программе и я пользуюсь AVR Studio, не знаю может нужно использовать ШИМ ?
0
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,686
26.11.2016, 21:16 4
Можно и ШИМ, но у вас в задании - прерывание.

Добавлено через 3 минуты
Инициализируйте прерывание, например, по переполнению таймера0 через каждые 250 мс. В обработчике прерывания ведите счет переменной до 4-х. Если переменная = 0, то зажигайте светодиод, при остальных значениях тушите.

Добавлено через 47 секунд
Или наоборот - в отладчике отладите.
0
ATmega32
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 11
26.11.2016, 23:47  [ТС] 5
А как это можно интерпретировать?

Добавлено через 1 час 11 минут
Знаю это не правильно, какой то набросок но может кто то попробует сказать что нужно делать или подправит
Assembler
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
.include "m32def.inc"
 
.org 0x0000 jmp INIT 
.org 0x012 jmp OVERFLOW 
 
INIT:
ldi R16, HIGH(RAMEND)
out SPH, R16
ldi R17, LOW(RAMEND)
out SPL, R17
 
sbi DDRD, 4
ldi R17, (1<<WGM10)|(1<<WGM11)|(1<<COM1A0)|(1<<COM1A1)
out TCCR1A, R17
ldi R17, (1<<CS10)|(0<<CS11)|(1<<CS12)
out TCCR1B, R17
 
sei
ldi R17, 0x00001111
out OCR1AH, R17
ldi R17, 0x01000010
out OCR1AL, R17
 
OVERFLOW:
ldi R17, (0<<CS10)|(0<<CS11)|(1<<CS12)
out TCCR1B, R17
reti
0
Ethereal
4856 / 1876 / 245
Регистрация: 17.02.2013
Сообщений: 2,792
27.11.2016, 06:03 6
Знаю что неправильно, но может кто подправит
<Первый попавшийся кусок программы, выдранный из Интернета, шмяк>
и жду а вдруг за меня напишут. Социальная инженерия, однако.

Добавлено через 10 минут
В смысле не видно, что ты начал программу писать. В ней пока нет главного - содержания. Только шапки непонятно от чего. Чего-то с ШИМ-ом связанного.

Добавлено через 5 минут
Цитата Сообщение от ATmega32 Посмотреть сообщение
ldi R17, 0x01000010
Регистр r17 все-таки восьмибитный. 0x - так 16-чные числа начинаются, а не двоичные.
2
pyzhman
782 / 477 / 65
Регистрация: 15.05.2012
Сообщений: 2,686
27.11.2016, 09:06 7
Assembler
1
reti
Возврат в неизвестность.
0
ATmega32
0 / 0 / 0
Регистрация: 26.11.2016
Сообщений: 11
28.11.2016, 03:21  [ТС] 8
Хорошо, например я запустил таймер и через OCR1AH и OCR1AL проверяю значение, как мне узнать что это значение было в каком это реестре указано или в векторе прерывания?

Добавлено через 6 часов 1 минуту
Написал так, но нет прерывание до TIM1_COMPA, кто то может помочь найти ошибку?
Assembler
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
.include "m32def.inc"
 
.org $000 jmp INIT 
.org 0x00E jmp TIM1_COMPA
 
INIT:
ldi R16, HIGH(RAMEND)
out SPH, R16
ldi R17, LOW(RAMEND)
out SPL, R17
 
sbi DDRD, 4
ldi R16, (1<<WGM10)|(1<<WGM11)|(1<<COM1A0)|(1<<COM1A1)
out TCCR1A, R16
ldi R16, (1<<CS10)|(0<<CS11)|(1<<CS12)
out TCCR1B, R16
sei
ldi R19,1
 
 
ldi R16, 0x00
out OCR1AH, R16
ldi R16, 0xD2
out OCR1AL, R16
 
main:
in R17, TCNT1L
in R18, TCNT1H
 
rjmp main
 
TIM1_COMPA:
sbis PORTD, 4
jmp ON
sbi PORTD, 4
OFF:
 
ldi R16, 0b00001111
out OCR1AH, R16
ldi R16, 0b01000010
out OCR1AL, R16
cbi PORTD, 4
jmp exit
 
ON:
ldi R16, 0b00101101
out OCR1AH, R16
ldi R16, 0b11000111
out OCR1AL, R16
sbi PORTD, 4
 
exit:
reti
0
Voland_
1670 / 1015 / 97
Регистрация: 04.01.2010
Сообщений: 3,395
28.11.2016, 11:17 9
ATmega32, прочитайте еще раз, как работает таймер TIM1 в AVR. Еще раз, внимательно. Вы должны использовать, к примеру, вариант режима работы этого таймера по сравнению с его значением его регистра TIM1A.
Но для начала, разберитесь с терминами, это очень важно:
- что такое "прерывание"
- что такое "вектор прерывания"
- что такое "регистр"
- что такое "таймер"

Сложилось впечатление, что вы пытаетесь поверхностно "проскочить" задачу. Так не получится.
0
Alexandrit84
2 / 2 / 0
Регистрация: 28.08.2016
Сообщений: 220
05.12.2016, 00:15 10
http://www.doneathome.ru/archives/573
http://www.doneathome.ru/archives/456
http://www.doneathome.ru/archives/364
И почитай другие темы. Правда написано всё в AtmelStudio. Исходники рабочие 100%. На основе некоторых, делал небольшие проекты для работы.
0
Voland_
1670 / 1015 / 97
Регистрация: 04.01.2010
Сообщений: 3,395
05.12.2016, 01:35 11
Цитата Сообщение от Alexandrit84 Посмотреть сообщение
почитай другие темы
...двойственное чувство лично у меня возникло от этих статей. С одной стороны, автор заморочился, и провел работу над переводом ДШ основных узлов МК АВР на русский язык. С другой - наделал своих ошибок в описании, что очень удручило.

Мое мнение - на таком лучше не учиться, если хотите научиться писать программы. Я даже не знаю - стоит ли здесь держать ссылки здесь, на эти статьи...
0
05.12.2016, 01:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2016, 01:35

Подскажите как выполнить,не могу понять, составите код и блок схему. спасибо
Подскажите как выполнить,не могу понять, составите код и блок схему....

Решение задач в Delphi/ Не могу понять, как исправить эту ошибку(Задание. Точно два числа положительные с asm)
procedure TForm1.Button1Click(Sender: TObject); var a,b,c,d,s, mass,n :integer...

не могу понять задание
преподаватель задал задание: проверить методику поиска распределения приращений...


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

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

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