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

 
 
 
Reply to this topicStart new topic
> Помогите понять логику программы из примера для, LPC2141 передача пакета DMX512
smk
сообщение Feb 5 2012, 19:32
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



В нижеприведенном коде не могу понять зачем нужно:
Код
char i = 16;
и
Код
while (i && txout)
? Какой логический смысл в этом?

Код
//uart1.c
#include <LPC214x.H>

#define Fosc 12000000
#define Fpclk 60000000

unsigned int txin; // Next In Index
unsigned int txout; // Next Out Index
unsigned char *txbuf; // pointer to Tx buffer

__irq void U1_Isr(void)
{
char i = 16;

if ((U1IIR & 0x0F) == 2) // THRE Interrupt ? когда передающий буфер пуст
    {
        while (i && txout)
        {
            U1THR = txbuf[txin++];
            txout --;
            i --;
        }
    }
        VICVectAddr = 0; // Acknowledge Interrupt
}

void UART1_Send(unsigned char *buf, unsigned int len)
{
char i = 16;

if (txout == 0) // previous message send ?
    {
        txbuf = buf; // copy buffer pointer
        txout = len;
        txin = 0;
        while (i && txout)
            {
                U1THR = txbuf[txin++];
                txout --;
                i --;
            }
    }
}


Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 5 2012, 19:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(smk @ Feb 5 2012, 23:32) *
В нижеприведенном коде не могу понять зачем нужно:
Код
char i = 16;
и
Код
while (i && txout)
? Какой логический смысл в этом?

16 - размер FIFO. Соответственно, смысл while - продолжаем грузить, пока есть данные для передачи и место в FIFO.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 6 2012, 06:14
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Вы правы. Действительно не обратил на это внимания.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

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

 


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


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