Sancho, а разжуйте плиз, почему
// PORTC &= (a>>8 | 0xFC); меняем на
PORTC &= (a>>6 | 0xF3); // вот здесь что такое a>>6 и 0xF3 ?
Создание блока ЦАП R-2R (DAC R-2R) на Arduino UNO, NANO
// PORTC &= (a>>8 | 0xFC); // сдвиг на восемь бит два старших бита из второго байта, т.к переносили для 0 и 1-го битов, и "или" с В1111 1100Ivan_Kornege писал(а): ↑04.03.2019{, 15:04}Sancho, а разжуйте плиз, почему
// PORTC &= (a>>8 | 0xFC); меняем на
PORTC &= (a>>6 | 0xF3); // вот здесь что такое a>>6 и 0xF3 ?
Вот так правильно?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); // запишем по "ИЛИ" чего у нас есть
а++;
}