реклама на сайте
подробности

 
 
> ATmega8 SPI ADS1242, Работа с SPI
URANst
сообщение Jan 21 2008, 13:04
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 83
Регистрация: 2-02-06
Пользователь №: 13 912



Пытаюсь наладить связь ATmega8 (7.3728 MHz) с ADS1242 (2.4576 MHz) по SPI (WinAVR).
Вопрос : как узнать что пришли данные от ADS1242.
Инициализирую SPI ATmega8 как мастер:
void SPI_MasterInit(void) {
// MOSI,SCK,SS на выход, MISO на вход
DDRB=0x2E;
// Включение SPI, мастер, частота /32
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1);
SPSR = (1<<SPI2X);
PORTB|=(1<<2);
void SPI_Transmit(unsigned char cData) {
/* Запуск передачи данных */
SPDR = cData;
/* Ожидание завершения передачи данных */
while(!(SPSR & (1<<SPIF)));

В документации на ADS1242 написано, что для чтения данных из регистра нужно послать команду
Encoding: 0001 rrrr xxxx nnnn (rrrr - номер первого регистра для чтения, nnnn читать колличество регистров после первого )

Читаю так:
PORTB&=(~(1<<2));//выбор чипа SS=0;
SPI_Transmit(0x10);//читать регистр с номером 0x00
SPI_Transmit(0x01);// читать 2 регистра начиная с первого
_delay_us (25);// задержка по даташиту мин. 50 Tosc(2.4576)
USART_Transmit(SPDR);//пытаюсь прочитать присланные данные
PORTB|=(1<<2);//SS выставляю в 1 для сброса
читаються то 0x00 то 0xFF
Как понять что данные о первом регистре уже пришли их нада прочитать, ну а затем соответственно и данные от второго регистра
Подскажите что не так

Сообщение отредактировал URANst - Jan 21 2008, 13:22
Прикрепленные файлы
Прикрепленный файл  ADS1242.pdf ( 404.04 килобайт ) Кол-во скачиваний: 174
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
URANst
сообщение Jan 21 2008, 17:29
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 83
Регистрация: 2-02-06
Пользователь №: 13 912



Цитата
SPI_Transmit(0xAA); //На самом деле, неважно что посылатьUSART_Transmit(SPDR); //Посылаем данные из первого регистраSPI_Transmit(0xAA); //Тут тоже неважно что посылатьUSART_Transmit(SPDR); //Посылаем данные из второго регистра


Что то я вас не пойму : что значит неважно что посылать ? Там помойему четко написано : для того что бы прочитать регистр нужно записать 0001 - номер регистра(4 бита) - количество регистров(8 бит): всего 2 байта.
Может вы не совсем поняли USART_Transmit(SPDR); читает принятые от АЦП данные и посылает по RS232.
Так вот я спрашивал как мне узнать что из 2-ух байт, которые должны прити, сейчас пришел первый из них, а потом второй . Я имею ввиду может SPIF какой устанавливается или еще что. И еще как поступать если програмирую ATmega8 по SPI. Это оказывает какое влияние на АЦП и если да то что делать. Пока при попытке прочитать шлю 00010000 00000000 (прочитать значение регистра с номером 0x00) принимаю строго 0xFF. Что за ерунда кто скажет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- URANst   ATmega8 SPI ADS1242   Jan 21 2008, 13:04
- - Master   Цитата(URANst @ Jan 21 2008, 16:04) ... P...   Jan 21 2008, 15:31
- - Aesthete Animus   2URANst Я полагаю, что должно быть так: Код#incl...   Jan 21 2008, 18:27
- - URANst   До чтения данных оцифровки я еще не дошел (комманд...   Jan 21 2008, 19:17
- - Aesthete Animus   2URANst Вот я попытался изобразить функции чтения/...   Jan 21 2008, 20:11
- - URANst   Люди подскажите что за ерунда ! #define SPI_PO...   Jan 22 2008, 08:36
|- - Master   Цитата(URANst @ Jan 22 2008, 11:36) ... П...   Jan 22 2008, 11:16
- - URANst   Выкладываю полный текст программы. После прихода к...   Jan 22 2008, 13:28
- - Aesthete Animus   Цитата(URANst @ Jan 22 2008, 16:28) Выкла...   Jan 22 2008, 15:03
|- - aesok   Цитата(Aesthete Animus @ Jan 22 2008, 18...   Jan 22 2008, 15:30
- - proba   исползую ADS1243 ( 2,43MHz) с Mega16 ( 4,0MHz ). ...   Jan 22 2008, 16:49
- - URANst   Уважаемый proba, что вы имели ввиду под Кодdelay ...   Jan 22 2008, 19:06
|- - aesok   Код#include <avr/delay.h> или #include ...   Jan 22 2008, 19:19
|- - Aesthete Animus   Отвечу выборочно: Цитата(URANst @ Jan 22 200...   Jan 22 2008, 19:30
- - proba   переписал в более пoнятныи формат. в даташите там...   Jan 22 2008, 19:19
|- - aesok   Цитата(proba @ Jan 22 2008, 22:19) { unsi...   Jan 22 2008, 19:23
- - proba   Цитата(aesok @ Jan 22 2008, 23:23) Этот к...   Jan 23 2008, 08:48
- - URANst   КодНаписал вот такой код: #include <avr/io...   Jan 23 2008, 09:18
|- - Aesthete Animus   Цитата(URANst @ Jan 23 2008, 12:18) Кодun...   Jan 23 2008, 09:34
- - URANst   Извините не удалил это функции. Я их пока не испол...   Jan 23 2008, 10:15
- - proba   Цитата(URANst @ Jan 23 2008, 13:18) Задер...   Jan 23 2008, 10:33
- - URANst   ВЫ имеете ввиду DRDY ? Поправте меня если я не пра...   Jan 23 2008, 11:35
- - mdmitry   Иногда проблемы возникают из-за инициализации SPI ...   Jan 23 2008, 20:50
- - URANst   УРААААААААА !!!!! Да действите...   Jan 24 2008, 07:13
- - URANst   Возникло еще парочку вопросов. Когда выставляю оци...   Jan 31 2008, 10:02
- - kostik2   пытаюсь работать с ads1243ipwt квару ads 4.9152, к...   Apr 19 2009, 07:11


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016