Мне нужно cделать програмный SPI-Master из USI.Может Кто-то ещё делал подобное.Написал программу не работает.Вроде все правильно.Записиваю даные в USIDR,проверяю флаг USIOIF-он не устанавлевается.Мой исходник:
.include “tn2313def.inc”
.macro outi
ldi r16,@1
out @0,r16
.endmacro
outi SPL,ramend
outi DDRB,0b11111111
Transnit:
outi USIDR,0b11001100 ;пример даных для передачи
outi USISR,(1<<USIOIF)
ldi r16,(1<<USIWM0|1<<USICS1|1<<USICLK|1<<USITC)
out USICR,r16
Интересно,а этот USI в attiny2313 поддерживаеться в AVRstudio? Я сегодня все варианты со всеми регистрами пробовал подбирать,вобще никак не реагирует. И даже этот четырёх битный счётчик никак не реагирует...
До этого пробовал разные апаратные SPI на других контроллерах симулировать,так всё нормально,если на входе устанавливаю 1 и при этом нажимая F11 и изменяю переодически 0 с 1 на SCK(slave) то в регистр данных одни еденицы и записываться...В Мастере с каждым SCK на MOSI последовательно выдаёт содержимое регистра данных.
На attiny2313 подобным образом пробовал USART эмулировать,в асинхронном режиме работает в качестве передатчика, приёмник чтото не симулируеться,(тоесть при любых обстоятельствах регистр данных пуст) но он мне пока не нужен...Над ним мозги особо не парил... Авот с USI уже плавяться
Мне не стоит труда придумать как это сделать програмно,просто хочиться научиться штатные устройсва юзать.
Как я понял выводы USI совпадат с SPI програмирования? Об этом почти негде не пишеться.
У меня уже все работает.Проблема в том что в даташите все написано правильно, а АВРСтудии не работает.Написал прогу - проверил в Протеус все работает! По поводу выводов:
MOSI - DO (data out) (PB6/MISO/DO/PCINT6)
MISO - DI (data in) (PB5/MOSI/DI/SDA/PCINT5)
SCK - USCK (PB7/USCKSLK/PCINT7)
линия CS отсутствует. (если надо делаеться програмно из любой линии порта)
Если надо могу выложить свой пример реализации (исходник асм+собраная схема в Протеус)
А к чему тогда кидать мне ссылку на мою же тему, вы бы хотя бы почитали, я бы не стал повторно задавать вопрос если бы проблема решилась, а сам бы с радостью поделился. И не стоит проявлять сарказм.
Протеус симулирует "железо" МК. В протеусе для модели МК "скармливается"("прошивается") уже скомпилированый HEX-файл. А на каком языке его писали до компиляции - протеусу неважно.
HEX-файл находится отдельно от файла самого проекта. Путь к нему указан в свойствах МК в проекте. (Т.е. в проекте протеуса можно указать любой другой HEX).
Kisa писал(а):Щiро дякую, пояснили
Это получаеться в Протеусе можно на асме писать и симулировать такие вещи как USI,в отличии от АВРСтудии ?
Вы меня не совсем поняли.Имел в виду что симуляция USI в AVRStudio правильно не работает(не знаю почему,но флаг окончания передачи по USI не устанавливается.). Проверить работает ли программма можно в Proteus, или еще даже лучше в железе.
Да там не только флаг конца передачи,там состояние пинов никак не меняеться и на них никак не реагирует...Может на днях в железе попробую. Разные симуляторы схем,особенно аналоговых, мне пока техническим ананизмом кажуться...Хотя стоит попробовать
Эх... Обидно, тут с годами в Минске забываю родной язык...
А коменты рулят !!!
На железе всё с первого тыка заработало!
Использовал самый первый пример мастера из даташита.
Если на входе ноль,то и принемаем ноль,если еденица то только одни единицы и приймем,а если соеденить MISO и MOSI то принемаем то ,что и передаём.
Привожу пример тестирования.