Не, я в ардуину не умею. Как я уже писал, я в принципе AVR не умею. Да и уровень "писательства" у меня ооооочень любительский. Например конструкции типа DDRB |= ((1<<PORTB2)|(1<<PORTB3)|(1<<PORTB5)); вызывают у меня легкое головокружение, предпочитаю DDRB=0b00101100;. Для всех своих поделок всегда использовал PIC, пишу в MPLab с компилятором HI Tech PICC. Просто для этого проекта оказалась очень удобна мега88, коих у меня горсть завалялась. Выбирал между AVR Studio и CVAvr. Выбрал CVAvr, т.к. во первых синтаксис максимально схож с PICC, а главное при помощи визарда быстро с регистрами разобрался, не скуривая сотню страниц даташита. Ну и по индикатору, тут просто аппаратный SPI используем.
Вот кусок из обработчика прерываний таймера динамической индикации:
{
spi(y); //последовательно грузим семисегментный код цифры
spi(0b11110111);// и байт с нужным включенным разрядом в промежуточные регистры HC595
PORTB.2=1; // дергаем выводом ST_CP для перемещения байтов в
PORTB.2=0; // регистр хранения и соответственно вывода, любуемся цифрой на табло.
}
И так для каждого разряда.





, предпочитаю DDRB=0b00101100;. Для всех своих поделок всегда использовал PIC, пишу в MPLab с компилятором HI Tech PICC. Просто для этого проекта оказалась очень удобна мега88, коих у меня горсть завалялась. Выбирал между AVR Studio и CVAvr. Выбрал CVAvr, т.к. во первых синтаксис максимально схож с PICC, а главное при помощи визарда быстро с регистрами разобрался, не скуривая сотню страниц даташита. Ну и по индикатору, тут просто аппаратный SPI используем.
Ответить с цитированием