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

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

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

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

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

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

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

 
Опции темы
Непрочитано 08.04.2010, 16:02  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от umgah Посмотреть сообщение
второй таймер вообще крошечный, INT0=266байт 0,3325мкС.
Так прямо за два такта выполнятся? Если учесть что только вход и выход из прерывания это 4+4 такта и на частоте 8МГц занимает ровно 1uS. Это с пустым обработчиком, где одно команда RETI!
Реклама:
kison вне форума  
Сказали "Спасибо" kison
umgah (08.04.2010)
Непрочитано 08.04.2010, 16:03  
ish0
Прописка
 
Регистрация: 09.08.2006
Сообщений: 198
Сказал спасибо: 14
Сказали Спасибо 27 раз(а) в 20 сообщении(ях)
ish0 на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от umgah Посмотреть сообщение
Немного впритык, но не длиннее. UART - 80 байт, 0,1мкС, второй таймер вообще крошечный, INT0=266байт 0,3325мкС.
0.125мкс - длительность выполнения одной команды (для Ваших 8МГц тактовой). Кстати, преобразование символов в обработчике UART можно сделать вне прерывания.
ish0 вне форума  
Сказали "Спасибо" ish0
umgah (08.04.2010)
Непрочитано 08.04.2010, 16:03  
umgah
Частый гость
 
Регистрация: 15.01.2007
Сообщений: 20
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
umgah на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от kison Посмотреть сообщение
Вообще мне подход не нравится. При жестком реалтайме, а при периодичности прерываний 10uS на INT0 - всего 80 тактов процессора при 8МГЦ тактировании и обработчики явно перегружены. ВСЕ! Требуется оптимизировать как алгоритм, так и код.
И буфер UART тут не при чем - вся программа сплошной тормоз.
Аминь ! Толковый коммент. То есть я неверно расчитал кристалл и он тупо перегружен.
По прерыванию:
//TIMER2 initialize - prescale:64
// WGM: Normal
// desired value: 10uSec
// actual value: 8,000uSec (20,0%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
ASSR = 0x00; //set async mode
TCNT2 = 0xFF; //setup
OCR2 = 0x01;
TCCR2 = 0x04; //start
}
Да, 8uSec в реалиях. Но для 8Мгц МК это разве оставляет 80 тактов на все остальное ? Оо Я извиняюсь за идиотские вопросы, АВР немного не моя область..
umgah вне форума  
Непрочитано 08.04.2010, 16:07  
umgah
Частый гость
 
Регистрация: 15.01.2007
Сообщений: 20
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
umgah на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от ish0 Посмотреть сообщение
0.125мкс - длительность выполнения одной команды (для Ваших 8МГц тактовой). Кстати, преобразование символов в обработчике UART можно сделать вне прерывания.
Еще один отличный коммент. Спасибо, теперь очевидно что я неверно расчитал загрузку процессора, тема исчерпана.
umgah вне форума  
Непрочитано 08.04.2010, 16:16  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от umgah Посмотреть сообщение
Да, 8uSec в реалиях. Но для 8Мгц МК это разве оставляет 80 тактов на все остальное ?
Не, меньше. 64 минус время работы этого обработчика Тактов 20-30 может останется.

Последний раз редактировалось kison; 08.04.2010 в 16:27.
kison вне форума  
Непрочитано 08.04.2010, 16:27  
umgah
Частый гость
 
Регистрация: 15.01.2007
Сообщений: 20
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
umgah на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Пересчитал, число инструкций INT0 = 133, при 16Мгц, как я понял это 8,3 мкс, UART = 40 инструкций, еще 2,5 мкс. И еще таймеры. итого примерно 12мкс.
Если я все понял правильно, то увеличив тайминги TMR1 до 15мкс я должен плотно, но "влезть".
Огромное спасибо всезнающим ALL )) Сам я еще долго пербывал бы в уверенности, что имею 10х резерва.. Видимо где-то с ноликом промахнулся в расчетах ((( Идиотизм, но бывает )
umgah вне форума  
Непрочитано 08.04.2010, 16:33  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от umgah Посмотреть сообщение
UART = 40 инструкций, еще 2,5 мкс.
Проверяйте - у АВР не все инструкции однотактовые. Проще всего посмотреть в симуляторе такты. Ну или на бумажке высчитывать с учетом ветвлений, которые в обработчиках есть.
kison вне форума  
Непрочитано 09.04.2010, 10:00  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Кстати, если такие жесткие временные рамки, что важен каждый такт - никаких операций с массивами, только с указателями. Ну и асемблерные вставки.
Someone вне форума  
Непрочитано 09.04.2010, 11:36  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Нравятся мне "эмбеддеры со стажем", которые не в курсе, что в USART AVR
буферизуется 1 байт. Причём в первых и этого не было, как собственно и в x51, например. То есть я, к примеру, это воспринял как шаг вперёд.
Более того, если вы предполагали, что имеется буфер, то с ним ведь надо работать. Что ж вы не почитали? Ведь даже беглый взгляд на этот узел в даташите не оставляет ни малейших сомнений в размерах буфера.

Но UART, как я вижу, не единственный пробел в ваших знаниях. Даже краткие выдержки из ваших выссказываний не оставляют сомнений в том, что в области прерываний у вас тоже зияет дыра. Приоритеты и уровни - для вас одно и тоже. А напрасно. С системой команд, в смысле "оценить" - тоже напряг. Управление кольцевым буфером - в зачаточном состоянии. Управление потоком - похоже, не слышали.

Короче, я понимаю, что вы сейчас в штыки моё сообщение воспримите, а вы просто попробуйте успокоится и почитайте материал на обозначенные темы. И всё получится.
SasaVitebsk вне форума  
Непрочитано 09.04.2010, 11:43  
ilya_sh
Прописка
 
Регистрация: 09.10.2007
Сообщений: 235
Сказал спасибо: 27
Сказали Спасибо 24 раз(а) в 24 сообщении(ях)
ilya_sh на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

SasaVitebsk,
ilya_sh вне форума  
 

Закладки

Метки
avr, uart
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных с ATmega8 на COM порт ПК sergx1300 Микроконтроллеры, АЦП, память и т.д 32 20.04.2010 14:19
прерывания usart в avr studio 4.13 zubr_ Микроконтроллеры, АЦП, память и т.д 6 14.10.2009 18:33


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


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