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

 
 
> Microblaze и FSL, Проблема с CONTROL BIT
TABKP
сообщение Dec 28 2011, 13:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 19-05-11
Пользователь №: 65 130



Казалось бы все просто. При чтении данных из FSL при установленном control бите командой get в регистре MSR флаг FSL Error устанавливается в 1, а при чтении командой cget этот же флаг устанавливается в 0.
И в SDK даже команда специальная есть для проверки этого флага - fsl_iserror.
Написал простейший код: принимаем данные по FSL, если control бит установлен - гасим светодиод, не установлен - зажигаем. Так вот переменная flag никогда не становится равной 1, не зависимо от того был установлен control бит или нет.

u32 TempFSLData;
u16 flag;

getfslx(TempFSLData,0,FSL_NONBLOCKING);
fsl_iserror(flag);
if ( flag == 1) XGpio_DiscreteClear(&Gpio, GPIO_CHANNEL, 0x03); else XGpio_DiscreteSet(&Gpio, GPIO_CHANNEL, 0x03);

Тогда я пошел дальше и начал читать непосредственно бит FSL Error в регистре MSR. И результат еще более интересный - пока control бит не установлен, не устанавливается и FSL Error, как только установили control бит первый раз в 1, то и FSL Error устанавливается в 1. И после этого в 0 никогда не возвращается не за висимо от значения control бита.

getfslx(TempFSLData,0,FSL_NONBLOCKING);

flag=mfmsr( );
if ( (flag & 0x0010) == 0x0010) XGpio_DiscreteClear(&Gpio, GPIO_CHANNEL, 0x03); else XGpio_DiscreteSet(&Gpio, GPIO_CHANNEL, 0x03);

Вот такие чудеса. Что я не правильно делаю? Камрады, покажите как правильно нужно использовать control бит
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TABKP   Microblaze и FSL   Dec 28 2011, 13:25


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

 


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


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