реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Не могу запустить Timer0 в ATtiny261
Pyku_He_oTTyda
сообщение Dec 1 2008, 08:55
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Подскажите взглядом со стороны, в чем ошибка?
Утро убил, понять не могу.
Собственно хочу запустить таймер с переполнением 1мСек

Код
void init_mk(void)
{
ACSRA=0x80;        //запрет компаратора

DDRB =0b01000010; //PB1,PB3,PB6 - выхода
PORTB=0b10110000; //подтягивающие резисторы на входах PB4,PB5
DDRA =0b11111100; //PA2,PA3,PA4,PA5,PA6,PA7
PORTA=0b00000000;

wdt_enable(WDTO_2S);   //сторожевой таймер 2 сек

DIDR0=0x00;
DIDR1=0x00;
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); //разрешение АЦП 125кГц


PLLCSR=(1<<PLLE);        // Enable the PLL
_delay_us(100);
while ((PLLCSR & 1)==0); // Wait for the PLL to lock
PLLCSR|=0x04;//PLLCSR=(1<<PCKE);        // Enable the 64MHz clock

TCCR1A=(1<<COM1A1)|(1<<PWM1A);  //настройка режима таймера1
TCCR1B=(1<<CS11)|(1<<CS10);     //настройка делителя таймера1
OCR1A=0x01;                     //начальное значение таймера1


TCCR0B=(1<<CS01)|(1<<CS00);     //установка делителя 64 для Timer0
TCNT0H=0x00;
TCNT0L=0x83;                    //начальное значение период 1 mS


TIMSK=(1<<TOIE0);  //разрешение прерывания при переполнении Timer0


}


Заранее спасибо!


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
МП41
сообщение Dec 1 2008, 09:11
Сообщение #2


4 синих кубика
****

Группа: Участник
Сообщений: 526
Регистрация: 19-09-08
Из: полупроводника, металла и стекла
Пользователь №: 40 326



Возможно, проблема в порядке заполнения старших и младших байтов регистра? Это имеет значение, надо посмотреть в даташите, как правильно. У меня по такой причине таймер на совпадение работал неправильно и неадекватно.


--------------------
p-n-p-p-n-p-n-n-p-n-p структура однако очень эффективна
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 1 2008, 09:31
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



У вас нигде нет инициализации TCCR0A (определяет режимы работы) и вы не указали частоту на которой пытаетесь заставить работать ТС0. Если TCCR0A не инициализирован то непонятно в каком режиме он будет работать.

Посмотрел по документации на описание регистров вроде должно быть так:

Код
TCCR0A = 0x00; //тут WGM00 установит режим работы Normal а TCW0 восьмибитный режим
TCCR0B=(1<<CS01)|(1<<CS00);     //установка делителя 64 для Timer0
TCNT0H=0x00;
TCNT0L=0x83; //а можно попробовать так TCNT0=0x0083 пусть компилятор сам разбирается с порядком
TIMSK=(1<<TOIE0);  //разрешение прерывания при переполнении Timer0 доступа


Если вы использует ппрерывание по переполнению то не забывайте в нём заново инициализировать счётный регистр
Код
TCNT0H=0x00;
TCNT0L=0x83;


Я обычно для таких случаев использую прерывание по совпадению и режим сброс по совпадению CTC (бит WGM0=1 в TCCR0A). Удобно т.к. не нужно каждый раз реинициализировать счётный регистр.
Go to the top of the page
 
+Quote Post
GDI
сообщение Dec 1 2008, 09:35
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
Возможно, проблема в порядке заполнения старших и младших байтов регистра?

Вообще то компилятор с таким сам разбирается, хотя можно проверить на этот счем асм файл. Или вы про
Код
TCNT0H=0x00;
TCNT0L=0x83;


Pyku_He_oTTyda а вы опишите что у вас сейчас происходит, таймер вообще не считает или считает но с другим периодом?
В AVR Studio как код себя ведет?


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 1 2008, 09:52
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Таймер не считает вообще, ни в железе, ни в студии.
TCNT0L стоит как вкопанный со значением 0x83.
Студия 4.15, WinAVR 20060421

Цитата
Если вы использует ппрерывание по переполнению то не забывайте в нём заново инициализировать счётный регистр

не забыл, просто не привел этот кусочек


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 1 2008, 10:23
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Pyku_He_oTTyda @ Dec 1 2008, 13:52) *
Таймер не считает вообще, ни в железе, ни в студии.
TCNT0L стоит как вкопанный со значением 0x83.
Студия 4.15, WinAVR 20060421
не забыл, просто не привел этот кусочек


Тогда попробуйте поставить коэф. деления равный 1 (системная тактовая частота). И посмотрите будет-ли считать в студии. Проверьте настройку ПЛЛ.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 1 2008, 10:24
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Похоже глюки в студии, dW показало, что таймер считает. А в железе не работало, что кусочек кода по запаре закооментировал.
Спасибо за внимание!


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Dec 1 2008, 10:38
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Pyku_He_oTTyda @ Dec 1 2008, 14:24) *
Похоже глюки в студии, dW показало, что таймер считает. А в железе не работало, что кусочек кода по запаре закооментировал.
Спасибо за внимание!


Сделал простой проект в ИАРе с вашим МК. ТС0/ТС1 тоже не считают.
Странно то что ТС0 не считает. В нём используется только системная тактовая частота без ПЛЛ.
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 1 2008, 11:38
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Уважаемые!
Цитата из AVR Studio Simulator Help:
Цитата
Notes for Attiny261/461/861
Timer/Counter0 and Timer/Counter1 are not simulated

по-моему, это ответ на ваши проблемы...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 1 2008, 12:04
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Цитата
ARV

Да, конечно, полностью.
Спасибо!
А куда они эту строчку запихали?


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 1 2008, 12:12
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Pyku_He_oTTyda @ Dec 1 2008, 15:04) *
А куда они эту строчку запихали?
дык в help же и запихали smile.gif
В меню студии идем Help - Release Notes and known issues, далее внизу страницы Simulator user guides, ну а там снова внизу Known issues. Но это еще не все - снова внизу странички список поддерживаемых девайсов, и вот уже тут щелчок на нужном откроет списочек конкретных ограничений smile.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Dec 1 2008, 15:18
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Благодарю!


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01477 секунд с 7
ELECTRONIX ©2004-2016