roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 06:36

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 20 фев 2008, 07:17 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
вот ведь человек, разжевал в рот положил. ни спасибо ни досвиданье.
может этого достаточно маршрутник для авто буду собирать как детали закуплю.
или на АВР с исходниками и теорией
маршрутник для авто
не знаю что делаю ни так, на меня гул почемуто не дуется :ROFL:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 21 фев 2008, 09:47 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Александр Карнаух, Вам дали исходник очень похожго проекта, дали ссылок для информации, чего же Вы еще ждете? Что за Вас тут все сделают и подадут готовое?

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 21 фев 2008, 12:19 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
-= Александр =- писал(а):
чего же Вы еще ждете?


скоро уж ЧЕТЫРЕ месяца !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 26 фев 2008, 19:14 
Не в сети
Аватара пользователя

Зарегистрирован: 31 окт 2007, 00:19
Сообщения: 18
Откуда: Украина, Донецк
а мне вот нужно не колличество импульсов подсчитать а длительность импульса .. кто может помочь советом? :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 26 фев 2008, 19:32 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
так количество получается делением единицы на длительность, разве не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 26 фев 2008, 22:12 
Не в сети
Аватара пользователя

Зарегистрирован: 31 окт 2007, 00:19
Сообщения: 18
Откуда: Украина, Донецк
rig писал(а):
так количество получается делением единицы на длительность, разве не так?

чето ниче не понял

я вот пытаюсь собрать платформу (машинку) на радиоуправлении с четырьмя моторами, кодер и декодер собрал
декодер выдает (проверено осциллографом) импульсы от 1 до 2мс в зависимости от положения рычажка джойстика ..
также собрал Н-мосты на полевиках, на мосте есть выход А (крутить в лево) и Б (вправо) ...
над приемником и передатчиком сейчас работаю ...

теперь вопросы:

1. для управления н-мостами нужен контроллер (на меге8 желательно) ... нужно чтобы этот контроллер считывал ДЛИТЕЛЬНОСТЬ ИМПУЛЬСА с декодера и реагировал след. образом

1мс - полный назад или вперед
.
. изменение скорости
.
1,5мс - стоп
.
. изминение скорости
.
2мс - полный назад или вперед

как регулировать ШИМ вроде понятно ... а вот как считывать длительность импульсов ... нет
вот ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 26 фев 2008, 22:58 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
период между импульсами так полагаю постоянный? меняется только скважность??

Добавлено спустя 41 минуту 39 секунд:
что то долго думаешь, счас спать пойду.
глобально задача решается просто.
если период постоянный а меняется длитеьлность полодительного или нулевого импульса. выбираем что будем мерить. к примеру длительность положительного импульса.
заводим выход передатчика на ножку с возможностью внешнего прерывания.
конфигурируешь
1 способ самы легкий но возможны ложные срабатывания
ее на прерывание при любом изменении состояния
в обработчике смотрим 1 или 0 на ноге,
если один запускаем какой нибудь таймер с заданной дискретностью, или пользуем тот что управляет шимом. пишем в ячейку флаг к примеру 55.
таймер шима рулит всегда, дополнительно проверяет флаг если видит код 55 то в переменной считает сколько раз сработал. если флаг не 55 то пропускает эту часть.
если ноль пишем флаг 00 - тоесть запрещаем считать шиму такты.
читаем сколько раз сработал шим таймер. опытным путем подбераются константы соответствующие длительности 1 мкс/2/3/4 и тд. надо учесть погрешность будут плюс минус отклонения от констант, зависит от частоты подсчета.
зная длительность вызываем нужную протцедуру. исполнив протцедуру очищаем пеерменную с количеством подсчитанных тактов.
длее все с начала.

2 способ будет почти тоже самое за исключением что прерывание ставим сначало напереход с 0 на 1. как сработает меняем условие сработки таймера на переход с 1 на ноль, выполняемесли один,
при сработки прерывания с 1 на 0 , меняем условие сработки таймера на переход с 0 на один, делаем если ноль

примерно так.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 27 фев 2008, 01:34 
Не в сети
Аватара пользователя

Зарегистрирован: 31 окт 2007, 00:19
Сообщения: 18
Откуда: Украина, Донецк
2rig
:shock:

период - пауза, одинаковая - 20мс
положительный импульс меняется (растягивается) 1-2мс. что соответствует практически всей радиоапаратуре для моделей.
считать нужно длительность положительного импульса ..

Цитата:
глобально задача решается просто.

что то я не вижу где тут просто :wink:

за теорию спасибо .. но я ее в гугле стока начитался ... на всех языках мира кроме иероглифов ... желательно нужен конкретный пример в CodeVisionAVR


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 27 фев 2008, 07:05 
Не в сети
Аватара пользователя

Зарегистрирован: 03 авг 2007, 19:43
Сообщения: 1437
Откуда: Екатеринбург
прог. языки: Си, асм со словарем
тот же шим только вид сбоку.
слов больше, кода меньше будет.
погляди ссылку повыше где про маршрутник на АВР я давал. там автор меряет длительность открытия форсунки. и подробно все описывает с кодом и комментариями (если точно я просто пересказал его теорию). или жди пока кто нибудь скинет готовое решение. у меня такого нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 29 фев 2008, 16:14 
Не в сети
Аватара пользователя

Зарегистрирован: 31 окт 2007, 00:19
Сообщения: 18
Откуда: Украина, Донецк
вот набросал ... про длительность импульса
частота МК 8 MHz

Код:
#include <mega8.h>
#include <stdio.h>

void main(void)
{

PORTC=0x00;
DDRC=0x02;  // на С0 подаем импульс а с С1 читаем

TCCR0=0x00;  // счетчик T0 остановлен
TCNT0=0x00;

//USART
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

while (1)
      {
      if (PINC.0) {
            TCCR0=0x04; //запускаем счетчик с пределителем 256
              while (PINC.0) {            //пустой цикл пока на ноге С0 еденица
               }
      }

TCCR0=0x00; //останавливаем счетчик

if (TCNT0>0) {
printf("T0 = %d\r\n", TCNT0); //выводим на терминал T0
}
TCNT0=0x00; //обнуляем счетчик
};
}


получается
при 1мс TCNT = 31
при 2мс TCNT= 62

проверяем 31 * 256 *0,125мкс = 992 мкс или ~1мс
62 * 256 * 0,125 = 1984 мкс или ~2 мс
:)

Программы надо оформлять тегом [code]! <Digit>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как подсчитать количество импульсов на Си для ATmega8
СообщениеДобавлено: 19 сен 2008, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 18 сен 2008, 22:02
Сообщения: 25
Откуда: Самара
прог. языки: C/C++, Pascal
У меня задача состоит в следующем: необходимо определить частоту звука, поступающего либо на микрофон, либо с усилителя. Допустим что при низком диапазоне частот выполняется одна задача, в среднем дипазоне- другая, в в высоком - третья.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO