Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 244
Из них просматривают:
Аналоги: 99. Даташиты: 88. Инструкции: 4. Новости: 9. Остальное: 6. Программы: 1. Производители: 1. Профиль пользователя: 9. Форум: 27.
Участников: 3
Гостей: 241

Google , Inventor , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
Помогите новичку разобраться с таймером.
Студент
Зарегистрирован:
19.10.2010 14:49
Сообщений: 4
Не в сети
Помогите новичку пожалуйта разобраться с работой таймера. Пытаюсь на 128 atmege выдавать на ножку каждый тик таймера но не получается. Кварц на 16 мегагерц в коде предделитель таймера не использую
в итоге на ножке должен быть шим равный 63 наносекундам, а в итоге максимум чего я добился это 3,2 микросекунды. По расчетам и примерам которые я нашел в описания вроде все правильно делаю. Странное получается то что шим полученный у меня кратен тактированию в 32 килогерца. Хотя часовой кварц у меня отсутствует. Я эти ножки вообще не задействовал.
Заранее огромное спасибо за помощь.

P.S.
(сильно не пинайте, каждый когда то начинает).



Re: Помогите новичку разобраться с таймером.
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
а настройки FUSE -битов и исходный код должна изучать бригада телепатов?



Re: Помогите новичку разобраться с таймером.
Студент
Зарегистрирован:
19.10.2010 14:49
Сообщений: 4
Не в сети
Использую avreal под линуксом
./avreal32 +mega128 -aa -o0 -p/dev/parport0 -e -w -v -fCKSEL=f,CKOPT=0,WDTON=0,BODEN=0,BLEV=0,BRST=1,BSIZ=0,EESV=1,SUT=2,BLB0=1,BLB1=2 avrTest.hex

непосредственно сам текст:

/*
* main.c
*
* Created on: 20.10.2010
* Author: root
*/

#include <avr/eeprom.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <limits.h>

int tyuio;

ISR(TIMER0_OVF_vect)
{
TCNT0 = 213;
if(!tyuio){
PORTC = 0x01;
tyuio = 1;
}
else{
PORTC = 0x00;
tyuio = 0;
}
}

int main()
{
cli();
TCNT0 = 213;
TCCR0 = 0x01;
TIMSK |= (1<<TOIE0);
MCUCR = 0x00;
DDRC = 0xFF;
sei();
for(;{
asm("wdr";
}
return 0;
}



Re: Помогите новичку разобраться с таймером.
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
Ну маладец! у тебя между входами в прерывание 43 процессорных цикла, он явно не успевает обработать. для таких частот этот режим таймера не используют. Используй CTC с подключенной ногой OCR



Re: Помогите новичку разобраться с таймером.
Студент
Зарегистрирован:
19.10.2010 14:49
Сообщений: 4
Не в сети
Если можно то по подробнее.
Ничего не понял.



Re: Помогите новичку разобраться с таймером.
Абитуриент
Зарегистрирован:
20.10.2010 16:23
Из: Тирасполь
Сообщений: 2
Не в сети
Попробуй инициализировать Timer0 так:
TCCR0=0x29;
TCNT0=0x7F;
OCR0=0x00;
А порт PORTB:
PORTB=0x00;
DDRB=0x10;
Как сказал evildesign он у тебя будет в CTC режиме с подключенной ногой OCR, но ШИМ будет на PORTB.4, Такой частоты в твоей реализации тебе не добиться



Re: Помогите новичку разобраться с таймером.
Абитуриент
Зарегистрирован:
20.10.2010 16:23
Из: Тирасполь
Сообщений: 2
Не в сети
Вернее так:
TCNT0=0x00;
OCR0=0x7F;
Получишь ШИМ со скважностью 50%



Re: Помогите новичку разобраться с таймером.
Студент
Зарегистрирован:
19.10.2010 14:49
Сообщений: 4
Не в сети
к сожалению срочно кинули на другую работу
продолжу изыскания завтра. О результатах отпишу.



Поиск по форуму


Расширенный поиск

Разное

Интересно

При пайке деталей над горловиной кинескопа накройте ее куском материи.
Этим Вы убережёте кинескоп от случайно падающего расплавленного припоя и, следовательно, от трещин в его стекле.