акселерометр 7455 и MEGA8 на BASCOM
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
акселерометр 7455 и MEGA8 на BASCOM
помогите "связать" акселерометр MMA7455 и MEGA8 на BASCOM .
схему спаял отсюда http://avrdevices.ru/akselerometr_mma7455l/
но вместо ATMega32 взял ATMega8 (что было под рукой).
Застопорился на ПО.Обмен данными между акселерометром и МК происходит по I2C но я с ним пока еще не сталкивался .
даташит на акселерометр тут http://www.avrdevices.ru/datasheets/MMA7455L.pdf
судя по нему изначально акселерометр выключен и чтобы включить необходимо по адресу $16 в ячейки D0 и D1 записать 1 (или туда или туда или в обе) подскажите синтаксис и операторы для BASCOM как это сделать . И заодно как считать с этогоже адреса значения эти же бит.
схему спаял отсюда http://avrdevices.ru/akselerometr_mma7455l/
но вместо ATMega32 взял ATMega8 (что было под рукой).
Застопорился на ПО.Обмен данными между акселерометром и МК происходит по I2C но я с ним пока еще не сталкивался .
даташит на акселерометр тут http://www.avrdevices.ru/datasheets/MMA7455L.pdf
судя по нему изначально акселерометр выключен и чтобы включить необходимо по адресу $16 в ячейки D0 и D1 записать 1 (или туда или туда или в обе) подскажите синтаксис и операторы для BASCOM как это сделать . И заодно как считать с этогоже адреса значения эти же бит.
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
- Реклама
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
сей девайс по интерфейсу SPI может работать . может про него кто нибудь расскажет как в BASCOM пользовать?
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
Re: акселерометр 7455 и MEGA8 на BASCOM
Протокол I2C и Bascomolegkomak писал(а):Обмен данными между акселерометром и МК происходит по I2C но я с ним пока еще не сталкивался.
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
Мурик спасибо но и это уже читал тоже... сейчас застопорился на том , что везде описания i2c и примеры работы с ним подразумевают что в датчике только один регистр, а в 7455 акселерометре их больше 30-ти штук.
подскажите кто знает как в BASCOMe указать какой регистр мне нужен в тот или иной момент?
подскажите кто знает как в BASCOMe указать какой регистр мне нужен в тот или иной момент?
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
Re: акселерометр 7455 и MEGA8 на BASCOM
У меня мост lis3lv02dq (акселерометр, снятый с нокии 5500спорт)-> mega8 -> CA-42 (usb кабель от телефонов нокиа
UART<->USB) -> Ноут
Работает на ура
Прогу писал под Codevision AVR на C.
Шина I2C:
Чтение одного байта (из даташита)
1)старт
2)отправить адрес устройства+запись (0)
3)отправить адрес регистра
4)старт
5)отправить адрес устройства+чтение (1)
6)получить данные
7)стоп.
И запись:
1)старт
2)отправить адрес устройства+запись (0)
3)отправить адрес регистра
4)отправить данные
5)стоп.
Используются функции:
Есть одно НО! Адрес устройства в даташите надо ссунуть на 1 влево, поскольку в 0bXXXXXXXX биты - адрес устройства, а бит - флаг чтения или записи. И адрес устройства будет не 0x1D а 0x3A.
Успешным будет написание своих небольших функций для чтения/записи с параметрами: адрес устройства, адрес регистра, данные.
На Баскоме могу (хоть и с трудом) написать. На С уже имеется, если кому надо, обращайтесь.
UART<->USB) -> Ноут
Работает на ура
Прогу писал под Codevision AVR на C.
Шина I2C:
Чтение одного байта (из даташита)
Тоесть алгоритм чтения:The Master (or MCU) transmits a start condition (ST) to the MMA7455L, slave address ($1D), with the R/W bit
set to “0” for a write, and the MMA7455L sends an acknowledgement. Then the Master (or MCU) transmits the 8-bit address of
the register to read and the MMA7455L sends an acknowledgement. The Master (or MCU) transmits a repeated start condition
(SR) and then addresses the MMA7455L ($1D) with the R/W bit set to “1” for a read from the previously selected register. The
Slave then acknowledges and transmits the data from the requested register. The Master does not acknowledge (NAK) it received
the transmitted data, but transmits a stop condition to end the data transfer.
1)старт
2)отправить адрес устройства+запись (0)
3)отправить адрес регистра
4)старт
5)отправить адрес устройства+чтение (1)
6)получить данные
7)стоп.
И запись:
Алгоритм записи:To start a write command, the Master transmits a start condition (ST) to the MMA7455L, slave address ($1D) with the R/W bit set
to “0” for a write, the MMA7455L sends an acknowledgement. Then the Master (MCU) transmits the 8-bit address of the register
to write to, and the MMA7455L sends an acknowledgement. Then the Master (or MCU) transmits the 8-bit data to write to the
designated register and the MMA7455L sends an acknowledgement that it has received the data. Since this transmission is complete,
the Master transmits a stop condition (SP) to the data transfer.
1)старт
2)отправить адрес устройства+запись (0)
3)отправить адрес регистра
4)отправить данные
5)стоп.
Используются функции:
Код: Выделить всё
I2cstart
I2cwbyte MyData
I2crbyte MyData, Nack
I2cstopУспешным будет написание своих небольших функций для чтения/записи с параметрами: адрес устройства, адрес регистра, данные.
На Баскоме могу (хоть и с трудом) написать. На С уже имеется, если кому надо, обращайтесь.
- Реклама
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
phenomen спасибо, кажись лед немного тронулся , но ....
вот листинг простой программы - записываем в 16 регистр акселерометра байт , потом проверяем и обнаруживаем что там хранится не тот байт какой записывали - а почему не пойму ... подскажите пожалуйста .
вот листинг простой программы - записываем в 16 регистр акселерометра байт , потом проверяем и обнаруживаем что там хранится не тот байт какой записывали - а почему не пойму ... подскажите пожалуйста .
Код: Выделить всё
$regfile = "m8def.dat" ' МК Mega8L
$crystal = 8000000 ' частота 8 Mhz
Config Scl = Portc.5 ' конфигурируем SCL
Config Sda = Portc.4 ' конфигурируем SDA
Config Portc.1 = Output ' выход на светодиод 1
Config Portc.2 = Output ' выход на светодиод 2
L1 Alias Portc.1 ' обзовем светодиод 1 L1
L2 Alias Portc.2 ' обзовем светодиод 2 L2
Const Adrw = &B00111010 ' Адрес устройства с битом записи 00111010
Const Adrr = &B00111011 ' Адрес устройства с битом чтения 00111011
Dim Value As Byte ' переменная для считывания байта
Do
' заишем в регистр 16 акселерометра 00000101 означает включить акселерометр
' и выбрать предел измерений 2g
I2cstart ' старт
I2cwbyte Adrw ' адрес акселерометра на запись
I2cwbyte &H16 ' адрес регистра
I2cwbyte &B00000101 ' байт включения питания и установки предела измерения
I2cstop ' стоп
Waitms 50 ' пауза на всяк случай
' теперь у нас в 16 регистре хранится 00000101 а мы считаем байт из этого
' регистра и проверим так ли это или нет ? :)
I2cstart
I2cwbyte Adrw ' адрес акселерометра на запись
I2cwbyte &H16 ' адрес регистра
I2cstart
I2cwbyte Adrr ' адрес акселерометра на чтение
I2crbyte Value ' читаем байт в переменную VALUE
I2cstop ' стоп
Waitms 50 ' пауза на всяк случай
' а теперь сравним VALUE и 00000101 то что мы записывали
' должно сойтись
If Value = &B00000101 Then
L1 = 1 ' если сошлось то мигнет светодиод 1
Waitms 300
L1 = 0
Else
L2 = 1 ' если не сошлось то мигнет светодиод 2
Waitms 300
L2 = 0
End If
Loop
End- Вложения
-
- 7455.txt
- (2.51 КБ) 436 скачиваний
Последний раз редактировалось olegkomak Вс янв 09, 2011 12:49:16, всего редактировалось 1 раз.
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
- Alex Medvedev
- Встал на лапы
- Сообщения: 95
- Зарегистрирован: Сб мар 01, 2008 12:27:44
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
Вывод CS к питанию подтянут?
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
да Alex Medvedev , все строго по вашей схеме (сегодня перепроверял на всякий случай)
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
уважаемые пользователи Bascoma посмотрите синтаксических ошибок нет в тексте моей проги ?? мало ли
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
путем нехитрого волшебства выяснил что часть программы которая отвечает за чтение считывает регистр 16 и в нем все биты равны нулям ... наверное следует вывод что не происходит записи в этот регистр...
знатоки Баскома ну гляньте пожалуйста на листинг ? где может быть ошибка ?
знатоки Баскома ну гляньте пожалуйста на листинг ? где может быть ошибка ?
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)
- olegkomak
- Встал на лапы
- Сообщения: 123
- Зарегистрирован: Пт янв 08, 2010 16:21:41
- Откуда: Тамбов
- Контактная информация:
Re: акселерометр 7455 и MEGA8 на BASCOM
заработало!!!
Alex Medvedev спасибо подсказал (в личке) что следует писать
I2crbyte Value,Nack
у меня NACK не было.
я по первости так и писал но наверное ошибка была в чем то другом и поэтому я nack стирал зачем то
теперь соберу демоборд под акселерометр и детально изучу его возможности . Надеюсь больше тайн не предвидится тогда тут отписывать не вижу смысла . Если кому то захочется (или придется) работать с подобным акселерометром пишите - отвечу
всем котам спасибо!
Alex Medvedev спасибо подсказал (в личке) что следует писать
I2crbyte Value,Nack
у меня NACK не было.
я по первости так и писал но наверное ошибка была в чем то другом и поэтому я nack стирал зачем то
теперь соберу демоборд под акселерометр и детально изучу его возможности . Надеюсь больше тайн не предвидится тогда тут отписывать не вижу смысла . Если кому то захочется (или придется) работать с подобным акселерометром пишите - отвечу
всем котам спасибо!
Талантам надо помогать, бездарности пробьются сами! (Л.Гольдберг)


