Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 22 сен 2019, 18:04

Часовой пояс: UTC + 3 часа [ Летнее время ]



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Atmega16 и язык СИ
СообщениеДобавлено: 04 мар 2013, 15:39 
Не в сети

Зарегистрирован: 30 окт 2012, 09:58
Сообщения: 17
Atmega16 и язык СИ
Здравствуйте, хотелось бы создать тему на этом форуме, в помощь людям (в том числе и мне ;) ) нуждающихся в "пенке" в правильном направлении...
Микроконтроллер: ATmega16
Частота кварца: 16 мГц
Язык: СИ
Цель: Помощь в решении элементарных (позже может и сложных) задач.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Atmega16 и язык СИ
СообщениеДобавлено: 04 мар 2013, 15:58 
Не в сети

Зарегистрирован: 30 окт 2012, 09:58
Сообщения: 17
Первой задачей у меня будет: освоить таймеры... Вот есть скрин из книги: Микроконтроллеры AVR семейства Mega А.В.Евстифеев 2007
Для начала было бы интересно создание примитивной мигалки, и тут я встал в ступор, и не могу двигаться далее.
Дело в том, что частота 16 мГц и делать её проблематично, то есть максимально это 1024, в следствии вопрос можно ли поделить больше не понижая частоты процессора?
 Код
#include <mega16.h>
#include <delay.h>
// прерывание от тамера 0 пререполнение
interrupt [TIM0_OVF] void timer (void)
{

PORTB.1=!PORTB.1; // инвертируем сигнал на ножке 1
if(OCR0=127){
PORTB.2=1;
};

TCNT0=0x80; /* значение в регистр счетны регистр таймера
прерывание вызовется когда он отсчитает 0x80(128) тиков 0x80+0x80=0х100(переполнение)*/
}



void main(void)
{

PORTB=0x00; // порт B (7-2) на вход на всех подтягивоющий резистор отключен (высокоимпендантное состояние)
DDRB=0x03; // порт B (1 0) на выход на выходах 0(рекомендуется не использумые выводы конфигурировать на вход чтобы случайно не сжечь)



//------------------------------------------------------------------------------------
// инициализация таймера0
TCCR0=0b101;


/* режим Normal(бит 6,3 =0) наиболее простой режим счетный регистр(TCNT0) работает как
суммируищий регистр по каждому импульсу присходит инкремент TCNT0
при переходе 0xFF->0x00 флаг прерывание по переполнению устанавливается в 1
биты 0-2 управление тактовым сигналом
000 таймер остановлен
001 частота кварца делится на 1
010 частота кварца делится на 8
011 частота кварца делится на 64
100 частота кварца делится на 256
101 частота кварца делится на 1024
110 Вывод T0 счет осуществляется по спадаешему фронту
111 Вывод T0 счет осуществляется по нарастаешему */
TCNT0=0x80; /* значение в регистр счетный регистр таймера
прерывание вызовется когда он отсчитает 0x80(128) тиков 0x80+0x80=0х100(переполнение)*/

/* настройка прерываний от таймера(TIMSK)
прерывание от переполнения таймера0 (бит0=1)
прерывание от переполнения таймера1 (бит2=1)
*/
TIMSK=0x05;


// РАЗРЕШИТЬ ПРЕРЫВАНИЯ (без этой команды ни ОДНО прерывание работать не будет)
#asm("sei")
}

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


Вложения:
Регистры 8бит-х таймеров.JPG
Регистры 8бит-х таймеров.JPG [ 112.49 КБ | Просмотров: 3169 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Atmega16 и язык СИ
СообщениеДобавлено: 07 мар 2013, 18:43 
Не в сети
Аватара пользователя

Зарегистрирован: 09 сен 2011, 06:43
Сообщения: 308
Я конечно в С не оч селен но вот наткнулся на ссылку хоть там и на асме но расписано подробно про все таймеры прерывания да делители..


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

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