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

 
 
> Частотомер на аt90s2313...Нужна помощь, Частотомер на аt90s2313...Нужна помощь
Genri
сообщение Aug 21 2005, 09:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 28-04-05
Пользователь №: 4 598



Я начинающий в МК поэтому просьба сразу ногами не пинать...
Решил сделать сам частотомер на t90s2313.
Как правильно реализовать таймер который будет выдавать импульс с Ти=1 сек и Ти=0,1 сек (по выбору) на 8 битном таймере-счетчике?
Я вижу только одно решение использовать несколько вложенных друг в друга циклов...
Подскажите пожалуйста есть ли другое более грамотное , и вносит ли такое решение дополнительную погрешность в длительность импульса помимо той которую имеет кварцевый генератор?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rubic
сообщение Jul 18 2009, 17:31
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 18-11-08
Пользователь №: 41 732



Понимаю что тема давно забыта,но поскажите в чём ошибка ,без прерывания т.е. при заполнени только регистровой пары TCNT1H и TCNT1L считает хорошо,а вот с прерываниями полный...
ATmega16

Код
SIGNAL(SIG_OVERFLOW1)
    {
     count_F++;

    }
int main(void)
{

                           TIMSK=1<<TOIE1;
           sei();
           uint8_t count_F=0;
            TCNT1=0;
            TCCR1A=0;
            TCCR1B=7;//разрешаем заполнение счётчика внешними импульсами
            
                            _delay_ms(1000)//задержка 1сек
                
        
             TCCR1B=0;//остановка счётчика
             TIMSK=0<<TOIE1;
             uint64_t temp=65535*count_F;//количество прерываний  
             uint16_t val=TCNT1;//считываем показания счётчика
             temp=temp+val;
              ltoa(temp,string,10);// преобразуем в десятичный вид
                             lcd<<string;
}
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 18 2009, 18:35
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



count_F, объявленная у вас в main - локальная. А в SIGNAL(SIG_OVERFLOW1) - увеличивается другая переменная, глобальная.
Уберите слово uint8_t в строке
uint8_t count_F=0;


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Genri   Частотомер на аt90s2313...Нужна помощь   Aug 21 2005, 09:55
- - moonrock   Можно проще. Сделайте цикл длиной в 1000000 тактов...   Aug 21 2005, 11:21
- - Reboot_s   Тоже делал частотомер на этом самом МК. Тут еще за...   Aug 21 2005, 12:04
|- - Genri   Цитата(Reboot_s @ Aug 21 2005, 15:04)Тоже дел...   Aug 21 2005, 12:27
|- - alexs   Цитата(Genri @ Aug 21 2005, 17:27)Цитата(Rebo...   Aug 21 2005, 12:34
|- - Genri   Цитата(alexs @ Aug 21 2005, 15:34)Цитата(Genr...   Aug 21 2005, 13:15
- - Proton   Посмотри по этому адресу http://www.enigma2004.nm....   Aug 21 2005, 13:59
|- - Genri   Цитата(Proton @ Aug 21 2005, 16:59)Посмотри п...   Aug 21 2005, 14:40
- - psL   Лучше повесьте подсчет импульсов на внешнее прерыв...   Aug 21 2005, 17:45
- - Juk1976   Вот я когда-то сделал себе по быстрячку простеньки...   Aug 21 2005, 21:42
|- - Genri   Цитата(Juk1976 @ Aug 22 2005, 00:42)Вот я ког...   Aug 22 2005, 13:36
- - psL   просто все зависит от измеряемого сигнала и конкре...   Aug 22 2005, 16:40
- - moonrock   to Jimmi Вообще говоря считать входную частоту ...   Aug 23 2005, 10:31


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

 


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


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