Easyelectronics.ru

Электроника для всех
Текущее время: 13 апр 2021, 08:45

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: C8051320 акселерометр
СообщениеДобавлено: 17 июл 2012, 13:53 
Здравствуйте!

Зарегистрирован: 17 июл 2012, 13:45
Сообщения: 3
нужно сделать: Калибровка акселерометра (установка 5-и калибровочных регистров).
Делаю так:
writ(0x16,0x0A);
writ(0x17,0x0B);
void writ (char x,char x1)
{ for (i=0;i<2;i++)
{ NSSMD0=0; SPIF=0;
SPI0DAT=x;
while (TXBMT!=1);
while (!SPIF);
SPIF = 0;
NSSMD0=1;
delay();
NSSMD0=0;
SPI0DAT=x1;
while (TXBMT!=1);
while (!SPIF);
SPIF = 0;
NSSMD0=1;
delay();
SPIF=0;
};
}
void Delay (void)
{
unsigned long count;
for (count = 1000; count > 0; count--);
}

// 0x16, 0x17 калибр регистры для координаты по оси Х.
данные в регистр не пишет, неск дней уже висну, подскажите что не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 17 июл 2012, 17:32 
Старожил
Аватара пользователя

Зарегистрирован: 17 апр 2010, 08:38
Сообщения: 4921
Откуда: Усинск, республика Коми
while (!SPIF);
SPIF = 0;
пока он не 0 он равен 0? странная конструкция...

_________________
хаос это непознанный порядок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 17 июл 2012, 18:23 
Здравствуйте!

Зарегистрирован: 17 июл 2012, 13:45
Сообщения: 3
цикл висит пока идет передача данных, как только закончится, SPIF станет равен 1. потом обнуляем, не тут проблема ;(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 17 июл 2012, 21:41 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 4081
Откуда: Винница
А что за акселерометр, конкретно модель?
(Вообще-то есть подозрение, что между передачей адреса и данных, которые по нему засылаются, NSS дёргать не надо - но тому надобно веское подтверждение).
(upd) Там ещё NSSMD1 должен быть в единице - это при инициализации SPI сделано?

_________________
Китайская комплектация - европейское качество!


Последний раз редактировалось Katz 18 июл 2012, 11:31, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 18 июл 2012, 06:42 
Старожил
Аватара пользователя

Зарегистрирован: 11 дек 2010, 13:08
Сообщения: 644
Откуда: ... Из далекой, далекой галактики
я не вижу чтобы SPI0DAT куда-то данные посылал.
И еще у вас функция delay() вызывается, а подпрограмма void Delay(void) не откомпелит.
Лучше полный текст скиньте. Если аппаратный SPI, то скиньте даташит на контроллер (не могу прогуглить C8051320).

_________________
С миру по нитке


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 18 июл 2012, 08:02 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 4081
Откуда: Винница
Да зачем его гуглить, он на silabs.com лежит. http://www.silabs.com/products/mcu/usb/ ... x-34x.aspx
SPI да, аппаратный используется.

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 18 июл 2012, 13:25 
Здравствуйте!

Зарегистрирован: 17 июл 2012, 13:45
Сообщения: 3
NSSMD1 равен 1
считываются данные из регистров отлично:
void asd (char x,char x1)
{ for (i=0;i<2;i++)
{ NSSMD0=0;
SPI0DAT=x;
while (!SPIF);
SPIF = 0;
SPI0DAT=x1;
while (!SPIF);
SPIF = 0;
NSSMD0=1;
delay();
NSSMD0=0;
SPI0DAT=x;
while (!SPIF);
SPIF = 0;
t1=SPI0DAT;
SPI0DAT=0;
while (!SPIF);
SPIF = 0;
t2=SPI0DAT;
NSSMD0=1;
delay();}
}
а вот с записью в регистры, открытые для этого, проблемы)
http://zalil.ru/33582895 << дата шит на акселерометр ADIS16209
http://zalil.ru/33582902 << на МК


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 19 июл 2012, 10:00 
Старожил
Аватара пользователя

Зарегистрирован: 11 дек 2010, 13:08
Сообщения: 644
Откуда: ... Из далекой, далекой галактики
Show Описание TXBMT

прежде чем засовывать данные в SPI проверьте флаг готовности (Флаг опусташения буфера) TXBMT.

Show


Так смысл переключать NSSMD0? У вас режимы меняются или что?
P.S. даташит на аксел. не смотрел
P.P.S если необходимо отключить SPI проще воспользоваться SPIEN=0 и все.

_________________
С миру по нитке


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: C8051320 акселерометр
СообщениеДобавлено: 19 июл 2012, 11:55 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 4081
Откуда: Винница
Да просто NSS переключать из 0 в 1 и обратно. Строб акселерометру.
На 5 стр. даташита, однако, подтверждается предположение насчёт NSS - опускаем в ноль, засылаем адрес и данные (всего - 2 байта), и только потом поднимаем в 1. (Figure 4. DIN bit sequence).
Но там ещё одна засада - калибровочные регистры-то 16-битные... сейчас нет времени разбираться, скорее всего можно их записывать одним махом - опустить NSS, заслать адрес и 2 байта данных, и в конце этой посылки поднять NSS.

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB