| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Помогите разобраться с SPI AVR
31.08.2010, 15:24
|
|
|
Частый гость
Регистрация: 23.07.2008
Сообщений: 16
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Сообщение от kison
|
|
Тогда при перепаде на SS 1-›0 SPI сам переключится в слейв и произойдет прерывание.
|
|
Сообщение от datasheet
|
If SS is configured as an input, it must be held high to ensure Master SPI operation. If
the SS pin is driven low by peripheral circuitry when the SPI is configured as a Master
with the SS pin defined as an input, the SPI system interprets this as another Master
selecting the SPI as a Slave and starting to send data to it. To avoid bus contention, the
SPI system takes the following actions:
1. The MSTR bit in SPCR is cleared and the SPI system becomes a Slave. As a
result of the SPI becoming a Slave, the MOSI and SCK pins become inputs.
2. The SPIF Flag in SPSR is set, and if the SPI interrupt is enabled, and the I-bit in SREG is set, the interrupt routine will be executed.
|
Соответственно можно первое прерывание после выставления флага MSTR игнорировать и его после каждой посылки надо взводить опять. Только не очень-то это удобно, разве что если ног не хватает.
|
|
|
|
31.08.2010, 15:43
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Сообщение от alchem
|
|
Соответственно можно первое прерывание после выставления флага MSTR игнорировать и его после каждой посылки надо взводить опять. Только не очень-то это удобно, разве что если ног не хватает.
|
Честно говоря не понял. MSTR это не флаг, а бит конфигурации SPI.
Допустим мы в условном мастере, бит MSTR установлен. Реальный мастер опускает SS, мы имеем прерывание и 0 в MSTR. Дальше прерывание по приему - все то же самое. Вот если бы по SS прерывание генерировалось при любом перепаде, то можно было бы флажок какой завести и игнорировать первое прерывание после конца предыдущей передачи. Но даташит такого не обещает
|
|
|
|
31.08.2010, 23:10
|
|
|
Частый гость
Регистрация: 23.07.2008
Сообщений: 16
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Сообщение от kison
|
|
MSTR это не флаг, а бит конфигурации SPI
|
Вы думаете, я этого не знаю? Немного коряво написал, первое прерывание SPI после установки бита MSTR. Просто игнорировать первый байт, следующие будут уже с данными. После получения полной посылки (в случае с фиксированной длинной) надо бит опять взвести. На мой взгляд, в данном случае его можно рассматривать именно как флаг переключения в режим slave, меняется-то он от внешнего сигнала. В принципе, можно с некоторой периодичностью по таймеру отслеживать пин /SS, когда будет единица, тогда и выставить MSTR в единицу. Ясен пень, что период опроса должен быть меньше паузы между посылками и лучше всего таймер сбрасывать по приходу байта.
Приходилось мне делать синхронизацию, когда не было slave select-вот это было что-то!
Но весь этот цирк с конями, опять же, нужен только в одном случае-если не хватает ног.
Боюсь, тредстартер воспримет гипотетический вариант как руководство к действию.
Последний раз редактировалось alchem; 31.08.2010 в 23:20.
|
|
|
|
31.08.2010, 23:44
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Сообщение от alchem
|
|
После получения полной посылки (в случае с фиксированной длинной) надо бит опять взвести.
|
А он может и не взвестись пока SS в высокий уровень не перейдет. Проверять надо.
Сообщение от alchem
|
|
Боюсь, тредстартер воспримет гипотетический вариант как руководство к действию.
|
И пусть  Вот кто проверит.Тем более про прерывание от SS он сам захотел.
|
|
|
|
31.08.2010, 23:51
|
|
|
Частый гость
Регистрация: 23.07.2008
Сообщений: 16
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Сообщение от kison
|
|
А он может и не взвестись
|
Вполне может быть, написано что
|
Цитата:
|
if
the SS pin is driven low
|
, а не по спаду, т.е. опять сбросится и получим прерывание. В таком случае, единственный выход-ставить таймер с опросом пина SS.
Сообщение от kison
|
|
Тем более про прерывание от SS он сам захотел.
|
|
|
|
|
02.09.2010, 15:55
|
|
|
Временная регистрация
Регистрация: 20.05.2010
Адрес: Н.Новгород
Сообщений: 70
Сказал спасибо: 28
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Доброго здравия всем!!! Кто может помогите новечьку в пик контролерах
В целях освоения пиков собрал термометр и что бы совместить полезное с приятным решыл по ходу превратить их в термометр для автомобиля. и написать строки "за бортом" и "В салоне". Для начала я попробовал написать свои буквы получилось и подставил на фото нижняя строчка. Потом я подкоректировал саму строчку, в исходнике, не там пробел стоял, выравнял все получилось. Далее я переставил строки местами тоже все вышло. Следующий этап. Я применил жки wh1602b в нем имеется кирилица я попробовал взять буквы из его библиотеки тут небольшая осечка, буквы высветились но не те которые я хотел увидать но то что они там есть меня порадовало. Верхняя строка . И теперь самое то что у меня никак не получается. Помогите плиз применительно к данному тексту где я туплю, у меня не получается написать строки нужной мне длинны и с нужными мне буквами. Всем огромное спасибо.
Последний раз редактировалось homo_sapiens; 02.09.2010 в 16:01.
|
|
|
|
02.09.2010, 15:57
|
|
|
Временная регистрация
Регистрация: 20.05.2010
Адрес: Н.Новгород
Сообщений: 70
Сказал спасибо: 28
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Вот архив исходника.
Только досмотрел приношу свои извинения может я не в тему попал. Но все таки жду коментарий
Последний раз редактировалось homo_sapiens; 02.09.2010 в 16:20.
|
|
|
|
02.09.2010, 16:56
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Вы конечно попали совсем не в ту тему. Но попробую помочь. Дело в том что код буквы в индикаторе и в кодогенераторе компъютера не совпадают. Более того, не все русские буквы в индикаторе вообще имеются, для некоторых применяются латинские из основной раскладки. Например буква А только одна, хранить две бессмысленно. Так что у Вас есть два варианта - хранить строки в обычной комповой кодировке и перед выводом на экран перекодировать либо сразу в ручную закодировать в кодировке индикатора.
Второе проще если у Вас не несколько десятко строк.
Прикрепляю табличку. Например код 0xA0 это буква "Б", 0xA7 - "Л" и т.п.
|
|
|
|
02.09.2010, 17:09
|
|
|
Временная регистрация
Регистрация: 20.05.2010
Адрес: Н.Новгород
Сообщений: 70
Сказал спасибо: 28
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Да я такую табличку уже имею я скачивал из инета, И тем не менее спасибо за разьяснение. Премного благодарен.
|
|
|
|
02.09.2010, 17:19
|
|
|
Временная регистрация
Регистрация: 20.05.2010
Адрес: Н.Новгород
Сообщений: 70
Сказал спасибо: 28
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
|
Re: Помогите разобраться с SPI AVR
Да я тоже это понял да и вычитал что буквы там не все, В исходнике было написано "Ул." "Дом" а буквы "з" и "а" это я уже нарисовал. и вставил.У меня сложности я никак не найду где задается размер строки.
Да и пожалуйста подскажите как мне перенести мои сообщения в нужную тему чтобы не портить данный раздел. еще раз извените.
Последний раз редактировалось homo_sapiens; 02.09.2010 в 17:26.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:02.
|
|