|
SPI и Atmega128A |
|
|
|
Dec 14 2011, 08:03
|
Участник

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

|
Проблема: не получается принять данные. В даташите есть функция настройки SPI на мастер: // в ней есль только отправка данных, пытаюсь принимать данные с SPDR, но считываю лишь то что отсылаю! Код void SPI_MasterInit() { DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);//настраиваем на выход SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);//вкл SPI, ведущий, частота fck/16 } //функция передачи байта void SPI_MasterTransmit(char cData) { SPDR = cData;//начинаем передачу while(!(SPSR & (1<<SPIF)));//ждем пока передача завершится }
|
|
|
|
|
 |
Ответов
|
Dec 23 2011, 11:48
|
Участник

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

|
читается какая-то константа.... 12336 которая не зависит от входа на АЦП. но все равно большое спасибо! вот немного поменял, выход с АЦП FFFF Выкладываю обновленный код(без подпрограммы инициализации и вывода ЖКИ - он работает): Подпрограмма АЦП: CODE #include <avr/io.h> #include <avr/delay.h> #include <string.h> #include <avr/sfr_defs.h>
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; }
//Инициализация АЦП void ad7793_init(void) { int8_t i; spi_in(); for (i = 0; i < 4;i++) spi_rw(0xFF); /* настройка АЦП */ spi_rw(0b00010000); spi_rw(0b00010000); spi_rw(0b00000000); spi_rw(0b00101000); spi_rw(0b00000000); /* Калибровка */ spi_rw(0b00001000); spi_rw(0b11000000); spi_rw(0b10000001); _delay_ms(10); loop_until_bit_is_clear(DDR_SPI,DD_MISO); spi_rw(0b00001000); spi_rw(0b10100000); spi_rw(0b10000001); _delay_ms(10); loop_until_bit_is_clear(DDR_SPI,DD_MISO); }
//Установка режима работы void ad7793_mode_set(unsigned char mode) { spi_rw(0b00001000); if (mode == 0) { spi_rw(0b00000000); } else spi_rw(0b00100000); spi_rw(0b10000001); }
uint16_t t;
uint16_t ad7793_data_get(void) { t = 0; loop_until_bit_is_clear(DDR_SPI,DD_MISO); spi_rw(0x58); t = (uint16_t)(spi_rw(0xFF) << 8); t |= spi_rw(0xFF); return t; }
Главная программа: CODE #include <avr/io.h> #include <avr/delay.h> #include "lcd.h" #include <stdio.h> #include "adc2.c"
void main(void) { char text[6]; unsigned int n=0; double adc; lcd_init(); lcd_write("Autorising..."); ad7793_init(); DDRD = (1 << 4); ad7793_mode_set(0); seconds(1); lcd_init(); lcd_write("Autorising..."); seconds(1); while (1) { adc = ad7793_data_get(); seconds(1); dtostrf(adc,6,0,text); lcd_send(COMMAND, LCD_CLEAR); DDRD = (1 << 4); lcd_write(text); DDRD = 0x00; }
}
|
|
|
|
Сообщений в этой теме
ADEPTPS SPI и Atmega128A Dec 14 2011, 08:03 hd44780 SPI отсылает и принимает ОДНОВРЕМЕННО.
Т.е. чтобы ... Dec 14 2011, 08:13 arttab есть такое. причем когда мастер только передает и ... Dec 15 2011, 01:27 Сергей Борщ QUOTE (arttab @ Dec 15 2011, 03:27) есть ... Dec 15 2011, 07:43 ADEPTPS А как мне быть если ответом будет слово? Dec 15 2011, 07:29 ADEPTPS судя по последней конструкции, один байт отдали - ... Dec 15 2011, 07:52 hd44780 SPI всегда и везде принимает только байты. По край... Dec 15 2011, 09:09 usav а у меня один байт отдали - слово приняли
-------... Dec 16 2011, 12:21 ADEPTPS Посмотрите кто-нибудь мой код, если не трудно, на ... Dec 23 2011, 10:45 Tolyaha Цитата(ADEPTPS @ Dec 23 2011, 11:50) Посм... Dec 23 2011, 10:55 ADEPTPS Спасибо, сейчас попробую!
SPI завелся вроде, ... Dec 23 2011, 11:04 Tolyaha Цитата(ADEPTPS @ Dec 23 2011, 13:04) Спас... Dec 23 2011, 11:16 Tolyaha Давай попорядку, проверим связь и прочитаем статус... Dec 23 2011, 11:59 ADEPTPS у меня это получается _delay_ms(5000); = 500 мс
е... Dec 23 2011, 12:09 Tolyaha Попрежнему хочу проверки связи, чтением статус рег... Dec 23 2011, 12:23 ADEPTPS FF читает... значит связи нет( Dec 23 2011, 12:35 Tolyaha Цитата(ADEPTPS @ Dec 23 2011, 14:35) FF ч... Dec 23 2011, 12:45 ADEPTPS рабочий день заканчивается, буду завтра уже дальше... Dec 23 2011, 12:45 ADEPTPS И я снова здесь! Перекорачиваю MISO на общий, ... Dec 26 2011, 07:54 Палыч АЦП имеет ногу Chip Select (CS), которой нужно ... Dec 26 2011, 08:09 hd44780 Цитата(ADEPTPS @ Dec 26 2011, 09:54) НА M... Dec 26 2011, 08:30 Tolyaha А как же это?
Цитата(ADEPTPS @ Dec 26 2011, ... Dec 26 2011, 11:53  ADEPTPS Цитата(Tolyaha @ Dec 26 2011, 15:53) А ка... Dec 28 2011, 09:00   Tolyaha Цитата(ADEPTPS @ Dec 28 2011, 11:00) Но с... Dec 28 2011, 13:31 ADEPTPS да, Вы правы, а когда нужно "дрыгать"? Dec 26 2011, 08:20 Палыч Цитата(ADEPTPS @ Dec 26 2011, 12:20) когд... Dec 26 2011, 08:46 ADEPTPS Спасибо, сейчас попробую! Dec 26 2011, 08:49 Tolyaha Ноль на CS обязательно, если АЦП рабочий, то на вы... Dec 26 2011, 09:35 ADEPTPS SPI все же не работает, поскольку на CLK весит 5В ... Dec 26 2011, 11:38 ADEPTPS CLK поймал:
1. я снимал показания раз в секунду
2.... Dec 29 2011, 08:23 Tolyaha Стоп машина, а PB1 (SCK) МК куда у Вас подключен??... Dec 29 2011, 12:58 ADEPTPS Подсоединено все правильно, так как использую отла... Dec 29 2011, 14:14 Tolyaha Цитата(ADEPTPS @ Dec 29 2011, 16:14) ////... Dec 30 2011, 06:41 ADEPTPS Настроил внутренний источник 64кГЦ, эффект тот же,... Dec 30 2011, 06:15 ADEPTPS ЦАП и FLASH - опционально устанавливаются - ИХ НЕТ... Dec 30 2011, 06:42 Tolyaha Тогда проверяем связь.CODE
PORTB = 0xff;
... Dec 30 2011, 07:03 ADEPTPS выдает 0... АЦП что-ли накирнулось... Dec 30 2011, 07:37 Tolyaha Цитата(ADEPTPS @ Dec 30 2011, 09:37) выда... Dec 30 2011, 07:47 ADEPTPS 3 пин -0; - есть!!!
1,16 пин -1; - ест... Jan 10 2012, 05:00 Tolyaha Цитата(ADEPTPS @ Jan 10 2012, 07:00) 15 п... Jan 10 2012, 07:46 ADEPTPS тогда придется перепаивать... Jan 10 2012, 08:34 yanvasiij Люди, если все получилось поделитесь исходниками д... Sep 25 2013, 10:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|