NewSistems Опубликовано 3 сентября, 2018 Жалоба Поделиться Опубликовано 3 сентября, 2018 Здравия всем ! Пожалуйста помогите разобраться . Пытаюсь написать прошивку для Atmega8 на С в Atmel Studio 7.0 . Программка простая ( небольшая ) ... по сути - частотомер ( только для небольшого диапазона частот ... примерно - от нескольких Гц , до нескольких десятков кГц ) . Импульсы считать со входа T0 ( PD4 ) ...микр-ра Atmega8a ( 28 pin ) . Использовать TCNT1 (16 bit) . Полученное число выводить на Lcd - nokia5110 . Как я понимаю прерывания не нужны , алгоритм простой : 1) инициализация дисплея и счетчика 2) остановить (запретить счет) счетчик AVR - ( CS12,CS11,CS10-прописать нули ) 3) обнулить ( отчистить) буфер дисплея и счетчика ( AVR ) 3) запустить бесконечный цикл : а) разрешить считать импульсы с T0 ( PD4 ) - ( CS12,CS11,CS10-прописать единицы ) б) задать паузу ( надеюсь правильно рассчитал - 10 мсек ) в) запретить считать - ( CS12,CS11,CS10-прописать нули ) г) вывести полученное значение со счетчика на дисплей ( СИЛЬНО НЕ СМЕЙТЕСЬ ... Я НАЧИНАЮЩИЙ . с АЦП AVR разобрался удачно , собрал схемку в протеусе , написал прошивку , спаял ... все работает . а вот с таймером завис надолго . есть много примеров в инете , но все слишком навороченные для меня . запутался . ) вот примерно что получилось с таймером ... упрощал как мог ...в общим не получается . подскажите где косяк .(только просьба - без лишних наворотов и по возможности с комментариями ... задача - не повторить чужую программу ... а разобраться самому ) //Atmega8A #define F_CPU 8000000 #include #include #include #include "n5110.h" void presets(){ Lcd_init(); Lcd_clear(); TCCR1B =0x00; TCNT1=0000; TCCR0 |= (1 << CS01); } int main(void) { presets(); while (1) { TCNT1=0000; TCCR1B|=(1< _delay_ms(10); TCCR1B &=~(1< Lcd_prints(5,2,FONT_1X,(TCNT1)PSTR("Hz")); // КОМПИЛЯТОР РУГАЕТСЯ НА ЭТУ СТРОЧКУ Lcd_update(); } } Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.