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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> SPI и Atmega128A
Tolyaha
сообщение Dec 23 2011, 12:23
Сообщение #16


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

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



Попрежнему хочу проверки связи, чтением статус регистра

CODE

for (i = 0; i < 4;i++) spi_rw(0xFF);
_delay_ms(10);
/*проверкка связи с АЦП */
spi_rw(0x40);//настройка АЦП для чтения STATUS регистра
spi_rw(0xFF);//должно прочитаться 0x80 (AD7792)/0x88 (AD7793)


Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 23 2011, 12:35
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



FF читает... значит связи нет(
Go to the top of the page
 
+Quote Post
Tolyaha
сообщение Dec 23 2011, 12:45
Сообщение #18


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

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



Цитата(ADEPTPS @ Dec 23 2011, 14:35) *
FF читает... значит связи нет(

а осцыла нету? проверь хоть проц, когда закорачиваеш MISO (вход SPI) на общий должно вместо 0xFF читать 0x00
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 23 2011, 12:45
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



рабочий день заканчивается, буду завтра уже дальше разбираться... Спасибо!

цифровой осциллограф есть, но уже выходные...

Сообщение отредактировал ADEPTPS - Dec 23 2011, 12:47
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 26 2011, 07:54
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



И я снова здесь! Перекорачиваю MISO на общий, ноль появляется!

- Осцилограф показал, что НА MOSI, MISO и CLK висит постоянная "1". т.е. 5 В

Сообщение отредактировал ADEPTPS - Dec 26 2011, 08:04
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 26 2011, 08:09
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



АЦП имеет ногу Chip Select (CS), которой нужно "дрыгать" в определенные моменты... Что-то подобного я у Вас не нахожу... Плохо смотрел?
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 26 2011, 08:20
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



да, Вы правы, а когда нужно "дрыгать"?

Сообщение отредактировал ADEPTPS - Dec 26 2011, 08:26
Go to the top of the page
 
+Quote Post
hd44780
сообщение Dec 26 2011, 08:30
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(ADEPTPS @ Dec 26 2011, 09:54) *
НА MOSI, MISO и CLK висит постоянная "1". т.е. 5 В


На CLK (выход синхронизации) мастера (вашей Mega128) при передаче ВСЕГДА должны быть импульсы. Вне зависимоси от того, что вы передаёте - хоть нули, хоть что.

Если их нету, 2 варианта:
1. Неправильно сконфигурировали SPI.
2. "Неправильный" контроллер - брак, сгорел SPI и т.п.

Хотя, если бы он сгорел, то он наверняка бы и не прошивался ....

Цитата(ADEPTPS @ Dec 26 2011, 10:20) *
когда нужно "дрыгать"?


1. CS=0 (м.б. 1 - уточите в ДШ на ваш АЦП).
2. Любой обмен данными
3. CS=1 (или 0).

Иначе АЦП просто пропустит ваши команди и всё остальное мимо ушей biggrin.gif .


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 26 2011, 08:46
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(ADEPTPS @ Dec 26 2011, 12:20) *
когда нужно "дрыгать"?

Установили СS в низкий - передали/прочитали нужное число байт для записи/чтения в регистр - поставили CS в высокий уровень.
Исключение можно сделать только для режима Continuous Read, ну ещё можно и для режима Continuous Conversion (для последнего - можно, но не обязательно). В этих режимах: CS - низкий в начале режима, по окончанию режима - высокий уровень.
Всё это описано/нарисовано в DS.
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 26 2011, 08:49
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



Спасибо, сейчас попробую!
Go to the top of the page
 
+Quote Post
Tolyaha
сообщение Dec 26 2011, 09:35
Сообщение #26


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

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



Ноль на CS обязательно, если АЦП рабочий, то на выходе данных (17 вывод) будет видна частота около 4 Hz (готовность данных). По умолчанию АЦП работает циклически с частотой 4Hz.

Вобще, если работаеш только с одним АЦП по этим линиям связи, то можно CS навсегда запаять на ноль.
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 26 2011, 11:38
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



SPI все же не работает, поскольку на CLK весит 5В ("еденичка"), вот что было последнее по настройке SPI (то что используется сейчас):

CODE

void spi_in(void)
{
#define DDR_SPI DDRB
/*#define CPOL 3
#define CPHA 2
#define SPE 6
#define MSTR 4
#define SPR0 0
#define SPIF 7 */
#define DD_SS 0
#define DD_MOSI 2
#define DD_MISO 3
#define DD_SCK 1
PORTB |= (1<<DD_SCK)|(1<<DD_MOSI)|(1<<DD_MISO);
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
DDR_SPI &= ~(1<<DD_MISO);
//SPSR |= (1<<SPI2X);
SPCR |= (1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA);
}

uint8_t spi_rw(uint8_t Data)
{
SPDR = Data;//начинаем передачу
while((SPSR & (1<<SPIF)) == 0);//ждем пока передача завершится
Data = SPDR;
return Data;
}
Go to the top of the page
 
+Quote Post
Tolyaha
сообщение Dec 26 2011, 11:53
Сообщение #28


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

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



А как же это?

Цитата(ADEPTPS @ Dec 26 2011, 09:54) *
И я снова здесь! Перекорачиваю MISO на общий, ноль появляется!


Может не заметили в осциллограф?
Go to the top of the page
 
+Quote Post
ADEPTPS
сообщение Dec 28 2011, 09:00
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 5-05-09
Пользователь №: 48 683



Цитата(Tolyaha @ Dec 26 2011, 15:53) *
А как же это?



Может не заметили в осциллограф?


Но сигнал тактирования (CLK) то отсутствует....

еще раз проверил на осциллографе

Сообщение отредактировал ADEPTPS - Dec 28 2011, 09:09
Go to the top of the page
 
+Quote Post
Tolyaha
сообщение Dec 28 2011, 13:31
Сообщение #30


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

Группа: Свой
Сообщений: 116
Регистрация: 2-03-07
Из: Украина
Пользователь №: 25 826



Цитата(ADEPTPS @ Dec 28 2011, 11:00) *
Но сигнал тактирования (CLK) то отсутствует....

Если точно SCK отсутствует (а не осцил неправильно настроен), то вариантов 2:
- или Вы в программе кроме показанного участка порты перенастраиваете;
- или пин у контроллера не работает.
Если SPI чувствует FF или 00 ( при закорачивании) значит он включен и вход MISO работает.
Проверте осцилом порты SCK и MOSI (PB1, PB2) настраивая их на вывод 0 (может залепуха или пробой пина).

Go to the top of the page
 
+Quote Post

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

 


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


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