Технический форум по робототехнике.
The_Kurs » 03 июн 2007, 10:41
Подскажите каким образом можно подключить ЦАП DAC8552 к ATmega16?
Tracer » 03 июн 2007, 11:13
По SPI интерфейсу
MCU DAC
CLK ---- SCK
SS-------SYNC
MOSI----DI
Выдвигаеш по три байта 1й -Команда 2й-3й - Данные
Дальше в соответствии с даташитом.
The_Kurs » 03 июн 2007, 11:24
Спасибо !
The_Kurs » 10 июн 2007, 17:18
Подключил ЦАП к микроконтроллеру а как превельно на него данные передавать что то неполучается?
Можно так ?
SPI_MasterTransmit(0x34ffff)
или SPI_MasterTransmit(0b001101001111111111111111) Если я правельно понял при правельной передачи информации в ЦАП на выходе будут Vref ???
В даташите на Мега16 передача по SPI
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
}
строчку while(!(SPSR & (1<<SPIF))) можно заменить на while(!(SPSR.7)) ???
Tracer » 11 июн 2007, 10:58
Смотри внимательнее - void SPI_MasterTransmit(char cData)
1. CHAR это ОДИН байт А ты сколько ему даешь?
2. SS-ом кто управляет? По диаграмме его нужно держать в ЛОУ пока все три байта не передадутся.
The_Kurs » 11 июн 2007, 15:01
Спасибо действительно я не управлял SS.
Как я понял при передаче трёх байт SS - LOW остальное в HIGHT состоянии.
Сперва передаю три байта первого канала, потом три байта второго канала.
Вроде работает.
PORTB.4=0;
SPI_MasterTransmit(команда)
SPI_MasterTransmit(байт1)
SPI_MasterTransmit(байт2)
PORTB.4=1;
Ещё один вопрос а что за режим в высокоимпедансном состоянии ??? Это резистор чтоль на +Vcc цепляют ??? Для чего он ???
Tracer » 11 июн 2007, 15:03
Теплее :wink:
Высокоимпедансное состояние или режим Z нужно чтобы устройства сидящие на общей шине могли отключаться от нее и не влиять на сигнылы проходящие там
Ты же на SPI можеш повесить кучу устройств и выбирать их посредством SS
The_Kurs » 11 июн 2007, 15:22
Ясно спасибо. Интересно)))
The_Kurs » 13 июн 2007, 09:00
Попробовал вывести на него WAV файл через USART с компа. Что то неполучается одни шумы выходят.
В вав файле (моно) после заголовка идут непосредственно данные сделал 16-ти битные с частотой дискретизации 7100Гц. Скорость USARTа установил 115200бит/сек. Поидее должны были пройти 16*7100=113600бит/сек
Tracer » 13 июн 2007, 16:26
Найди три отличия в словах USART и SPI
Ты посмотри на протокол USARTа и на протокол SPI :lol:
Или уточни что куда ты выводил Я чтото не врубился
The_Kurs » 15 июн 2007, 09:01
В общем взял МК ATmega16 (тактируется кварцем 14,31Мгц) подключил его по USART(скорость 115,2кбит) к ПК, а на SPI(клок рэйтэ =894кГц) повесил DAC.
С ПК отсылаю из WAV файла данные и в МК тут же вывожу их на DAC.
Параметры WAV частота дескритизации 7100Гц 16бит.
Вместо звука слышен шум (((.
И сделал что бы каждый цикл приёма- передачи данных светодиод мигал. Померял частоту его мигания всего 1кГц (((
Tracer » 15 июн 2007, 11:48
А с какой скоростью ты свои 16 бит заносиш в DAC?
Ты на 115к предаешь их в МК и сразу на DAC?
Если запись с дискретизацией 7к то заносить их надо с той же скоростью Т.е DAC должен получать 7к слов (16 бит) в сек.
Согласуй скорости.
The_Kurs » 15 июн 2007, 14:04
Параметры SPI задавал через код визард(как в примерах на avr123) там установил клок рэйт 894кГц это и есть скорость передачи по SPI ???
Принимаю 16 бит с юсарт и сразу же передаю па ДАС чарез SPI.
В файле вав 16 бит данных как хронится ? Сперва первые 8 потом вторые ??? Или местами поменяны как например поля длины файла ???
Tracer » 15 июн 2007, 14:35
C WAV не работал знаю что вроде как просто тупая оцифровка в них Может и ошибаюсь
Но в любом случае подход один
1. 115К /20(старт+8бит+стоп+старт+8бит+стоп)=5К7 - маловато :о(
2. 894К / 24 (3 байта) = 37КСлов/с
А оцифровка 7КСлов/с
Почуствуйте разницу
3. Ввод буферируется?
4.(или 1)Вообще каналы
MCU->PC, MCU->DAC проверены? на примерчиках попроще чем сразу ВАВы гнать?
The_Kurs » 15 июн 2007, 14:59
Завтро досконально буду тестить ... синусоиду гнать по каналу.
Частоту дискретизации менял от 7,1кГц до 2кГц.
По поводу пункта 1 и пункта 2. На юсатр не учёл стоповые и стартовые биты. Частоту специально подбирал 7,1 равную скорости передачи (ошибся нуна 5,1было брать ) при условии что скорость передачи по SPI много больше и ей можно пренебреч для начала.