Таймеры/счётчики в AVR
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Таймеры/счётчики в AVR
Никогда не понимал такого подхода, захотелось запрограммировать, быстро хватаем, быстро ляпаем свой код или воруем с инета чужой. Бац, ни хрена не работает. ААААА!!!! Памагыте! Ниче не работает!!!! Ну конечно же, все люди братья, добренькие дяди на форумах на пальцах разжуют, что да как. А вот хрена лысого на лопате!
Берешь нормальную книгу по МК и начинаешь читать. А потом пошагово что-то начинаешь пробовать. Как же! Это не наш метод. Нам сейчас все и сразу! Вот вы все начинающие и получаете граблями по лобешнику.
Планировать нужно свои действия! МК с наскоку не освоить. Покупаешь книги, изучаешь архитектуру. И только потом пошагово начинать пробовать. Не получилось? Лезем в книгу. Опять пробуем.
Берешь нормальную книгу по МК и начинаешь читать. А потом пошагово что-то начинаешь пробовать. Как же! Это не наш метод. Нам сейчас все и сразу! Вот вы все начинающие и получаете граблями по лобешнику.
Планировать нужно свои действия! МК с наскоку не освоить. Покупаешь книги, изучаешь архитектуру. И только потом пошагово начинать пробовать. Не получилось? Лезем в книгу. Опять пробуем.
- Реклама
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Таймеры/счётчики в AVR
[uquote="Demiurg",url="/forum/viewtopic.php?p=3331670#p3331670"]Никогда не понимал такого подхода, захотелось запрограммировать, быстро хватаем, быстро ляпаем свой код или воруем с инета чужой. Бац, ни хрена не работает. ААААА!!!! Памагыте! Ниче не работает!!!! Ну конечно же, все люди братья, добренькие дяди на форумах на пальцах разжуют, что да как. А вот хрена лысого на лопате!
Берешь нормальную книгу по МК и начинаешь читать. А потом пошагово что-то начинаешь пробовать. Как же! Это не наш метод. Нам сейчас все и сразу! Вот вы все начинающие и получаете граблями по лобешнику.
Планировать нужно свои действия! МК с наскоку не освоить. Покупаешь книги, изучаешь архитектуру. И только потом пошагово начинать пробовать. Не получилось? Лезем в книгу. Опять пробуем.[/uquote]
Вы решили все темы засрать подобным текстом?Люди поматерее Вас себя ведут сдержанно и мудро. А метод, как изучать, каждый решает сам. Что ж Вы тогда тут делаете я не пойму? Начинающие Вас раздражают своими вопросами... а ну да за советом пришли,ну так у Вас прекрасный подход к изучению.... Не получается берите книгу перечитывайте!!!
Берешь нормальную книгу по МК и начинаешь читать. А потом пошагово что-то начинаешь пробовать. Как же! Это не наш метод. Нам сейчас все и сразу! Вот вы все начинающие и получаете граблями по лобешнику.
Планировать нужно свои действия! МК с наскоку не освоить. Покупаешь книги, изучаешь архитектуру. И только потом пошагово начинать пробовать. Не получилось? Лезем в книгу. Опять пробуем.[/uquote]
Вы решили все темы засрать подобным текстом?Люди поматерее Вас себя ведут сдержанно и мудро. А метод, как изучать, каждый решает сам. Что ж Вы тогда тут делаете я не пойму? Начинающие Вас раздражают своими вопросами... а ну да за советом пришли,ну так у Вас прекрасный подход к изучению.... Не получается берите книгу перечитывайте!!!
-
Demiurg
- Это не хвост, это антенна
- Сообщения: 1480
- Зарегистрирован: Ср июн 25, 2008 15:19:44
- Контактная информация:
Re: Таймеры/счётчики в AVR
Вы только что сами своими словами доказали, что советовать вам что либо бесполезно. По простой причине. Вы не слушаете. Начинаете обижаться, огрызаться.
Давайте посмотрим на ситуацию со стороны, как наблюдатели. И мысленно проводим следующий эксперимент. Вы не читаете книги как вам советуют. А снова и снова приходите на форум. Тратите свое время. То что мы тратим свое время, я даже упоминать не буду. Вам плевать на это с высокой колокольни. И не спорьте даже. Вы уже это доказали своими действиями и словами.
То есть вы размышляете не то что на несколько шагов вперед, а на четверть шага в лучшем случае. Отдаетесь своим инстинктам. Все и сразу, никакого управления своими сиюминутными хотелками.
Другой подход. Взять хорошую толковую книжку. И просто ее прочитать. Постепенно. Пусть вы не все и не сразу поймете. Но вы увидите какие-то термины, упоминания, что-то отложится в памяти. Естественно, придется перечитать не раз. Дошли до практики. И так как вы не бегаете на форумы, не получаете какую-то обрывочную, расплывчатую информацию, а пользуетесь готовой переработанной из книги и конкретной, то есть той, что нужна на данный момент. В этом случае вы не бегаете на форумы, не тратите свое и наше время, а вспоминаете прочитанное. Притом сразу. Эту информацию не нужно ждать часами и днями с форумов. А в определенный момент накапливается критическая масса и приходит понимание. Вот про что я говорю. Этот принцип вы должны запомнить. Собирать качественную информацию, а не обрывочную и зачастую ложную, ведущую в никуда.
На форумы обращаться только в том случае, если вы честно перепробовали все что только можно и зашли в тупик.
Давайте посмотрим на ситуацию со стороны, как наблюдатели. И мысленно проводим следующий эксперимент. Вы не читаете книги как вам советуют. А снова и снова приходите на форум. Тратите свое время. То что мы тратим свое время, я даже упоминать не буду. Вам плевать на это с высокой колокольни. И не спорьте даже. Вы уже это доказали своими действиями и словами.
То есть вы размышляете не то что на несколько шагов вперед, а на четверть шага в лучшем случае. Отдаетесь своим инстинктам. Все и сразу, никакого управления своими сиюминутными хотелками.
Другой подход. Взять хорошую толковую книжку. И просто ее прочитать. Постепенно. Пусть вы не все и не сразу поймете. Но вы увидите какие-то термины, упоминания, что-то отложится в памяти. Естественно, придется перечитать не раз. Дошли до практики. И так как вы не бегаете на форумы, не получаете какую-то обрывочную, расплывчатую информацию, а пользуетесь готовой переработанной из книги и конкретной, то есть той, что нужна на данный момент. В этом случае вы не бегаете на форумы, не тратите свое и наше время, а вспоминаете прочитанное. Притом сразу. Эту информацию не нужно ждать часами и днями с форумов. А в определенный момент накапливается критическая масса и приходит понимание. Вот про что я говорю. Этот принцип вы должны запомнить. Собирать качественную информацию, а не обрывочную и зачастую ложную, ведущую в никуда.
На форумы обращаться только в том случае, если вы честно перепробовали все что только можно и зашли в тупик.
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Таймеры/счётчики в AVR
[uquote="Demiurg",url="/forum/viewtopic.php?p=3331743#p3331743"]Вы только что сами своими словами доказали, что советовать вам что либо бесполезно. По простой причине. Вы не слушаете. Начинаете обижаться, огрызаться.
Давайте посмотрим на ситуацию со стороны, как наблюдатели. И мысленно проводим следующий эксперимент. Вы не читаете книги как вам советуют. А снова и снова приходите на форум. Тратите свое время. То что мы тратим свое время, я даже упоминать не буду. Вам плевать на это с высокой колокольни. И не спорьте даже. Вы уже это доказали своими действиями и словами.
То есть вы размышляете не то что на несколько шагов вперед, а на четверть шага в лучшем случае. Отдаетесь своим инстинктам. Все и сразу, никакого управления своими сиюминутными хотелками.
Другой подход. Взять хорошую толковую книжку. И просто ее прочитать. Постепенно. Пусть вы не все и не сразу поймете. Но вы увидите какие-то термины, упоминания, что-то отложится в памяти. Естественно, придется перечитать не раз. Дошли до практики. И так как вы не бегаете на форумы, не получаете какую-то обрывочную, расплывчатую информацию, а пользуетесь готовой переработанной из книги и конкретной, то есть той, что нужна на данный момент. В этом случае вы не бегаете на форумы, не тратите свое и наше время, а вспоминаете прочитанное. Притом сразу. Эту информацию не нужно ждать часами и днями с форумов. А в определенный момент накапливается критическая масса и приходит понимание. Вот про что я говорю. Этот принцип вы должны запомнить. Собирать качественную информацию, а не обрывочную и зачастую ложную, ведущую в никуда.
На форумы обращаться только в том случае, если вы честно перепробовали все что только можно и зашли в тупик.[/uquote]
Ну спасибо за совет,что еще сказать!
Если не секрет,что конкретно Вас побудило поделиться столь ценным?
Давайте посмотрим на ситуацию со стороны, как наблюдатели. И мысленно проводим следующий эксперимент. Вы не читаете книги как вам советуют. А снова и снова приходите на форум. Тратите свое время. То что мы тратим свое время, я даже упоминать не буду. Вам плевать на это с высокой колокольни. И не спорьте даже. Вы уже это доказали своими действиями и словами.
То есть вы размышляете не то что на несколько шагов вперед, а на четверть шага в лучшем случае. Отдаетесь своим инстинктам. Все и сразу, никакого управления своими сиюминутными хотелками.
Другой подход. Взять хорошую толковую книжку. И просто ее прочитать. Постепенно. Пусть вы не все и не сразу поймете. Но вы увидите какие-то термины, упоминания, что-то отложится в памяти. Естественно, придется перечитать не раз. Дошли до практики. И так как вы не бегаете на форумы, не получаете какую-то обрывочную, расплывчатую информацию, а пользуетесь готовой переработанной из книги и конкретной, то есть той, что нужна на данный момент. В этом случае вы не бегаете на форумы, не тратите свое и наше время, а вспоминаете прочитанное. Притом сразу. Эту информацию не нужно ждать часами и днями с форумов. А в определенный момент накапливается критическая масса и приходит понимание. Вот про что я говорю. Этот принцип вы должны запомнить. Собирать качественную информацию, а не обрывочную и зачастую ложную, ведущую в никуда.
На форумы обращаться только в том случае, если вы честно перепробовали все что только можно и зашли в тупик.[/uquote]
Ну спасибо за совет,что еще сказать!
Если не секрет,что конкретно Вас побудило поделиться столь ценным?
- Ivanoff-iv
- Друг Кота
- Сообщения: 7077
- Зарегистрирован: Пт ноя 11, 2016 05:48:09
- Откуда: Сердце Пармы
Re: Таймеры/счётчики в AVR
ROMan2947, да, дефайн OC1A- я проглядел...
) транзистору в базу резистор нужен обязательно, иначе он ногу МК перегружать будет и сам эмиттерный переход будет перегружен (есть случаи, когда резистор не нужен, но твой не из них).
) диод ставится параллельно индуктивной нагрузке (встречно питанию - чтобы при работе нагрузки он был закрыт) и замыкает через себя выброс её индукции при закрытии ключа (ток через индуктивность резко прекратиться не может, вот он и крутится через открывшийся диод, пока не погаснет)
) транзистору в базу резистор нужен обязательно, иначе он ногу МК перегружать будет и сам эмиттерный переход будет перегружен (есть случаи, когда резистор не нужен, но твой не из них).
) диод ставится параллельно индуктивной нагрузке (встречно питанию - чтобы при работе нагрузки он был закрыт) и замыкает через себя выброс её индукции при закрытии ключа (ток через индуктивность резко прекратиться не может, вот он и крутится через открывшийся диод, пока не погаснет)
Для тех, кто не учил магию мир полон физики 
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
- Реклама
- ROMan2947
- Грызет канифоль
- Сообщения: 287
- Зарегистрирован: Сб янв 23, 2016 00:59:59
- Откуда: Чебоксары
Re: Таймеры/счётчики в AVR
Да, нашел схему в сети, припаял, все стало стабильно работать. Благодарю!) диод ставится параллельно индуктивной нагрузке
-
watchmaker
- Поставщик валерьянки для Кота
- Сообщения: 2183
- Зарегистрирован: Вс ноя 15, 2009 23:13:59
- Откуда: Харьков
- Контактная информация:
Re: Таймеры/счётчики в AVR
Кстати, делал подобное в наручных часах, чтобы механические удары по пищалке не приводили к глюкам или сбросам чипа.диод ставится параллельно индуктивной нагрузке (встречно питанию - чтобы при работе нагрузки он был закрыт) и замыкает через себя выброс её индукции при закрытии ключа (ток через индуктивность резко прекратиться не может, вот он и крутится через открывшийся диод, пока не погаснет)
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
- rxstart1
- Вымогатель припоя
- Сообщения: 508
- Зарегистрирован: Пт фев 22, 2013 18:00:43
- Откуда: Беларусь, г. Гомель
Re: Таймеры/счётчики в AVR
Помогите плз. Хочу сделать генератор сигнала с частотой 1МГц. Он мне нужен, чтобы поправить биты в мк. Я понимаю. что можно сделать на К155ЛА3. Но по моему проще запрограммировать ATMEGA8, чтобы он генерил частоту на одной ноге, пайки меньше. Но как я не пытался настраивать таймеры я не мог достигнуть этой частоты, даже если при 8Мгк внутреннего генератора зажигал и тушил пин, все ровно частота меньше 1МГц.
Помогите советом плз. Пишу на AVRC
Помогите советом плз. Пишу на AVRC
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Таймеры/счётчики в AVR
А как ты пытался настраивать таймеры? На какой частоте у тебя МК работает?
Никакая контра не уйдёт от нас
Re: Таймеры/счётчики в AVR
OCR2=Fcpu/1000000/2-1
TCCR2=1<<COM20|1<<WGM21|1<<CS20
На лапе PB3/OC2 должен появиться 1МГц
TCCR2=1<<COM20|1<<WGM21|1<<CS20
На лапе PB3/OC2 должен появиться 1МГц
Re: Таймеры/счётчики в AVR
Разумеется нужно перевести лапу на вывод.
- bezzabotna
- Встал на лапы
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Re: Таймеры/счётчики в AVR
Настраиваю таймер для обработки кнопки на Atmega32. Вроде делаю все по инструкции, но контроллер на кнопки не реагирует. Не могу понять, что не так.
Вот код:
схема ниже.
По факту нажатия кнопки должна установиться в 1 одна из переменных Key_up,Key_down и тд
Вот код:
Код: Выделить всё
int main(void)
{
port_ini(); //инициализация портов
timer1_ini(); //инициализация таймера
lcd_display_init(); //инициализация дисплея
while (1)
{
Main_Menu(); //вызов меню
}
}
//----------------------------------------------------------------------------------------------------//
void BUTTON_Handler(int *Key_pntr, int pin_state) //обработка нажатия любой кнопки
{
int Button_count=0,Button_state=0,key_delay=0,Flag=0; //служебные переменные
if (!(PIND & pin_state)) //если кнопка физически нажата (логический 0 на n ножке порта D)
{
if(Button_count<20) Button_count++; //подавление дребезга при нажатии (кнопка физически нажата 20 тактов)
else
{
Button_state=1; //регистрируем нажатие кнопки
key_delay++; //как долго кнопка нажата
}
}
else //если кнопка физически отжата
{
if (Button_count>0)Button_count--; //подавление дребезга при отжатии
else
{
Button_state=0; //регистрируем отжатие кнопки
if (key_delay<20000) Flag=1; //регистрируем короткое нажатие
else Flag=2; //регистрируем длительное нажатие
}
}
if ((Button_state==0)&&(Flag==1)) //если кнопка была "кратко" нажата
{
*Key_pntr=1;
Flag=0;
}
if ((Button_state==0)&&(Flag==2)) //если кнопка была "долго" нажата
{
*Key_pntr=1;
Flag=0;
}
else *Key_pntr=0; //кнопку вообще не нажимали
}
//----------------------------------------------------------------------------------------------------//
ISR (TIMER1_OVF_vect) //обработчик прерывания по переполнению таймера 1
{
BUTTON_Handler(&Key_up, BUTTON_UP); //опрос кнопки UP
BUTTON_Handler(&Key_down, BUTTON_DOWN); //опрос кнопки DOWN
BUTTON_Handler(&Key_start, BUTTON_START); //опрос кнопки START
BUTTON_Handler(&Key_return, BUTTON_STOP); //опрос кнопки STOP
}
//----------------------------------------------------------------------------------------------------//
void timer1_ini(void) //инициализация таймера 1
{ //
TCCR1B |= (1<<CS10) | (1<<CS12); //предделитель 1024
TCCR1B &=~ (1<<WGM11);
TIMSK |= (1<<TOIE1); //разрешение прерывания по переполнению счетчика
asm("sei"); //разрешение прерываний
}
//----------------------------------------------------------------------------------------------------//
void port_ini(void) //инициализация портов
{
DDRD=0; //порт D настроен на вход
PORTD=0xF0; //4,5,6,7 ножки порта D подтянуты к питанию
DDRC=0xFF; //порт С настроен на выход
DDRA=0xFF; //порт А настроен на выход
}
//----------------------------------------------------------------------------------------------------//По факту нажатия кнопки должна установиться в 1 одна из переменных Key_up,Key_down и тд
- Вложения
-
- фвпфвпф.png
- (98.25 КБ) 275 скачиваний
Я конечно все понимаю, но этого я не понимаю.
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Таймеры/счётчики в AVR
Посмотрите какое значение принимает TCCR1B после timer1_ini
У вас в коде нет начальной инициализации TCCR1B
У вас в коде нет начальной инициализации TCCR1B
Никакая контра не уйдёт от нас
- bezzabotna
- Встал на лапы
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Re: Таймеры/счётчики в AVR
Я конечно все понимаю, но этого я не понимаю.
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Таймеры/счётчики в AVR
Как часто (по вашим расчётам) у вас должно вызываться прерывание от таймера? 
При частоте МК 8 Мгц таймер будет считать на частоте 8 КГц до 0xFFFF - примерно 8 с лишним секунд получается.
При частоте МК 8 Мгц таймер будет считать на частоте 8 КГц до 0xFFFF - примерно 8 с лишним секунд получается.
Никакая контра не уйдёт от нас
- bezzabotna
- Встал на лапы
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
Re: Таймеры/счётчики в AVR
И правда. Добавила еще TCNT1
8000000/1024=7812 тактов в секунду
65535-65530=5 тактов до переполнения
5/7812=640 мкс
но не работает
Код: Выделить всё
void timer1_ini(void) //инициализация таймера 1
{ //
TCCR1B |= (1<<CS10) | (1<<CS12); //предделитель 1024
TCCR1B &=~ (1<<WGM11);
TIMSK |=(1<<TOIE1); //разрешение прерывания по переполнению счетчика
TCNT1=65530; //
asm("sei"); //разрешение прерываний
}65535-65530=5 тактов до переполнения
5/7812=640 мкс
но не работает
Я конечно все понимаю, но этого я не понимаю.
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Таймеры/счётчики в AVR
Вы сначала проверьте, что у вас вообще обработчик прерывания вызывается.
Никакая контра не уйдёт от нас
- bezzabotna
- Встал на лапы
- Сообщения: 134
- Зарегистрирован: Пн ноя 07, 2016 12:14:14
- prinv
- Вымогатель припоя
- Сообщения: 677
- Зарегистрирован: Чт янв 20, 2011 09:07:08
- Откуда: Пермь
- Контактная информация:
Re: Таймеры/счётчики в AVR
Чему равны BUTTON_UP, BUTTON_DOWN, BUTTON_START и BUTTON_STOP?
Никакая контра не уйдёт от нас


