Страница 1 из 1

AD8400 и AtMega16 не дружат

Добавлено: Сб фев 22, 2020 21:42:46
alex1126
Взял атмегу16 и ад8400. подключил вот так:
2020-02-22_15-31-00.png
(12.16 КБ) 140 скачиваний
2020-02-22_15-30-08.png
(7.76 КБ) 115 скачиваний
пишу код:

Код: Выделить всё

#define PORT_SPI     PORTB/*назначения портов и сигналов*/
#define DDR_SPI      DDRB

#define SDI          PB6 /*MiSO*/
#define CKL          PB4 /*SS*/
#define CS           PB7 /*SCK*/

void SPI_init(void) {
 /*настройка портов ввода-вывода*/   
	DDR_SPI  |=  (1<<SDI) | (1<<CKL) | (1<<CS);//все сигналы выходы
	PORT_SPI |=  (1<<CS) ;//с лог. 1
	PORT_SPI &= ~(1<<SDI);//и лог. 0
	PORT_SPI &= ~(1<<CKL);//      
}
void SPI_WriteByte(uint8_t data)
{
    unsigned char i;//переменная для цикла
	unsigned int addr_value;//промежуточная переменная для вычисления управляющего слова
 
	addr_value = ((unsigned int) (0<<8)) | ((unsigned int) data);//формируем управляющее слово из двух бит адреса и байта сопротивления	
	PORT_SPI &= ~(1<<CS);//выбор микросхемы. CS в 0
 
	for(i=0; i < 10; i++)//для 10 бит управляющего слова 
	{       if(0x0001 & (addr_value>>(9-i))) PORT_SPI |= (1<<SDI);//если бит-единица, то и выставляем единицу
		else PORT_SPI &= ~(1<<SDI);//иначе - выставляем ноль
		PORT_SPI |=  (1<<CKL);//фронт синхроимпульса
	    PORT_SPI &= ~(1<<CKL);//спад синхроимпульса
	}
    PORT_SPI |=  (1<<CS);//не выбираем микросхему. CS в 1	
}
В результате ничего не меняется. Мерил мультиметром - никаких изменений. В протеусе осилографом смотрел, вроде все норм. CS опускается, клоки клокают, данные прыгают.

В чем косяк?
Думал может слишком быстро. Атмега 8 мегагерц. 1/8000000 получается 125 нано секунд, этого с запасом хватает, по даташиту на 8400 там единицы наносекунд на переключения.
В чем еще может быть дело?

Добавлено after 6 hours 5 minutes 3 seconds:
Нашел на амперке тему про 8400, там он глючил, инога выставляя неверные значения. Но в большинтве случаев работал. Решилось все подтянув линии к питанию. Но там длина проводников 17 см. У меня они вплотную стоят практически, около 1 см длина проводников и у меня вообще не реагирует.
Могла она сдохнуть? Читал что к статике очень чувствительна. Как ее проверить?

Re: AD8400 и AtMega16 не дружат

Добавлено: Вт фев 25, 2020 23:44:23
alex1126
ну может хоть идеи есть у кого какие

Re: AD8400 и AtMega16 не дружат

Добавлено: Чт фев 27, 2020 22:07:24
alex1126
Отбой. Мне повезло вытащить мертвую микросхему с первого раза :)