Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 28.10.2016, 19:02  
Mr.Denis
Временная регистрация
 
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Mr.Denis на пути к лучшему
По умолчанию Работа с AD7799

Здравствуйте!
Пытаюсь разобраться как нужно работать с AD7799.

У этой микросхемы есть несколько регистров, которые в зависимости от регистра содержат в себе 8-bit, 16-bit, 24-bit.

Как записать в 8-bit регистр вроде все понятно, но как правильно записывать в 16-bit регистр?

Предполагаю что это делается как-то так:


Код:
PORTB &= ~(1‹‹ SPI_CS);

SPDR = 0x20; // Старший байт
while(!(SPSR & (1‹‹ SPIF)));

SPDR = 0x0A; // Младший байт
while(!(SPSR & (1‹‹ SPIF)));

PORTB |= (1‹‹ SPI_CS);


Спасибо!
Реклама:

Последний раз редактировалось Mr.Denis; 28.10.2016 в 19:06.
Mr.Denis вне форума  
Непрочитано 28.10.2016, 20:44  
-Alan-
Прописка
 
Аватар для -Alan-
 
Регистрация: 05.12.2008
Адрес: Россия, Омск
Сообщений: 145
Сказал спасибо: 39
Сказали Спасибо 29 раз(а) в 22 сообщении(ях)
-Alan- на пути к лучшему
По умолчанию Re: Работа с AD7799

Не совсем так.
Запись и чтение из регистров AD7799 происходит после записи в коммуникационный регистр, который активен сразу после опускания пина /CS.
В него записывается нужное действие, а затем читается или пишется нужное количество байт, в зависимости от размера регистра.
Страница 13 Datasheet'а.
Настоятельно рекомендую перечитать.

В моём случае инициализация микросхемы выглядит так:
Код:
void AD7799_init(void) {
	CS2_PORT &= ~cs2_adc;
	SPI_Wr_Byte(0x08);	// Mode register
	SPI_Wr_Byte(0x00);
	SPI_Wr_Byte(0x09);	// 16.7Hz, 50Hz rejection -› 80db, Continuous mode
	CS2_PORT |= cs2_adc;
	CS2_PORT &= ~cs2_adc;
	SPI_Wr_Byte(0x10);	// Configuration register
	SPI_Wr_Byte(0x10);
	SPI_Wr_Byte(0x00);	// Unipolar, 1x Gain, No Buffer, AIN1
	CS2_PORT |= cs2_adc;
	CS2_PORT &= ~cs2_adc;
	SPI_Wr_Byte(0x5C);
};
-Alan- вне форума  
Сказали "Спасибо" -Alan-
Mr.Denis (28.10.2016)
Непрочитано 28.10.2016, 21:33  
Mr.Denis
Временная регистрация
 
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Mr.Denis на пути к лучшему
По умолчанию Re: Работа с AD7799

-Alan-,
Спасибо большое за ответ!
Скажите пожалуйста, у Вас функция SPI_Wr_Byte() как реализована?
Примерно вот так:
Код:
void SPI_Wr_Byte(uint8_t data)
{
SPDR = data; // Передаем 8-bit
while(!(SPSR & (1‹‹ SPIF))); // Ждем окончание передачи
}
Вы вначале в регистр SPDR записываете 8-bit, и ждете окончание передачи?

Спасибо!
Mr.Denis вне форума  
Непрочитано 28.10.2016, 21:45  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,888
Сказал спасибо: 2,959
Сказали Спасибо 3,144 раз(а) в 2,133 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Работа с AD7799

Сообщение от Mr.Denis Посмотреть сообщение
Предполагаю что это делается как-то так:
Для доступа к 16-и битному регистру - правильно. Но надо учесть подробности обмена (команды, настройки и пр.) про что написал -Alan-.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
Mr.Denis (28.10.2016)
Непрочитано 28.10.2016, 21:48  
Mr.Denis
Временная регистрация
 
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Mr.Denis на пути к лучшему
По умолчанию Re: Работа с AD7799

ForcePoint,
Сообщение от ForcePoint Посмотреть сообщение
Для доступа к 16-и битному регистру - правильно
Я как раз именно это и хотел уточнить!
Спасибо!
Mr.Denis вне форума  
Непрочитано 29.10.2016, 00:17  
AlexPi
Прописка
 
Регистрация: 14.09.2010
Сообщений: 105
Сказал спасибо: 9
Сказали Спасибо 15 раз(а) в 11 сообщении(ях)
AlexPi на пути к лучшему
По умолчанию Re: Работа с AD7799

Сообщение от Mr.Denis Посмотреть сообщение
Пытаюсь разобраться как нужно работать с AD7799.
Вы к стати сказать к чему именно его подключаете? Контроллер то какой.
Кроме того обратите внимание, что сигнал выхода данных совмещен с сигналом окончания преобразования. Поэтому я бы советовал завести его на вх. прерывания и не использовать аппаратный SPI для него. По сигналу окончания в обработчике прерывания считывать результат и помещать его в кольцевой буфер для дальнейшей обработки.
AlexPi вне форума  
Непрочитано 29.10.2016, 01:37  
Mr.Denis
Временная регистрация
 
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Mr.Denis на пути к лучшему
По умолчанию Re: Работа с AD7799

AlexPi,
Вот как совпало), как раз зашел сюда что бы задать вопрос про RDY(окончание преобразования). Хотел спросить, стоит его на внешние прерывание вешать или нет. Зашел, а тут уже ответ готов. Спасибо!

Подскажите пожалуйста, почему не подходит аппаратный SPI?
P.S. С контроллером еще не определился, но думаю что-то типа atmega8,16,32.или 328.
Mr.Denis вне форума  
Непрочитано 29.10.2016, 08:38  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Работа с AD7799

тут есть AD7799 Generic Driver, надо заполнить функции SPI своим кодом:
https://wiki.analog.com/resources/to...renesas/ad7799
oleg110592 вне форума  
Сказали "Спасибо" oleg110592
Mr.Denis (29.10.2016)
Непрочитано 29.10.2016, 10:42  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,888
Сказал спасибо: 2,959
Сказали Спасибо 3,144 раз(а) в 2,133 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Работа с AD7799

Сообщение от AlexPi Посмотреть сообщение
Поэтому я бы советовал завести его на вх. прерывания и не использовать аппаратный SPI для него. По сигналу окончания в обработчике прерывания считывать результат и помещать его в кольцевой буфер для дальнейшей обработки.
А смысл не использовать SPI?
Если mega8/16/32 - завести сигнал и на SPI и на прерывание (если действительно нужно прерывание по готовности данных в АЦП). Если mega328 - там есть прерывание на каждом выводе (PCINT4 будет, если не путаю).
ForcePoint вне форума  
Непрочитано 29.10.2016, 12:03  
Mr.Denis
Временная регистрация
 
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Mr.Denis на пути к лучшему
По умолчанию Re: Работа с AD7799

Здравствуйте!

Сообщение от ForcePoint Посмотреть сообщение
Если mega328 - там есть прерывание на каждом выводе (PCINT4 будет, если не путаю).
Не путаете.

To All,
Я тут сегодня с утра подумал подключить к МК помимо AD7799 еще и Wiznet W5500, вроде с ней работать не очень сложно.

Вот теперь думаю, смогут нормально существовать на одной SPI шине AD7799 и Wiznet W5500? Или лучше их разделить, AD7799 на программный, а Wiznet W5500 на аппаратный?

Спасибо!
Mr.Denis вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу гуру STM32 (работа за деньги!) xakez ARM 1 07.07.2016 13:44
Напряжённая работа Roshens Отвлекитесь, эмбеддеры! 8 01.09.2010 23:08


Часовой пояс GMT +4, время: 14:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot