August 14th, 2012

Диалог на работе (вместо работы). Опять о Pussy Riot

Коллега: - Их надо посадить, чтобы они не (*далее приводится список того, что "не", начиная от пресловутого "насрали в твоей квартире", заканчивая "насиловали твоих детей"*)
Я: - Надо бы ещё верующих, что у меня под окнами к церкви шастают, посадить. Пока они не начали за мной бегать с топором и обращать моих детей в свою веру.
Коллега: - А верующих-то за что?

бля

DAC7512(2)

Перевязал схему так, что данные идут от микроконтроллера к ЦАПу сквозь ПЛИС, но без каких-либо изменений (т.е. ПЛИС выполняет роль крутой такой перемычки между выводами микросхем). Подал линейно растущие коды - артифакта нет.

Похоже, ЦАП не виноват - это я сам где-то налажал.


Победил. Лажа была отчасти моей - я немного напутал порядок записи байтов :) Это когда идёт чтение, то сначала читается младший (что вызывает защёлкивание старшего байта в теневой регистр), потом читается старший (как раз из "тени"). Но когда идёт запись, то порядок обратный - сначала записывается старший в "тень", потом уже младший (и это вызывает фактический перенос данных из "тени" в старший регистр). Я же ошибся и перепутал порядок следования при записи. Поэтому так и получалось, что при изменении младшего байта он мог не записаться куда надо (т.е., например, в регистре лежало 0x01FF, и мы пытаемся записать туда 0x0200 - но фактически записывается 0x02FF, что и вызывает 200 мВ скачок на выходе)

На всякий случай, ввёл ещё один синхронизирующий регистр, чтобы подстраховаться на предмет "а чё будет, если контроллер захочет чё-нть записывать/считывать точно в тот момент, когда идёт перенос данных".

Но попутно нашлось нечто странное, как обычно.
Когда я пишу в теневой регистр ЦАП, то включаю флажок "данные ждут переноса". Оный флажок анализируется при записи в младший регистр, и если он установлен, то это и вызывает перенос всех шестнадцати бит сразу. Но почему-то при этом данный флажок таинственным образом стал влиять на доступность данных АЦП, хотя он никак и нигде на них не завязан! Бред какой-то.