Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь. |
17.01.2009, 23:15
|
|
Временная регистрация
Регистрация: 15.06.2008
Сообщений: 57
Сказал спасибо: 2
Сказали Спасибо 36 раз(а) в 8 сообщении(ях)
|
Когда FIFO заполнится, и сигнал FINT появится. СМ. Даташит, страница 24, Alternate Read Method.
|
|
|
|
17.01.2009, 23:34
|
|
Временная регистрация
Регистрация: 03.11.2006
Сообщений: 64
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Только этим Alternate Read Method`ом и смог правильно прочитать принятый байт. Командой из даташита читалась всякая ерунда. Вообще даташит написан просто ужасно
2 ArgusB: nFSEL после приема первого байта поднять и опять ждать высокого уровня FINT для чтения?
|
|
|
|
18.01.2009, 09:46
|
|
Временная регистрация
Регистрация: 15.06.2008
Сообщений: 57
Сказал спасибо: 2
Сказали Спасибо 36 раз(а) в 8 сообщении(ях)
|
Отмотай эту ветку на страницу 13 - там этот вопрос по косточкам обсосан.
|
|
|
|
18.01.2009, 17:28
|
|
Временная регистрация
Регистрация: 03.11.2006
Сообщений: 64
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Спасибо. И как я смотрел. Три дня назад прочитал всю ветку от начала и до конца
|
|
|
|
08.03.2009, 18:59
|
|
Прохожий
Регистрация: 10.06.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
сегодня, 8 марта 2009, наконец-то получил передачу- прием данных на TRC101. Я вижу, есть люди (_grey_ на 21 странице темы, от 15 января) , которые уже отчаялись с запуском этих приемо-передатчиков. Но прошло уже около 2-х месяцев с последних сообщений по теме...
В общем, если кому еще есть интерес к trc101, мои фрагменты исходников для PIC (PIC16F876A), которые я написал (язык СИ):
while(1) // основной цикл приема
{
// чистим и устанавливаем бит 1 для перезапуска
//опознования синхронного образца:
WriteCMD(0xCA80);
WriteCMD(0xCA82);
CheckSum=0;
nCS=1;
nFSEL=0;
// это точки для отладки в MPLAB ICD2
asm("nop");
// первый принимаемый байт - число передаваемых
//байтов
n = READ_BYTE();
asm("nop");
// второй принимаемый байт - контрольная сумма
ks = READ_BYTE(); asm("nop");
// основная информация принимвется здесь
for (j=0; j ‹ n; j++)
{
BUFER[j]=READ_BYTE();
// подсчитываем контрольную сумму
CheckSum=CheckSum+BUFER[j];
};
asm("nop");
if (CheckSum==ks)
{
// зажигаем светодиод, если равно - прием верный:
LED=0;
}
DelayMs(250); // мс всего
LED=1; // гасим
}
и еще :
//************************************************** ***********
unsigned char READ_BYTE(void) // чтение FIFO обращением к регистру
{
unsigned char i, temp;
SCK=0;
temp=0;
mm1:
if (nFINT) // ждем когда поднимется - значит байт принят
{
for(i = 0; i‹16; i++)
{
temp=temp‹‹1;
SCK=1;
DelayUs(5);
if (SDO) temp=temp|0x01;
i++;
SCK=0;
DelayUs(5);
} ;
return temp;
};
goto mm1;
}
Изюминка чтения буфера FIFO альтернативным методом чтения для меня оказалась в том, что его надо считывать 16-ю тактами , и только с 9 по 16 такты нужный мне регистр заполняется данными... Ну все правильно, FIFO 16- разрядный, данные заполняются , например, справа, а читаю с вывода SDO слева, нужная мне информация будет с 9 по 16-й такты. При заполнении буфера FIFO 8-ю битами (число предварительно запрограммировано) nFINT поднимается в 1, к этоту моменту первые 8 бит на ножке SDO ,будут нулями, вторые 8 бит -нужные данные...
|
|
|
|
08.03.2009, 19:00
|
|
Прохожий
Регистрация: 10.06.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
сегодня, 8 марта 2009, наконец-то получил передачу- прием данных на TRC101. Я вижу, есть люди (_grey_ на 21 странице темы, от 15 января) , которые уже отчаялись с запуском этих приемо-передатчиков. Но прошло уже около 2-х месяцев с последних сообщений по теме...
В общем, если кому еще есть интерес к trc101, мои фрагменты исходников для PIC (PIC16F876A), которые я написал (язык СИ):
while(1) // основной цикл приема
{
// чистим и устанавливаем бит 1 для перезапуска
//опознования синхронного образца:
WriteCMD(0xCA80);
WriteCMD(0xCA82);
CheckSum=0;
nCS=1;
nFSEL=0;
// это точки для отладки в MPLAB ICD2
asm("nop");
// первый принимаемый байт - число передаваемых
//байтов
n = READ_BYTE();
asm("nop");
// второй принимаемый байт - контрольная сумма
ks = READ_BYTE(); asm("nop");
// основная информация принимвется здесь
for (j=0; j ‹ n; j++)
{
BUFER[j]=READ_BYTE();
// подсчитываем контрольную сумму
CheckSum=CheckSum+BUFER[j];
};
asm("nop");
if (CheckSum==ks)
{
// зажигаем светодиод, если равно - прием верный:
LED=0;
}
DelayMs(250); // мс всего
LED=1; // гасим
}
и еще :
//************************************************** ***********
unsigned char READ_BYTE(void) // чтение FIFO обращением к регистру
{
unsigned char i, temp;
SCK=0;
temp=0;
mm1:
if (nFINT) // ждем когда поднимется - значит байт принят
{
for(i = 0; i‹16; i++)
{
temp=temp‹‹1;
SCK=1;
DelayUs(5);
if (SDO) temp=temp|0x01;
i++;
SCK=0;
DelayUs(5);
} ;
return temp;
};
goto mm1;
}
Изюминка чтения буфера FIFO альтернативным методом чтения для меня оказалась в том, что его надо считывать 16-ю тактами , и только с 9 по 16 такты нужный мне регистр заполняется данными... Ну все правильно, FIFO 16- разрядный, данные заполняются , например, справа, а читаю с вывода SDO слева, нужная мне информация будет с 9 по 16-й такты. При заполнении буфера FIFO 8-ю битами (число предварительно запрограммировано) nFINT поднимается в 1, к этоту моменту первые 8 бит на ножке SDO ,будут нулями, вторые 8 бит -нужные данные...
|
|
|
|
16.03.2009, 18:32
|
|
Частый гость
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
|
Может кому пригодится моя прога для конфигурирования
ТРС102.
P.S. Рад что тема не умерла!!!
Прикрепленный файл: 7693006.rar
|
|
|
|
17.03.2009, 08:48
|
|
Временная регистрация
Регистрация: 15.06.2008
Сообщений: 57
Сказал спасибо: 2
Сказали Спасибо 36 раз(а) в 8 сообщении(ях)
|
Оки-доки, дело хорошее. А как железо подключать?
|
|
|
|
17.03.2009, 11:37
|
|
Частый гость
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
|
Все это дело пудключается к СОМ.
Данные регистров передаются в формате SWxxxx(13)
xxxx-содержание регистра строкой (например 8013)
Чтение статуса SR0(13) в ответ Sxxxx(13).
|
|
|
|
30.04.2009, 19:34
|
|
Частый гость
Регистрация: 23.05.2007
Сообщений: 24
Сказал спасибо: 5
Сказали Спасибо 9 раз(а) в 5 сообщении(ях)
|
Добрый вечер Всем. Тема интересная, так как я TRC101 интересуюсь уже три месяца.За это время перевел даташит по основным командам. До этого я передавал и принимал другими ресиверами этой фирмы TR3000, и добился определенных успехов. Но у меня, как и у многих в этой теме, я увидел проблемы, которые сходу не мог решить. Не могу понять где ошибка. Использую PIC18F4550 и TRC101. При передаче видно по осцилографу, что идут пакеты, а приемник не видит паттерн. Инициализация стандартная, как прочитал в этой ветке. Может кто подскажет, где искать ошибку.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:20.
|
|