Корпус хоть и многоногий, большинство выводов микросхемы не используется:

Достаточно вывести всего 8 выводов для полной работы с акселерометром adxl312 



Акселерометр может выводить информацию по двум протоколам: I2C  и по SPI

Адрес микросхемы в случае работы по I2C в шестнадцатеричной системе: 0х1D

Таким образом работая с микросхемой по шине I2C при записи байта нужно отправлять 0х3A а при приеме 0x3B

Рабочий диапазон измерений акселерометр может быть выбран из ряда: 1,5g; 3g; 6g; 12g

Выбор диапазона измерений выбирается записью в регистр по адресу 0х31


Логика работы по I2C интерфейсу:



Тестовый код для акселерометра ADX312 в Bascom-AVR


$regfile = "m8def.dat"                     'микроконтроллер ATmega8

$crystal = 8000000                         'частота работы 8МГц

'конфигурируем scl и sda пины
Config Sda = Portb.1                       ' I2C Data
Config Scl = Portb.0                       ' I2C Clock

'константы на биты чтения и записи adxl312
Const Adxl312write = &H3A                  ' бит записи
Const Adxl312read = &H3B                   ' бит чтения


Dim Data0x As Byte
Dim Data1x As Byte
Dim Data0y As Byte
Dim Data1y As Byte
Dim Data0z As Byte
Dim Data1z As Byte


Do

Gosub Adxl312

Loop


End                              'end program

Adxl312:

I2cstart                         'даем старт шине
I2cwbyte Adxl312write            'отправляем бит записи
I2cwbyte &H32                    'отправляем адрес откуда нужно считать
I2cstart                         'повторный старт
I2cwbyte Adxl312read             'отправляем бит чтения
I2crbyte Data0x , Ack            'принимаем данные для трех осей
I2crbyte Data1x , Ack
I2crbyte Data0y , Ack
I2crbyte Data1y , Ack
I2crbyte Data0z , Ack
I2crbyte Data1z , Nack           'заканчиваем прием командой nack
I2cstop                           'закрываем шину

Return


Осталось сложить байты для кождых из осей и вывести показанию любым удобным способом. По умолчанию акселерометр начинает работать в диапазоне измерений 1,5g


авторизация