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

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

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

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

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

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

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

 
Опции темы
Непрочитано 26.02.2014, 13:29  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
Восклицание ATmega16 + SPI + AD7705

Добрый день. Есть даташит, и несколько кодов на Си с примерами. Не могу всё увязать в голове. Хочу AD7705 связать с микрухой. Помогите с ней разобраться. Вот что имею:
PHP код:
//CS - PORTA.0
// DRDY - PORT_A.1
//RESET - PORTA.2


#define SET_BIT(A,B) A|=(1‹‹B);     //      //PINC.5
#define CLEAR_BIT(A,B) A&=~(1‹‹B);
#define BIT(n)    (1‹‹n)


void InitSPI(void)
{
// setup SPI I/O pins
    
SET_BIT(PORTB7);    // set SCK hi
    
SET_BIT(DDRB7);    // set SCK as output
    
CLEAR_BIT(DDRB6);    // set MISO as input
    
SET_BIT(DDRB5);    // set MOSI as output
    
SET_BIT(DDRB4);    // SS must be output for Master mode to work    

//SPE – включает/выключает модуль SPI. Если бит установлен в 1, модуль SPI включен.
    //MSTR – определяет режим работы микроконтроллера. Если бит установлен в 1, микроконтроллер работает в режиме Master (ведущий). Если бит сброшен – в режиме Slave (ведомый). Обычно микроконтроллер работает в режиме master.
    //SPR1 и SPR0 – определяют частоту тактового сигнала SPI модуля, то есть скорость обмена. Максимально возможная скорость обмена всегда указывается в спецификации периферийного устройства.
    //2457.6 kHz  /  16
    
SPCR BIT(SPE)|BIT(MSTR)|BIT(SPR0);//16
}

#define EnADC    CLEAR_BIT(PORTA,0)  //CS притягиваем к земле
#define DisADC   SET_BIT(PORTA,0)    //CS отпускаем от земли
#define ResetAdc CLEAR_BIT(PORTA,2);delay(10);SET_BIT(PORTA,2)  // выполняем RESET AD7705

void AdcWr(unsigned char d)
{
    
SPDR d;
    
/*
    SPIF – флаг прерывания от SPI. Он устанавливается в 1 по окончании передачи байта данных. 
    Если разрешены прерывания модуля, одновременно с установкой этого флага генерируется прерывание от SPI. 
    Также этот флаг устанавливается в 1 при переводе микроконтроллера из режима master в режим slave с помощью вывода SS. 
    Сброс флага происходит аппаратно, при вызове подпрограммы обработки прерывания или после 
    чтения регистра SPSR с последующим обращением к регистру данных SPDR.
    */
    
while(!(SPSR&BIT(SPIF)));
}

void InitAdc(void)
{
    
InitSPI();
    
ResetAdc;
    
EnADC;
    
AdcWr(0x21);  // 0010 0001 - Active Channel is Ain2(+)/Ain2(−), next operation as write to the clock register
    
AdcWr(0x4);   // 0000 0100 - //master clock enabled, 2.4576MHz Clock, set output rate to 20Hz
    
AdcWr(0x10);  // 0001 0000 - Active Channel is Ain1(+)/Ain1(−), next operation as write to the setup register
    
AdcWr(0b0011 1110);  // 0011 1110 - normal mode, 128 scale, unipolar,BUFFER ON, FSYNC off
    //while(PIND&4);
    //DisADC;
    //GICR |= BIT(INT0);
    //MCUCR |= BIT(ISC01);

С SPI не работал, но микрухи связывал по примерам распространенным в интернете. Помогите дописать код. Пишу в Атмел Студио 6. В даташите(AD7705) не понял на странице 36 не понял пример на Си.Инициализацию вроде правильно написал, а как дальше считывать не понял...
Реклама:

Последний раз редактировалось miwutka; 26.02.2014 в 14:10.
miwutka вне форума  
Непрочитано 27.02.2014, 15:17  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: ATmega16 + SPI + AD7705

админ, думаю тему можно удалять... Тут походу с этим никто не шуршал
miwutka вне форума  
Непрочитано 04.03.2014, 23:01  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,784
Сказал спасибо: 2,911
Сказали Спасибо 3,118 раз(а) в 2,109 сообщении(ях)
ForcePoint на пути к лучшему
Стрелка Re: ATmega16 + SPI + AD7705

Так - пойдёт? http://fulcrum.ru/cgi-bin/bbs/mess_sel.pl?v=p&FID=1&TID=2973&page=1
ForcePoint на форуме  
Непрочитано 04.03.2014, 23:20  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: ATmega16 + SPI + AD7705

Спасибо. На днях попробую. отпишусь.
miwutka вне форума  
Непрочитано 08.03.2014, 13:33  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: ATmega16 + SPI + AD7705

ForcePoint, спасибо, всё заработало после прочтения статьи на форуме. правильно инициировал СПИ и сигнал DRDY пришлось отключить от МК. У меня такая функция while ((PORTB&0x01)==1) - на порте 1 жду готовности АЦП. Там сигнал инверсный, я в них путаюсь. Может надо на 0 проверять? Подскажите что б уже всё корректно работало.
miwutka вне форума  
Непрочитано 08.03.2014, 14:26  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,784
Сказал спасибо: 2,911
Сказали Спасибо 3,118 раз(а) в 2,109 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: ATmega16 + SPI + AD7705

Сообщение от miwutka Посмотреть сообщение
ForcePoint, ... Подскажите что б уже всё корректно работало.
Не подскажу, сам не работал с этом АЦП.
ForcePoint на форуме  
Непрочитано 26.03.2014, 13:56  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 586
Сказал спасибо: 23
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: ATmega16 + SPI + AD7705

Сообщение от miwutka Посмотреть сообщение
Подскажите что б уже всё корректно работало.
Вот вырезал из своего проекта. Пишу в ИАР
Вложения:
Тип файла: rar AD7705.rar (61.3 Кб, 209 просмотров)
pifa вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто-нибудь работал с RF модулями nRF2401A? Easyrider83 Автоматика и аппаратура связи 1481 04.09.2021 23:24
Atmega16 - много переферийных устройств SPI pavned AVR 21 23.01.2013 07:00
Работа с EEPROM по SPI dominik2 Микроконтроллеры, АЦП, память и т.д 15 05.05.2012 00:24
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03
Atmega16, LCD, SPI sliam Микроконтроллеры, АЦП, память и т.д 8 26.04.2007 16:29


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


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