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

 
 
> 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 22 2008, 19:06
Сообщение #2


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

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



Уважаемый proba, что вы имели ввиду под

Код
delay !!! a = 6; while (a--); // @ 4MHz

Код
delay !!! a= 60; While (a--); // @4MHz


Я так понимаю что
Код
a = 6
и
Код
a= 60
- это задержка в периодах, тока подскажите
в периодах чего ? тактовой ATmega8 (7.3728 MHz) или ADS1242 (2.4576 MHz) или частоты SPI (7.3728 MHz/128).
proba может вы мне вышлите какую нить вашу схемку с ADS1242 и файл прошивки (.с) (очень интересно посмотреть) mail:URANstin@mail.ru
А зачем задержка
Код
delay !!! a = 6; while (a--); // @ 4MHz
, в даташите вроде ненаписано что
такую нада использовать.


Подскажите как описать задержку.
Я делаю так:
Код
#include <avr/delay.h> или #include <util/delay.h>
_delay_loop_2(100) ? - 100 в каких единицах ?
_delay_us(50);

Похоже что не работает.

aesok !

Код
1. Совпадат ли значения макроса F_CPU в makefile с реальной частотой контроллера?
да

Код
2. Какой уровень оптимизации вы используете.
s

Код
3. В описании функци _delay_ms обратите внимание на предложение:
The maximal possible delay is 262.14 ms / F_CPU in MHz.
то есть у меня макс 262,14/7,3728=35 ms, а если мне нужна задержка в 1 сек так что цикл лепить.
Как делаете вы задержки.

Извините за ламерские вопросы с WinAVR тока начал работать, сразу понравильсь а ща вот так smile.gif)
И еще подскажите какой WinAVR вы пользуетесь, и где ее можно скачать ? мож у меня версия кривая.
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Jan 22 2008, 19:30
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Отвечу выборочно:

Цитата(URANst @ Jan 22 2008, 22:06) *
Подскажите как описать задержку.
Я делаю так:
Код
#include <avr/delay.h> или #include <util/delay.h>
_delay_loop_2(100) ? - 100 в каких единицах ?
_delay_us(50);

Во первых, именно так (во всяком случае, в верссии 1.4.3)
Код
#include <util/delay.h>


_delay_loop_2(N) соответствует задержке в 4N тактов процессора, плюс задержка на инициализацию цикла. Таким образом, при частоте кварца контроллера 16МГц, _delay_loop_2(4) даст задержку в одну микросекунду. Советую прочитать внимательно документацию, во избежании непредвиденных эфектов.
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
- - URANst   ЦитатаSPI_Transmit(0xAA); //На самом деле, неважно...   Jan 21 2008, 17:29
- - 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
|- - aesok   Код#include <avr/delay.h> или #include ...   Jan 22 2008, 19:19
- - 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 Текстовая версия Сейчас: 31st July 2025 - 13:26
Рейтинг@Mail.ru


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