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

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

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

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

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

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

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

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

Сообщение от picavr Посмотреть сообщение
в PIC можно было взять 2 байта из UDR пока принимается ещё один в сдвиговый.
И в АВР можно. Просто об этом не знает Александр. И Вы
Реклама:
kison вне форума  
Непрочитано 10.04.2010, 03:22  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от picavr Посмотреть сообщение
А по логике вещей должен быть ещё хотя бы 1 регистр - буфер. Между сдвиговым и UDR.
Зачем? В старых контроллерах буфер был на один принятый байт. Вот он и перезаписывался в UDR. В более новых ( смешно - М8 новая ) уже двойной буфер.
Там FIFO, так же как и в ARM-ах от NXP, правда глубина значительно мельче. И нельзя уровень для прерываний назначать. Фактически буфер даже на 3 байта - два готовых и один в сдвиговом регистре.
kison вне форума  
Непрочитано 10.04.2010, 13:43  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Если можно было бы взять байт из сдвигового регистра напрямую, то можно было бы получить половину принятого байта. Это очевидный бред. Поэтому сдвиговый регистр дублируется (Например как в 595). Но от этого ничего не меняется. В at90s8515 если не сделать обработку за период равный длине символа + служебка, то данные будут потеряны. В atmega8515 можно обработать 1 прерывание за период в 2 символа. Если при этом забрать 2 байта, то переполнения не произойдёт. Этим и определяется фактический размер буфера.
Говорить об аппаратной реализации этого, глядя на картинки в даташите - считаю бессмысленным. Как давешний спор о принципиальной схеме АЦП, по её структурной схеме. Мне кажется, здесь уж что кому привидится. Да и какая разница не пойму? Здесь мы ведём речь о программной модели данного устр-ва.

Далее, не хотел конечно затевать этот спор, но уж вывели.
Если вы кроме фуза посмотрите и на сам блок, то увидите что в at90s8515 он называется UART, а в atmega8515 называется USART. В at90s возможно только 2 режима 8 и 9 бит и 1 стоп бит, в atmega - 5,6,7,8,9 и стоп 1,2. То есть различия более глубокие на самом деле. Кроме того, есть различия и в новых UART относительно более древних. Например между atm8 и atm88. Введён режим SPI. Таким образом блоки модифицируются постоянно.
SasaVitebsk вне форума  
Непрочитано 10.04.2010, 14:02  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: AVR USART+прерывания=потеря данных

Сообщение от SasaVitebsk Посмотреть сообщение
Если можно было бы взять байт из сдвигового регистра напрямую, то можно было бы получить половину принятого байта. Это очевидный бред.
Сообщение от SasaVitebsk Посмотреть сообщение
В первых - был просто сдвиговый регистр, равно как и в х51.

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

Во нафлудили, пока работал )
Проблема решена без замены или переделок.
С момента, как только мне обьяснили, что я ошибся в подсчете производительности прерывания таймера были исключены полностью. На случай возникновения прерывания INT0 у меня сбрасывается таймер и время ожидания в цикле основного тела уменьшается пропорционально натикавшему.
Все теперь работает, спасибо экспертам.
На тему остального: ваше мнение в части советов я принимаю с благодарностью. В части оценок - бесит ) Иначе не писал бы, верно ? )
Но в целом - совершенно не интересует. )
Всем спасибо.

Последний раз редактировалось umgah; 10.04.2010 в 16:26.
umgah вне форума  
 

Закладки

Метки
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:26.


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