Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 10.03.2011, 20:34  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAvr Atmega L297 L298

Большое Человеческое Спасибо)
Реклама:
Sho_otnik вне форума  
Непрочитано 10.03.2011, 20:38  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: WinAvr Atmega L297 L298

Там ошибка есть, спешил однако.
Код:
if(flags.fl_start)  // может нужно запустить?
            {
            // нужно запустить
            OUT_PORT ^= (1‹‹OUT);               // первое изменение на противоположное
            st_inv_count = (IMP_COUNT ‹‹ 1)-1;  // счетчик изменений
            st_period = PERIOD;                 // сохраним период
// ошибка в следующем выражении. В коменте правильно, а вычесть 1 забыл
// получалось первый полупериод на 1 длиннее остальных
            st_time = (st_period ›› 1)-1;         // время до следующего изменения на одно меньше половины периода
            flags.fl_start = 0;                 // старт отработан
            flags.fl_work = 1;                  // начался вывод
            } // if(flags.fl_start)
kison вне форума  
Непрочитано 10.03.2011, 21:47  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAvr Atmega L297 L298

хм...что-то странно, пытаюсь смоделировать в Proteus, просто запускаю "начать моделирование" он мне постоянно с PB3 выдает импульсы
Sho_otnik вне форума  
Непрочитано 10.03.2011, 22:41  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: WinAvr Atmega L297 L298

Он и будет их выдавать постоянно, если Вы взяли исходник 1 к 1. Там в main выдали 3 импульса - выдаем 4 чуть медленней, потом 5 и т.д. Это для проверки было сделано. И как пример использования.
Взводим флаг начала - начнется генерация и взведется флаг fl_work. Когда вывод кончится флаг fl_work сбросится.
Я же после этого взвожу стартовый флаг снова. И так в бесконечном цикле. Сделайте в main цикл таким:
Код:
while(1)
{
flags.fl_start = 1;
while(flags.fl_start){}; //ждем начала
// изменим период, это не повлияет на уже начатый вывод
PERIOD += 1;
IMP_COUNT += 1;
while(flags.fl_work){}; // ждем окончания вывода
_delay_ms(100);
// и повторим с новыми значениями периода и числа импульсов
}
Будет пауза в 100 миллисекунд.
Можно вынести все это из цикла и разместить перед ним - будет выведено количество импульсов заданное в IMP_COUNT один раз. Когда понадобится вывести снова - установите период и количество импульсов и взведете флаг старта.
И вот что забыл - период желательно задавать четным. Это не контролируется, но при задании нечетного числа будет взято меньшее на 1. Т.е. импульс и пауза будет по 2 попугая при установке периода в 5. Не фатально, но учесть стоит.

Последний раз редактировалось kison; 11.03.2011 в 03:19.
kison вне форума  
Непрочитано 11.03.2011, 07:39  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAvr Atmega L297 L298

Кажется понял, сегодня разберусь с алгоритмом окончательно и отпишусь
Sho_otnik вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
Глюки WinAVR KBH-I Коллекция глюков 19 07.06.2011 01:16
Помогите с массивами в WinAvr Sho_otnik Микроконтроллеры, АЦП, память и т.д 7 07.01.2011 11:56
WinAVR не нравится символ '\' vovan_zh Микроконтроллеры, АЦП, память и т.д 10 10.09.2010 20:48
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


Часовой пояс GMT +4, время: 17:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot