Форум

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

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

В сети

Пользователей: 106
Из них просматривают:
Аналоги: 42. Видео: 1. Даташиты: 26. Инструкции: 1. Новости: 13. Остальное: 6. Программы: 2. Производители: 2. Форум: 13.
Участников: 2
Гостей: 104

Google , Яндекс , далее...
Рекорд 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
Не в сети
к сожалению срочно кинули на другую работу
продолжу изыскания завтра. О результатах отпишу.



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


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

Разное

Интересно

Хранение мелких крепежных деталей. Для любого радиолюбителя когда-то возникает необходимость иметь какое-то количество - болтиков, винтиков, шайб. Это набора вполне достаточно для любого крепежа. А вот хранить это все - в одном месте - можно в баночках из-под растворимого кофе. В баночках - на 50 гр или 25 чашек. В каждую такую баночку вмещается 3 коробочки из-под монпасье (леденцов). В каждой коробочке из-под леденцов можно хранить достаточное колическо деталей мелкого крепежа. На банке сделать надпись - допустим, М3. Винты, шайбы, гайки.