Перейти к содержанию

Рекомендуемые сообщения

Доброго времени суток.

Начнем! Есть ПК , есть atmega16 , есть переходник USB UART из аппаратуры это все.

Написана программа дла работы с ком портом , которая отлично работает.

ДАННЫЕ------->ПК------->переходник------->atmega16

в идеале загорается светодиод если данные пришли без потерь

Но в том то и дело что данные приходят иногда не приходят иногда приходят с пятого, седьмого, пятнадцатого раза

настройки соединения USART в atmega16
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0xD8;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

Настройки в программе такиеже 8 дата 1 стоп NO PARity режим асинхронный

есть предположение что нужно соединить общий провод на переходнике и atmega16

код приема данных


// USART Receiver interrupt service routine
interrupt [uSART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;

nomer_bita++;
x[nomer_bita]=data;
if(nomer_bita==5)
{
 nomer_bita=0;
}
if((x[1]=='1') && (x[2]=='2') && (x[3]=='3') && (x[4]=='4') && (x[5]=='5'))
{
 PORTA.7=1;
}
else
{
 PORTA.7=0;
}

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
  {
  rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
  // special case for receiver buffer size=256
  if (++rx_counter == 0)
  {
#else
  if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
  if (++rx_counter == RX_BUFFER_SIZE)
  {
  rx_counter=0;
#endif
  rx_buffer_overflow=1;
  }
  }
}

внимание вопрос как избежать данного бага потери данных?

Изменено пользователем IMXO
Ссылка на комментарий
Поделиться на другие сайты

внимание вопрос как избежать данного бага потери данных?

Думаю, так:

есть предположение... нужно соединить общий провод на переходнике и atmega16

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

массив использовать как стек , проверку стека делать по приходу контрольного символа "возврат коретки" или редко используемых символов типа "ё" или нет?

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

в протеусе виртуально все работает

сомневаюсь... достаточно отправить посылку 112345 , и усе... алес капут... дальше можете сколько угодно отправлять правильную посылку ответом будет тишина....
Ссылка на комментарий
Поделиться на другие сайты

Написана программа дла работы с ком портом , которая отлично работает.

прога не работает....

1. нормальный прием данных с юарта возможен или через прерывания или программными методами в режиме постоянного ожидания...

о программном методе(это ваши стандартные функции четчар путчар) можете забыть сразу...вам еще кучу переферии обслуживать...

2. стандартные библиотеки общения с терм.датчиками отключают вызов прерываний на время формирования временных интервалов для общения с датчиками... это надо учитывать при работе с юартом...

3. ну и при приеме с юарта пользуем стек размером кодовой посылки... а также сообщаем на ПК о готовности приема и/или ошибок при приеме посылки

Ссылка на комментарий
Поделиться на другие сайты

короче нужен протокол передачи нанных. Это решает часть проблем.

переписать функцию получения данных например так:

if (rx_counter>0)

{

x=getchar();

if (x=='1')

{

migalka(5);

}

putchar(x);

x=0x00;

}

это не подвесит прогу и я уже проверил в протеусе через раз работает))))

какиенибуть примеры к советам будут где чего почитать и так далее

Ссылка на комментарий
Поделиться на другие сайты

у вас в пост1 был вполне нормальный код нужно просто

nomer_bita++;
x[nomer_bita]=data;
if(nomer_bita==5)
{
nomer_bita=0;
}

заменить на

x[1]=x[2];
x[2]=x[3];
x[3]=x[4];
x[4]=x[5];
x[5]=data;

тем самым вы получите сдвигаемый стек... при проверке условия совпадения посылки первым проверяется x[5]=='5' , дабы не выполнять лишних проверок,

Ссылка на комментарий
Поделиться на другие сайты

походу работает. Я детально вчиталсяв стандартные ф-и они делают тоже самое почти. Спасибо огромное тем кто откликнулся.

В железе всеравно потери идут и ничего не работает а в протесе вроде работает

всем спасибо за мысли будем дальше работать

С вами не прощаюсь спишемся

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...