Цитата(mempfis_ @ Nov 5 2009, 12:50)

Открываете в документации страницы посвящённые SPI - там готовый работающий код инициализации, отсылки и приёма байта по SPI.
Всё остальное зависит от вашего ЦАП название которого вы даже не потрудились привести.
Также вы не уточнили что конкретно не получается.
Сори за безграмотность...
Хочу соеденить ATMega8 и MCP4821, хотя можно и любой другой DAC.
Для начало хочу задать вопрос: Как их соеденять (См. картинку)...
Вопрос второй: можно ли проверять SPI не подключая DAC, т.е. подключить только осцилограф...
А вот и код по инициализации и передачи по SPI, правельный ли он(Например я хочу передать на DAC байт 0x10101010)?
Код
#include <avr\io.h>
#define DD_MOSI PINB3
#define DD_SCK PINB5
#define DDR_SPI PORTB
void SPI_MasterInit(void)
{
// Set MOSI and SCK output, all others input
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
// Enable SPI, Master, set clock rate fck/16
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)));
}
int main(void) {
SPI_MasterInit();
SPI_MasterTransmit(0x10101010);
while(1) {
}
}
Заранее огромное спасибо!
Причина редактирования: Оформление цитаты исходника.
Эскизы прикрепленных изображений