|
atmega32 + HMC5883 (по i2c), подключение компаса к мк |
|
|
|
May 13 2012, 11:18
|

Частый гость
 
Группа: Участник
Сообщений: 115
Регистрация: 30-05-11
Из: Екатеринбург
Пользователь №: 65 365

|
Добрый день! Возникла проблема при подключении к мк атмега32 компаса HMC5883. Устанавливаю состояние старт, а вот затем посылаю адрес для записи, в ответ на который получаю состояние регистра статуса twi равное 0х20, что означает: данные переданы, получен Not ack. Вот такие дела. Причем коды состояния я получаю только лишь при работе на частоте 1 МГц, на 8Мгц не могу получить даже состояние старт. Код прилагаю даже в двух вариантах. Также в архив положил даташит на компас. Вот участок кода где я проверяю статус: Код void HMC5843(void) { //unsigned char xh, xl, yh, yl, zh, zl; long xo, yo, zo; i2cSendStart(); i2cWaitForComplete(); i2cWrite_Address(0x3C); //write to HMC i2cWaitForComplete(); status_er = i2cGetStatus(); i2cWrite_Data(0x02); //mode register i2cWaitForComplete(); i2cWrite_Data(0x00); //continuous measurement mode i2cWaitForComplete(); //status_er = i2cGetStatus(); //i2cCheckForMT_SLA(); i2cSendStop(); Полезные ссылки: 1)http://www.seeedstudio.com/wiki/index.php?title=Twig_-_3-axis_Compass_v1.0b
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
May 14 2012, 20:00
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата(Kruftin @ May 14 2012, 23:45)  Ладно завтра перепаяю, и дам ему чизбургеров на 5Вольт. Хотя щас попробую. От 5 Вольт лучше не стало. 5V и на mege? Цитата TWBR should be 10 or higher if the TWI operates in Master mode. If TWBR is lower than 10, the Master may produce an incorrect output on SDA and SCL for the reminder of the byte. The prob- lem occurs when operating the TWI in Master mode, sending Start + SLA + R/W to a Slave (a Slave does not need to be connected to the bus for the condition to happen). Артём , это есть выше , но в 32 мы этого не нашли . Если в TWBR будет хотя бы 10 то при 8 мгц SCL=83333
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
Сообщений в этой теме
Kruftin atmega32 + HMC5883 (по i2c) May 13 2012, 11:18 ILYAUL А где Вы устанавливаете скорость передачи? May 13 2012, 14:24 Kruftin В архиве компас есть полный код программы(для CVAV... May 13 2012, 18:01 ILYAUL Как всё сложно- то . Moжет проще TWBR=SYSCLK/(2*... May 13 2012, 18:31 Kruftin Можно и так. Но вот при частоте тактирования 1МГц ... May 13 2012, 19:41 ILYAUL Цитата(Kruftin @ May 13 2012, 23:41) К ко... May 13 2012, 21:30 Kruftin Именно так. May 14 2012, 08:48 ILYAUL Уменя складывается впечатление , что у Вас проблем... May 14 2012, 10:16 Navovvol с I2C не сталкивался, но пытаясь разобраться вот н... May 14 2012, 11:08 Kruftin Дак а почему тогда вариант номер 2 не катит?
КодTW... May 14 2012, 11:46 ILYAUL Нет я ошибся
ЦитатаСудя по приложенному Вами DS, ... May 14 2012, 17:49 Navovvol нашел вот такое примечание в даташите, правда на м... May 14 2012, 12:07 Kruftin В даташите на атмегу32 я такого не нашел. Не ну се... May 14 2012, 14:39 zombi Цитата(Kruftin @ May 14 2012, 17:39) Сейч... May 14 2012, 15:38 Kruftin Ну питание на платку я могу подать до 5 Вольт. Так... May 14 2012, 18:11 ILYAUL Цитата(Kruftin @ May 14 2012, 22:11) Ну п... May 14 2012, 18:46 Kruftin Ну сейчас попробую. Он даже старт не может выстави... May 14 2012, 18:50 ILYAUL Цитата(Kruftin @ May 14 2012, 22:50) Ну с... May 14 2012, 19:14 _Артём_ Цитата(Kruftin @ May 14 2012, 21:50) а мо... May 14 2012, 19:31 Kruftin Код i2cSendStart();
i2cWaitForComplete... May 14 2012, 19:15 ILYAUL Цитата(Kruftin @ May 14 2012, 23:15) Адре... May 14 2012, 19:36 Kruftin Не ну если я получаю код в статусном регистре, то ... May 14 2012, 19:35 Kruftin Да на меге у меня от 3 батареек на 1,5 вольт (4,5 ... May 14 2012, 20:02 ILYAUL Страно это Цитатаесли я ставлю TWBR больше 10, то ... May 14 2012, 20:11 Kruftin Дак да на адрес у него ответ то 0х20, а на данные ... May 14 2012, 20:15 ILYAUL Цитата(Kruftin @ May 15 2012, 00:15) Може... May 14 2012, 21:14 Kruftin Ну как то же люди работают с такими компасами? Или... May 15 2012, 03:17 ILYAUL А почему так запитаны по разному mega и компас. Че... May 15 2012, 05:00 Kruftin Я сейчас питаю мегу и компас от 4,5 вольт. Ну а на... May 15 2012, 05:10 ILYAUL ЦитатаВсё как надо-это работает , как положено? Ра... May 15 2012, 05:16 Kruftin Между компасом и моей отладочной? Расстояние санти... May 15 2012, 06:21 ILYAUL Цитата(Kruftin @ May 15 2012, 10:21) Похо... May 15 2012, 18:01 Kruftin У меня фантазии хватает, тока вот применить я ее н... May 15 2012, 18:41 ILYAUL На сеглдняшний момент мы имеем :
1 Связь между meg... May 15 2012, 19:20 Kruftin По коду в котором явно задается регистр TWBR:
КодT... May 15 2012, 19:26 Kruftin Спасибо ILYAUL, осциллограф помог. Оказалось я пер... May 16 2012, 12:47 Kruftin На данный момент все проверки проходят по даташиту... May 17 2012, 18:34 ILYAUL Цитата(Kruftin @ May 17 2012, 22:34) На д... May 18 2012, 15:07 Kruftin Попытаюсь, но если его крутить каждый раз надо для... May 19 2012, 16:08 ILYAUL Цитата(Kruftin @ May 19 2012, 20:08) Попы... May 19 2012, 19:29  _Артём_ Цитата(ILYAUL @ May 19 2012, 22:29) Доста... May 19 2012, 20:05   ILYAUL Цитата(_Артём_ @ May 20 2012, 00:05) При ... May 20 2012, 13:09 Kruftin Не ну какие-то данные он должен сразу скинуть, даж... May 20 2012, 12:05 Kruftin А как из даташита то понять что сделать, чтобы ком... May 20 2012, 13:42 ILYAUL Он хоть в каком режиме у Вас работает? И выкладыва... May 20 2012, 19:06 Kruftin Я использую режим continious mode (получается запи... May 21 2012, 05:14 ILYAUL Почему Вы говорите о 2 данных , если их по идее до... May 21 2012, 20:56 Kruftin Дак их итак шесть. Вы же код вроде читали? Там я с... May 22 2012, 03:11 Kruftin Фатал. Как оказалось компас базируется не на HMC58... May 22 2012, 10:48 ILYAUL 3. Write Mode (02) – send 0x3C 0x02 0x00 (Co... May 22 2012, 17:56 Kruftin Да задержку поставлю. Режим single mode я пробую з... May 22 2012, 19:30 ILYAUL Цитата(Kruftin @ May 22 2012, 23:30) Т.е.... May 22 2012, 21:34 Kruftin По идее, так и по даташиту, код который составлен ... May 23 2012, 03:08 ILYAUL Цитата(Kruftin @ May 23 2012, 07:08) Кста... May 23 2012, 08:00 Kruftin Ща попробую self-test. На нем тока написано L883 2... May 23 2012, 09:06 Kruftin Ну в общем заметен прогресс. Менял я сейчас значен... May 23 2012, 10:22 ILYAUL Посмотри, что вот так будет
CODE i2cSendStart();
... May 23 2012, 11:11 Kruftin 0xFF во всех регистрах. Только я не совсем понял к... May 23 2012, 11:23 ILYAUL Цитата(Kruftin @ May 23 2012, 15:23) 0xFF... May 23 2012, 11:30 Kruftin Дак и LSB меняются, усиление меняешь дак они сильн... May 23 2012, 11:45 ILYAUL Цитата(Kruftin @ May 23 2012, 15:45) Это ... May 23 2012, 12:15 Kruftin А как пересчитать? Получается я использую double а... May 23 2012, 12:16 ILYAUL Поищи в инете, где-то я видел как пересчитывают ,... May 23 2012, 14:48 Kruftin Вот нашел пример преобразования. Только надо чтобы... May 23 2012, 16:53 _Артём_ Цитата(Kruftin @ May 23 2012, 19:53) Вот ... May 23 2012, 18:49 Kruftin Т.е. в массиве Buf будут лежать десятичные цифры? ... May 24 2012, 05:29 Kruftin Так вот только формула для определения севера неве... May 24 2012, 17:57 Kruftin Мда, на данный момент я получаю правдивые значения... May 31 2012, 13:06 _Артём_ Цитата(Kruftin @ May 31 2012, 16:06) Прич... May 31 2012, 13:27 Kruftin Не я имею ввиду, что магнитный север я смотрел по ... May 31 2012, 15:48 ILYAUL Z нашёл иот такую формулу для него
Код// convert ... Jun 1 2012, 06:12 Kruftin Ну у меня точно такая же, если скачать код и посмо... Jun 1 2012, 14:26 Kruftin А компас то работает четко. Правда оказалось, что ... Jun 5 2012, 19:10 eu1cc А кто знает, как смещение по Z координате корректи... Apr 14 2013, 20:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|