ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
238508
mazur (13.02.2011 09:52, просмотров: 12497)
Используется SPI. Передача и прием пакетов. В примерах работы с SPI опрашивается флаг завершения передачи.  rcall SPI_Transfer ldi r16,"В" rcall SPI_Transfer ldi r16,"А" rcall SPI_Transfer ldi r16,"С" rcall SPI_Transfer ldi r16,"Я" rcall SPI_Transfer Бред. Написал пробную программу. С кольцевым буфером не стал заморачиваться. Буфер. Счетчик байтов в пакете. Долго раздумывал как быть с отправкой первого байта. Если отправлять его, то из счетчика нужно вычитать единицу. А мне хочется, чтобы все делалось на автомате. Решил дрыгнуть прерыванием. Попутно сама собой решилась проблема с использованием подпрограмм в прерывании. Отказался от подпрограмм в прерываниях, написал макросы. Вроде получилось. Все работает на автомате. .macro SPI_Transf_Init in r16,SPCR sbr r16,1<<SPIE out SPCR,r16 .endmacro .macro SPI_Transf_Int ; Дрыгнуть прерыванием in r16,SPSR sbr r16,1<<SPIF out SPSR,r16 .endmacro Кто как решает подобные задачи?