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

Таймеры AVR

14.02.2010, 08:46. Просмотров 26911. Ответов 32
Метки нет (Все метки)

Здравствуйте, подскажите, пожалуйста, как работать с таймерами ATmega16.
Я использую CVAVR, учусь писать на Си.

На примере такой задачи:
При приходе на ножку положительного импульса, таймер запускается( считает время в микро секундах(если это возможно)).
При повторном приходе импульса, таймер останавливается, и выдаёт, то что насчитал, в какую-л переменную.

з.ы. Понятных обьяснений на эту тему, для языка Си, почему-то не нашёл.

з.з.ы Мой опыт работы с AVR (да и вообще с мк) меньше недели.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2010, 08:46
Ответы с готовыми решениями:

AVR AVRISP STK500 V3.0 USB ISP Programmer for AVR IC
Люди помогите плз. не могу разобраться. приобрел этот чудный девайс (AVR AVRISP STK500 V3.0 USB...

AVR Atmega324PU не прошивается AVR ISP Mk2
Добрый день. На плату впаян данный микроконтроллер в корпусе tqfp. При подключении программатора...

Анализ стека AVR / AVR stack analysis
Привет! Уперся я в стек, и решил понять что почем. Нашел вот такой вот скриптик:...

AVR Studio 6 и AVR Toolchain вопросы!
Всем доброго времени суток. Решил я написать софтинку в новой студии от Атмела AVR Studyo 6. Все...

Как подружить AVR+AVR?
Приветствую Вас уважаемые форумчане! Требуется связать 2 AVR-ки, по классической схеме Master ->...

32
hixFF
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 641
14.02.2010, 11:18 2
Лучше с асма начинай, потом проще будет.

Задачку можно сделать так- включаем какое- нибудь внешнее прерывание на on rising edge, тоесть по положительному фронту импульса, а в обработчике прерывания смотрим- если таймер не запущен- стартуем, если запущен- останавливаем и читаем результат.

Таймер юзай лучше 1-й (он 16- битный, больше насчитает). На 8 мегагерцах будет 1 тик в 125 наносекунд, тоесть 8 тиков в 1 микросекунду (это без прескалера).
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
14.02.2010, 11:38 3
И всётаки, как это можно сделать в Си?
Просто уже немного освоился в CVAVR
0
hixFF
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 641
14.02.2010, 14:47 4
Принцип тот же.

Умение программировать- умение грамотно составить алгоритм, предусмотрев обработку ошибок и нестандартных ситуаций. Язык- лишь инструмент.
0
14.02.2010, 14:47
oohz
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 204
14.02.2010, 19:20 5
Цитата Сообщение от hixFF
....Умение программировать- умение грамотно составить алгоритм...
во! правильно! поэтому и пишу в Algorithm Builder, сразу двух зайцев ем...
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
14.02.2010, 22:07 6
Ну алгоритм то я представил, проблема в другом:
как это реализовать(какие настройки должны быть, какие команды и т.д.)?
0
DiVOuR
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 111
15.02.2010, 02:26 7
а пдф-ку на контроллер религия не позволяет открыть? там все предельно доступно расписано\нарисовано.
И по настройкам, и по командам.
0
Omototyy
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 55
15.02.2010, 19:06 8
Цитата Сообщение от DiVOuR
а пдф-ку на контроллер религия не позволяет открыть? там все предельно доступно расписано\нарисовано.
И по настройкам, и по командам.
А где эта загадочная пдф-ка?.Я скачал парочку даташитов на АТмега8, но там в основном только какие бывают корпуса.
0
Vid_kh
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 297
15.02.2010, 19:24 9
Цитата Сообщение от Omototyy
А где эта загадочная пдф-ка?.Я скачал парочку даташитов на АТмега8, но там в основном только какие бывают корпуса.
Скачай полный файл отсюда http://www.atmel.com/dyn/resources/prod_documents/doc8159.pdf. Поиском находится в два-три клика.
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
15.02.2010, 20:32 10
Найди и скачай в ините книгу Евстифеева "микроконтроллеры AVR семейства MEGA"
ссылок полно.
Там как бы те же datasheet только на русском.
Есть некоторые неточности, но не критические.
Конечно лучше бумажный вариант, но это дело наживное!!!
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
15.02.2010, 20:36 11
Вдогонку, а лучше попробуй Си WINAVR Или как его еще называют GCC. Он дружит с AVR Studyo, да и примеров, думаю, тебе больше накидают под него.
Я сам начинал с CVAVR, потом перешел на WINAVR, а сейчас осваиваю ассемблер.
Удачи!!!
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
15.02.2010, 22:27 12
Цитата Сообщение от Vtod777
Найди и скачай в ините книгу Евстифеева "микроконтроллеры AVR семейства MEGA"
Ну эту книгу я смотрел, но она про работу на ассемблере, а я как-то больше понимаю си.
Да и то,что это
Цитата Сообщение от Vtod777
как бы те же datasheet только на русском
не совсем есть хорошо:
мне, как начинающему, намного понятней то, как рассказывает уважаемый DY HOTT, или же как на 123avr.com
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
15.02.2010, 22:36 13
Ну не совсем так. Это просто справочник значений битов, байтов регистров и т.п. Т.е. их имен и возможных значений, которые есть в файлах *.yms. Они тебе все равно понадобятся. Конечно Ди-Хальт - уникум! И ему хватает способностей доходчиво излагать сложные вещи и терпеливо отвечать на вопросы новичков.
123avr.com лично мне - не понравился.
В общем - тебе решать! Главное желание разобраться!
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
17.02.2010, 00:40 14
Вот может конечно я и не прав, но по моему человек сюда пришел за "курсовой" с конкретной задачей....
А мы тут распинаемся.......
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
17.02.2010, 16:11 15
Ну я это спросил не для "курсовой", а ради интереса, для себя так сказать.
Просто я выбрал си, потому что он мне понятнне.
А одной PDFки мне недостаточно, чтобы понять. Вот и решил спросить как это делается.
0
Vtod777
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 107
17.02.2010, 16:53 16
Ну звиняй!!! -)))
0
THI BIOST
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
17.02.2010, 17:00 17
Делается это легко:

Регистр выбранного таймера = (1 << бит управления) | (1 << другой бит управления) | (ещё биты если нужно)

От ассемблера это отличается буквально одной строкой:

ldi temp, то что справа от знака =
out регистр, temp

и так, пока не настроите нужный таймер. А что и куда писать - как раз в пдфке и написано. Таймеры в АВР - самая развесистая периферия. Вы же просите написать готовую программу.

А если ради интереса - должен быть интерес разобраться, а то по каждому режиму таймера будете про готовую программу спрашивать.

ЗЫ. Подробно расписывать таймеры и их возможность - по сути переводить даташит.
ЗЗЫ. А по поводу Вашей задачи - я бы использовал ICP без остановки таймера, вычисляя разницу между прошлым и текущим значением, а чтоб в микросекундах - соответствующий предделитель (pressotir) в зависимости от тактовой частоты.
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
21.02.2010, 10:37 18
Вроде как немного разобрался с работой таймеров(по переполнению, шим, с часовым кварцем поработал)
Но никак не даётся режим "Захват" : всё пробовал, и меиндр с мультиметра тестовый подавать на ножку ICP1, и кнопкой щёлкать, и просто к + и к - подтягивать ; словом всё, что только можно.
Но всегда разультат один- на терминал приходят только нули; я так понимаю, что должны были получаться случайные числа, а приходят нули( или у меня такое чувство ритма, что я нажимаю в тот момент, когда счётчик на нуле? :) ).
Вот текст программы:
#include <mega16.h>
#include <delay.h>
// Stomdard Input/Output functions
#include <stdyo.h>
char a;
// Timer 1 input capture interrupt service routine
interrupt [TYM1_CAPT] void timer1_capt_isr(void)
{
// Plosi your code here
a=(256*ICR1H)+ICR1L;
UDR=(a);
delay_ms(500);
}
з.ы Использую CVAVR.
з.з.ы. Точность не важна, важно, стобы просто работало.
з.з.з.ы Юзаю PinBoard, если это может помочь.
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
21.02.2010, 10:40 19
И ещё: данные посылаются в терминал каждые 0,5 сек, а ведь должны только при захвате?
0
Osshi
0 / 0 / 0
Регистрация: 10.02.2010
Сообщений: 27
24.02.2010, 13:03 20
Самое интересное, что если бы я сказал что это мне надо для курсача, сразу бы сказали как это делается.
0
24.02.2010, 13:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2010, 13:03

AVR Studio 6 Avr simulator
Подскажите каким образом стартануть прогу в avr symulator с адреса boottooder (atmega8a, 0x0F80)....

CAVR против AVR Studio, что не так в программе под AVR Studio
Проблема такая, есть исходник, если его компилировать в CAVR заливаю в МК все работает, если этот...

msp430g2553 таймеры
Здравствуйте! Подскажите, пожалуйста, почему в прерывании TIMER0_A1_VECTOR не срабатывает вторая...


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

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

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