AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
09.12.2018, 02:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
USI - есть проскилованные?
Смотрю в книгу - вижу фигу =)
Не понимаю, как тактируется эта канитель? Например, режим SPI, тактируемся так:
Код:
|
USICR |= (Bit(USIWM0) | Bit(USICS1) | Bit(USICLK)); // В секции инициализации
//... Установим флаг начала передачи
USISR |= Bit(USIOIF);
//... В цикле следим за флагом
while(!(USISR & Bit(USIOIF)))
{
USICR |= ( Bit(USITC)); // Режим SPI, тактируем шину сами
} |
Смотрим дашик и видим, что в такой комбинации счетчик тактируется программно битом USITC. Но смотрим структурную - а как же тогда всё тактируется, если в бит USITC мы всегда записываем "1"? Код рабочий, но бесит, что не понимаю как оно аппаратно работает. И да - цикл забирает 10 тактов из жизни процессора. Т.е. при кварце в 8 МГц на выходе SPI всего 800 кГц.
Второй способ тактирования самый быстрый, но кода многА)
Код:
|
uint8_t clk0 = Bit(USIWM0) | Bit(USITC);
uint8_t clk1 = Bit(USIWM0) | Bit(USITC) | Bit(USICLK);
USICR = clk0; // Режим SPI, тактируем шину сами
USICR = clk1;
USICR = clk0;
USICR = clk1;
USICR = clk0;
USICR = clk1;
USICR = clk0;
USICR = clk1;
USICR = clk0;
USICR = clk1;
USICR = clk0;
USICR = clk1;
USICR = clk0;
USICR = clk1;
USICR = clk0;
USICR = clk1; |
И по нему вопросов нет - вручную дергаем бит USICLK и на выходе получаем честные CLK/2.
Последний раз редактировалось parovoZZ; 09.12.2018 в 02:47.
|
|
|
|
09.12.2018, 12:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,021
Сказал спасибо: 3,026
Сказали Спасибо 3,201 раз(а) в 2,172 сообщении(ях)
|
Re: USI - есть проскилованные?
Сообщение от parovoZZ
|
Смотрим дашик и видим, что в такой комбинации счетчик тактируется программно битом USITC. Но смотрим структурную - а как же тогда всё тактируется, если в бит USITC мы всегда записываем "1"?
|
..........
Сообщение от ATtiny2313
|
Writing a one to this bit location toggles the USCK/SCL value either from 0 to 1, or from 1 to 0.
|
__________________
Экзорцист 40-го уровня.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо ForcePoint за это сообщение:
|
|
|
09.12.2018, 13:25
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: USI - есть проскилованные?
parovoZZ, структурная там несколько смутная/общая - функции квадратиков таки не расписаны, а там и прячется нужный функционал…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
Сказали "Спасибо" mike-y-k
|
|
|
09.12.2018, 17:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: USI - есть проскилованные?
Сообщение от ForcePoint
|
Writing a one to this bit location toggles the USCK/SCL value either from 0 to 1, or from 1 to 0.
|
Там в квадратике Т-триггер? И от него же сдвиговый регистр тактируется?
Интересно, если вместо этого
Код:
|
uint8_t clk0 = Bit(USIWM0) | Bit(USITC);
uint8_t clk1 = Bit(USIWM0) | Bit(USITC) | Bit(USICLK); |
написать 8 раз
Код:
|
USICR |= ( Bit(USITC)); |
и забить болт на бит переполнения USIOIF (мы же мастер, а не слейв)), взлетит? Ничего не выигрываем, но код уменьшится.
|
|
|
|
12.12.2018, 00:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: USI - есть проскилованные?
А возможно ли в этом USI пин SCK/SCL отлучить от выходного буфера в виде ОИ? У меня датчик хоть и I2C, но на линию SCK/SCL не воздействует никак. Соответственно и мне со стороны мастера ОИ с подтягивающим резиком вроде как и не нужен.
Блин, такое ощущение, что все сидят в абдуринах-онлайнах, хоть и не признают этого.))))
|
|
|
|
12.12.2018, 00:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,021
Сказал спасибо: 3,026
Сказали Спасибо 3,201 раз(а) в 2,172 сообщении(ях)
|
Re: USI - есть проскилованные?
Сообщение от parovoZZ
|
А возможно ли в этом USI пин SCK/SCL отлучить от выходного буфера в виде ОИ?
|
Давно это было... и на ассемблере. Но режим two-wire (т.е. I2C) недвусмысленно намекает на открытый сток.
Сообщение от parovoZZ
|
Соответственно и мне со стороны мастера ОИ с подтягивающим резиком вроде как и не нужен.
|
А потом скопируешь в новый проект (хули - отлаженный мастер!)и будешь думать "чё это ведомый не даёт ACK?". Делай всегда как надо, а криво - само получится.
__________________
Экзорцист 40-го уровня.
|
|
|
Сказали "Спасибо" ForcePoint
|
|
|
12.12.2018, 03:12
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,170
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: USI - есть проскилованные?
parovoZZ, для практической проверки тут самое место той arduino в паре с логическим анализатором.
Ещё много интересного в примерах, библиотеках и на форуме производителя. Там как минимум полнее изучили всю совокупность DS, AN и errata…
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
12.12.2018, 11:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: USI - есть проскилованные?
Сообщение от ForcePoint
|
открытый сток.
|
да, да, да))) телефон исправляет))
Сообщение от ForcePoint
|
А потом скопируешь в новый проект
|
Неа, неа. Датчик специфический и под него сделаю драйвер спецом.
Сообщение от mike-y-k
|
для практической проверки тут самое место той arduino в паре с логическим анализатором.
|
ЛА - есть, абдурины - нет. Даже не знаю для чего она здесь. Тут даже больше интерес лежит в другой плоскости - смогу ли я?
Сообщение от mike-y-k
|
Ещё много интересного в примерах, библиотеках и на форуме производителя.
|
У sensirion не нашел. Но даже если и есть, сомневаюсь что это будет USI от atmel. Сейчас в тренде STM32.
Сообщение от mike-y-k
|
DS, AN и errata…
|
DS изучен вдоль и поперек. AN у атмела по USI скудны. Тоже тактирование от таймера - кода очень много, а по сути одна вода.
|
|
|
|
12.12.2018, 11:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: USI - есть проскилованные?
Разбирался когда-то с USI - да, сильно там накручено. Ассемблер.
Но я не понимаю что такое "проскилованый" поэтому ничего писать не буду. Доширак, то есть даты щит, нет, дошик? А, вспомнил: ДАТАШИТ в помощь. Мне хватило. Какой контроллер, я тоже писать не буду.
|
|
|
Сказали "Спасибо" makakus
|
|
|
12.12.2018, 11:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: USI - есть проскилованные?
Сообщение от mike-y-k
|
для практической проверки тут самое место той arduino
|
А оно там написано как задумал ATMEL? Или всё тупо врукопашную софтом реализовано?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:23.
|
|