Перейти к содержимому

Фото
- - - - -

Настройка IO устройства

акселерометр язык C AVR

  • Вы не можете создать новую тему
  • Please log in to reply
8 ответов в этой теме

#1 Dilan555

Dilan555
  • Пользователь
  • 38 сообщений
  • Откуда:Тарту

Отправлено 02 мая 2014 - 14:52

Добрый день. я начинающий в программирование на языке C. сейчас пишу маленькую программу, чтобы процессор по SPI получал данные от акселерометра. Каким образом мне отправить данные на CTRL_REG1 и CTRL_REG4?

#include <avr/io.h>
#include <avr/interrupt.h>


// Define SPI 
#define SPI_DDR DDRB
#define SPI_PORT PORTB
#define SPI_MISO PB3
#define SPI_MOSI PB2
#define SPI_SCK PB1
#define SPI_SS PB0


void spi_init()
{
	// Configure MOSI, SCL as output
	SPI_DDR = (1 << SPI_MISO) | (1 << SPI_SCK);
	// Configure SPI: SPI Enable / SPI working in 1 mode / clock = fosc/4 
	SPCR = (1 << SPE) | (1 << CPHA) | (1 << CPOL);	
}

void init_acel()
{
	CTRL_REG1 = 0b01000011; // Sensor enabled in normal mode with clock 10 Hz, X and Y active
	CTRL_REG4 = 0b00001000; //  +/- 2gr.
}

ISR(SPI_STC_vect)
{
	PORTA = SPDR;
	
}

int main(void)
{
	spi_init();
	init_acel();
	DDRA = 0xFF;
	sei();
    while(1);
	{
		PORTA = SPDR;
	}
}

ДШ на процессор: http://www.atmel.com...ges/doc7593.pdf

Прикрепленные файлы


Сообщение изменено: Dilan555 (02 мая 2014 - 14:54 )

  • 0
Каждый мнит себя стратегом, видя бой со стороны....

Сквозь печаль я коротаю свои дни,
То и дело,спотыкаясь, натыкаясь на соженные мосты,
И пусть любая беда меня сбивает с пути,
Я все равно буду идти, ведь надо дойти.

#2 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 02 мая 2014 - 17:41

Опустил CS, отправил адрес регистра и стразу отправляй данные. В конце поднимай CS. Чтение-запись данных в регистр уже давно унифицировано. Процедура общая как для акселерометра, так и для EEPROM, датчиков, сдвиговых регистров и прочего.

Не забудь, что SPI бывает двух основных типов - при высоком клоке и низком. У тебя тактовые импульсы нормально высокие. Т.е. нормальное состояние линии - HIGH.


Сообщение изменено: Вырвиглаз (02 мая 2014 - 17:42 )

  • 0
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.

#3 Dilan555

Dilan555
  • Пользователь
  • 38 сообщений
  • Откуда:Тарту

Отправлено 05 мая 2014 - 21:50

 Спасибо Вырвиглаз. Во всём разобрался и настроил.


Сообщение изменено: Dilan555 (05 мая 2014 - 21:50 )

  • 0
Каждый мнит себя стратегом, видя бой со стороны....

Сквозь печаль я коротаю свои дни,
То и дело,спотыкаясь, натыкаясь на соженные мосты,
И пусть любая беда меня сбивает с пути,
Я все равно буду идти, ведь надо дойти.

#4 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 06 мая 2014 - 09:39

Кстати, я с этим акселерометром не работал. У меня используется MPU6050 на шине I2C. Устройство коммерческое и в общем я его уже давно собрал и отладил. Но бывают неприятности с зависанием шины. Эти неприятности лечатся простым сбросом шины, но вариант использовать SPI мне нравится больше. Вероятно, буду переходить на другой акселерометр. Мне нужно только убедится, что точности хватит. У моего тоже 16 бит. Со всякими программными фильтрациями я получаю очень точное невелирование.


  • 0
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.

#5 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 09 мая 2014 - 18:09

Вот тут я начал понимать что охватить все ИТ направления невозможно :)))

Ребята респект!


  • 4
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#6 Нео Жиданно

Нео Жиданно

    Воспитан стервами, попробуй удиви.

  • Постоялец
  • 1 838 сообщений
  • Откуда:Вернулся из рая.

Отправлено 11 мая 2014 - 09:39

Кстати, я с этим акселерометром не работал. У меня используется MPU6050 на шине I2C. Устройство коммерческое и в общем я его уже давно собрал и отладил. Но бывают неприятности с зависанием шины. Эти неприятности лечатся простым сбросом шины, но вариант использовать SPI мне нравится больше. Вероятно, буду переходить на другой акселерометр. Мне нужно только убедится, что точности хватит. У моего тоже 16 бит. Со всякими программными фильтрациями я получаю очень точное невелирование.

Есть ли смысл от DualBios в плане защиты от модификации при зарожении или достаточно
write protection bit, или лучше механическое замыкания WP# и GND ?


  • 0

Я ни кого и ни чего не жду, поговорим после смерти.


#7 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 11 мая 2014 - 09:52

Есть ли смысл от DualBios в плане защиты от модификации при зарожении или достаточно
write protection bit, или лучше механическое замыкания WP# и GND ?

WP - аппаратная защита. Любая запись в память будет пропущена.


  • 0
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.

#8 Нео Жиданно

Нео Жиданно

    Воспитан стервами, попробуй удиви.

  • Постоялец
  • 1 838 сообщений
  • Откуда:Вернулся из рая.

Отправлено 11 мая 2014 - 09:58

WP - аппаратная защита. Любая запись в память будет пропущена.

А как же апдэйты проходят ?
 

 

Проще всего добавить к BIOS'у нестандартный ISA ROM модуль. Обычно такие модули используются для управления интегрированными ISA-контроллерами (например дополнительным COM-портом). Разумеется, никаких контроллеров у нас нет, ISA-слоты давно исчезли с материнских плат, но модули их по-прежнему поддерживаются BIOS'ом.

Загружаясь после того, как отработает основной код BIOS (original.tmp), ISA-модуль получает полный доступ ко всему оборудованию, в том числе и PCI-шине. В принципе, при желании можно добавить и PCI-модуль, однако это намного сложнее. Потребуется взвести регистр XROMBAR (Expansion ROM Base address) и подделать идентификатор PCI-устройства в заголовке модуля так, чтобы он совпадал с идентификатором реально существующего устройства. Нам ни к чему подобные удовольствия.

ISA-модуль представляет собой обычный двоичный файл с размером, кратным 200h байтам, всегда загружающийся по адресу xxxx:0000h. Часть оборудования (оперативная память, клавиатура, видеокарта) к моменту его вызова уже инициализирована, а часть (жесткие диски, к примеру) — еще нет. Прерывания INT 10h (видео) и INT 16h (клава) можно использовать не боясь, а вот с INT 13h (диски) просто так ничего не выйдет.


Сообщение изменено: Нео Жиданно (11 мая 2014 - 10:09 )

  • 0

Я ни кого и ни чего не жду, поговорим после смерти.


#9 Вырвиглаз

Вырвиглаз

    Убийца травы

  • Постоялец
  • 15 928 сообщений
  • Откуда:Эстония, Таллин

Отправлено 11 мая 2014 - 10:31

Логично, значит кто-то как-то выключает WP. Почитай мануал на флешу.


  • 0
Кто живет и грешит в Эстонии, тот опять родится в Эстонии.