реклама на сайте
подробности

 
 
> проблема UART на ADuC814
хардварщик
сообщение May 19 2007, 06:55
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 19-05-07
Пользователь №: 27 824



Всем привет.

Дело в следующем, есть схема на aduc814, нужно в нее "вдохнуть душу".
Одна из функций - связь с сервером, грубо говоря нужно выплюнуть пакет из 8 байт по запросу. Но выплюнуть быстро, то есть задержка как в коде ниже неприемлема.

Тут у меня затык и случился, aduc выплевывает первые 3 байта и последний, остальные теряются где-то у него в недрах.
Уже практически на асме пишу (код ниже), но не могу понять, куда теряются байты.

Кстати,
1. дело не в приемнике(сервере), т.к. судя по осциллографу выплевываются а) именно 4 байта и б) без разрыва между ними.
2. при изменении длины посылки ситуация не меняется - теряются байты м-у 3-м и последним
3. пробовал "вестись" от T0/T1 - та же фигня.
4. симулятор ничего такого не обнаруживает.


Что это за фокусы?? Помогите, плз!!! help.gif
Склоняюсь к мысли написать эмулятор хотя это смахивает на мазохизм sad.gif


тестовый код:
------------
void main (void)
{
char i;

//частота 16М
PLLCON = 0;

//таймер2, данные из даташита, стр.56
RCAP2H = 0xFF;
RCAP2L = 0xC9;
TH2 = 0xFF;
TL2 = 0xC9;
//запуск таймера2
T2CON = 0x34;

//таймер1
SCON = 0x52; //почему без него не работает???

//прерывания
ES = 1;
EA = 1;


for (i=0;i<8;i++)
{
SBUF = i;
while(!TI);
}

while(1);
}


void UART_INT(void) interrupt 4
{
// unsigned int i;
TI=0;

//если тут ввести задержку ~0.1с, работает нормально
// for (i = 0; i < 1500; i++);
}
------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 13:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016