ЦАП R-2R (DAC R-2R) на Arduino

Создание блока ЦАП R-2R (DAC R-2R) на Arduino UNO, NANO

Создаем свой блок. Вопросы, помощь знатоков.
Аватара пользователя
Ivan_Kornege
Лейтенант
Сообщения: 342
Зарегистрирован: 29.04.2017{, 08:24}
Репутация: 27
Откуда: гАндурас
Имя: Ivan

ЦАП R-2R (DAC R-2R) на Arduino

#21

Сообщение Ivan_Kornege » 04.03.2019{, 15:04}

Sancho, а разжуйте плиз, почему
// PORTC &= (a>>8 | 0xFC); меняем на
PORTC &= (a>>6 | 0xF3); // вот здесь что такое a>>6 и 0xF3 ?

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#22

Сообщение Sancho » 04.03.2019{, 15:14}

Ivan_Kornege писал(а):
04.03.2019{, 15:04}
Sancho, а разжуйте плиз, почему
// PORTC &= (a>>8 | 0xFC); меняем на
PORTC &= (a>>6 | 0xF3); // вот здесь что такое a>>6 и 0xF3 ?
// PORTC &= (a>>8 | 0xFC); // сдвиг на восемь бит два старших бита из второго байта, т.к переносили для 0 и 1-го битов, и "или" с В1111 1100
PORTC &= (a>>6 | 0xF3); // вот здесь что такое a>>6 и 0xF3 ?
Так как в новом варианте биты 2 и 3, то сдвигаем на шесть и "ИЛИ" с В1111 0011

Отправлено спустя 33 минуты 24 секунды:
Возможно, сейчас подумал, в моей идее есть косячок :)
Нужно будет записывать регистр С в два этапа:
PORTC &= 0xF3; // переведём два бита, второй и третий, принудительно в ноль, а затем
PORTC |= (a>>6 & 0x0C); // запишем по "ИЛИ" чего у нас есть
Иначе по "И" записать поверх нулей единицы не получится. Так-же, как и по "ИЛИ" нули поверх единиц.
Надеюсь, автор темы читает :) и кто-нибудь попробует

Отправлено спустя 3 минуты 18 секунд:
Сори.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Ivan_Kornege
Лейтенант
Сообщения: 342
Зарегистрирован: 29.04.2017{, 08:24}
Репутация: 27
Откуда: гАндурас
Имя: Ivan

ЦАП R-2R (DAC R-2R) на Arduino

#23

Сообщение Ivan_Kornege » 04.03.2019{, 16:12}

Вот уже ответили не успел спросить про перезапись пока ужин унчтожал.
А то на службе крутой программер начал критиковать FLp. Ну и т.д. как всегда .

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#24

Сообщение AVGN » 04.03.2019{, 17:48}

Sancho писал(а):
04.03.2019{, 15:51}
Возможно, сейчас подумал, в моей идее есть косячок :)
Нужно будет записывать регистр С в два этапа:
PORTC &= 0xF3; // переведём два бита, второй и третий, принудительно в ноль, а затем
PORTC |= (a>>6 & 0x0C); // запишем по "ИЛИ" чего у нас есть
Иначе по "И" записать поверх нулей единицы не получится. Так-же, как и по "ИЛИ" нули поверх единиц.
Надеюсь, автор темы читает :) и кто-нибудь попробует
Вот так правильно?
СпойлерПоказать

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

setup ()
{

DDRD = 0xFF; // все выход
//DDRC = DDRC | 0x03; // 0 и 1 выход
DDRC = DDRC | 0x0C; //устанавливаем цифровые выводы PC2 и PC3 в качестве выходов
}

loop ()
{
//PORTD = a & 0xFF; // здесь младшие
//PORTC &= (a>>8 | 0xFC); // грузим только в два младших бита старшие входного

PORTC &= 0xF3; // переведём два бита, второй и третий, принудительно в ноль, а затем
PORTC |= (a>>6 & 0x0C); // запишем по "ИЛИ" чего у нас есть
а++;

} 



Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

ЦАП R-2R (DAC R-2R) на Arduino

#25

Сообщение Sancho » 04.03.2019{, 19:02}

AVGN, Вот так
DAC R-2R 10bit_test_01.flp
(341.44 КБ) 64 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ЦАП R-2R (DAC R-2R) на Arduino

#26

Сообщение AVGN » 04.03.2019{, 19:24}

Sancho, спасибо.
Изменил проект поставил другой блок энкодера (с библиотека Encoder.h) и подключил к 10 и 12 ноге ардуино
DAC R-2R 10bit_test_01_FLP4_2_4.flp
(336.34 КБ) 78 скачиваний
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Ответить

Вернуться в «Разработка пользовательских блоков»