Например TDA7294

Форум РадиоКот • Просмотр темы - ATTiny USI -> SPI
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 13:43:05

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 21 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 15:53:12 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Сообщений: 8007
Откуда: Лукалэнд
Рейтинг сообщения: 0
Сразу дико извиняюсь =) М.б. вопрос поражает тупостью, но я честно больше суток пытался решать проблему мозгом. Потом решал "гуглом". Итог - этот топик ):
Суть проблемы: есть диспей от Motorola C450 (SSD1770). Работать с ним можно в режиме SPI (кстати, среди аппаратного функционала в дисплее есть интересные вещи, вроде скола и прорисовки простейший фигур). Штука, конечно, древнее дерьма мамонта, но жизнь заставляет юзать её совместно с ATTiny2313. В нём мы не располагаем SPI, имеем только USI.
Честно читал даташит, честно понял, что SPI можно реализовать через 3-wired USI. Честно НЕ ПОНЯЛ, что происходит в примере на асме. Каюсь, я программист на высокоуровневых языках. Если не затруднит, киньте в меня перелопаченным примером на C :?

UPD: сам ASM-код из даташита:
Код:
SPITransfer:
    out USIDR,r16
    ldi r16,(1<<USIOIF)
    out USISR,r16
    ldi r16,(1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC)
SPITransfer_loop:
    out USICR,r16
    sbis USISR,USIOIF
    rjmp SPITransfer_loop
    in r16,USIDR
    ret


Последний раз редактировалось hybroid Ср мар 09, 2011 15:58:36, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 15:58:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
может, вам проще написать программный SPI, раз вы высокоуровневый программист, и не парить моск?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 16:04:01 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Сообщений: 8007
Откуда: Лукалэнд
Рейтинг сообщения: 0
как я понял, через USI - получается _почти_ программный SPI. как кричит даташит:
Цитата:
The USI provides the basic
hardware resources needed for synchronous serial communication. Combined with
a minimum of control software, the USI allows higher transfer rates, less CPU load
and in general uses less code space than solutions based on software only

Не могу не согласиться с даташитом. Особенно, в случае с ATTiny2313, где и так каждый байт на счету. Да и всё-таки хочется раз и на всегда разобраться в данном вопросе.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 16:15:28 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
ARV писал(а):
может, вам проще написать программный SPI, раз вы высокоуровневый программист, и не парить моск?

Очень дурной тон программно имитировать то, что и так есть аппаратно.


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 16:19:21 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вс июл 13, 2008 21:38:56
Сообщений: 26
Откуда: Харьков
Рейтинг сообщения: 0
hybroid писал(а):
Каюсь, я программист на высокоуровневых языках. Если не затруднит, киньте в меня перелопаченным примером на C


Есть Атмеловский аппликейшин AVR319 к нему идет код на IAR С (куда уже высокоуровневей...)

Смотреть здесь:
http://www.atmel.com/dyn/products/produ ... rt_id=3229

Учись работать с первоисточниками.

PS Если захочешь на USI - TWI(i2C)организовать - обращайся, есть исходник на С++ (класс, методы, конструктор, деструктор)
В общем для крутых, высокоуровневых пацанов :0)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 17:14:26 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3850
Откуда: Москва
Рейтинг сообщения: 0
hybroid писал(а):
Честно НЕ ПОНЯЛ, что происходит в примере на асме.


Код:
SPITransfer:
    out USIDR,r16 ;пишем байт в регистр данных USI
    ldi r16,(1<<USIOIF) ;сбрасываем бит переполнения
    out USISR,r16 ;счетчика USI
    ldi r16,(1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC) ;конфигурация USI:
;-режим SPI (бит USIWM0)
;-программное тактирование (бит USICS1)
;-сдвиг регистра данных (1 в USICLK)
;-переключение линии CLK (1 в USITC)
SPITransfer_loop:
    out USICR,r16 ;запись в регистр управления USI, сдвиг регистра данных, переключение CLK
    sbis USISR,USIOIF ;проверка переполнения счетчика USI
    rjmp SPITransfer_loop ;переход если нет
    in r16,USIDR ;если да, читаем что пришло по SPI
    ret ;возврат из подпрограммы

Хотя я предпочитаю вариант SPITransfer_Fast, он хотя и длиннее более чем в 2 раза, зато быстрее (и кстати проще).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 17:33:52 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Сообщений: 8007
Откуда: Лукалэнд
Рейтинг сообщения: 0
TracerrecarT писал(а):
C код на IAR С (куда уже высокоуровневей...)

Себе же противоречите:
TracerrecarT писал(а):
обращайся, есть исходник на С++ (класс, методы, конструктор, деструктор)


За апноут благодарю.
PS: Откуда столько яда? С каких пор знание чего-то удобнее ассемблера стало "пацанской" биркой? Или вы считаете, что работать с МК со знанием C - это "не по-пацански"? :))) Или, м.б., я зря несу в голове понятия
Цитата:
С++ (класс, методы, конструктор, деструктор)
?

Кстати, C++ не ограничен классами и деструкторами.

И, между прочим, мир высокоуровневых языков не ограничен C++ :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 17:37:11 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Сообщений: 8007
Откуда: Лукалэнд
Рейтинг сообщения: 0
Engineer_Keen писал(а):
hybroid писал(а):
Честно НЕ ПОНЯЛ, что происходит в примере на асме.


Код:
SPITransfer:
    out USIDR,r16 ;пишем байт в регистр данных USI
    ldi r16,(1<<USIOIF) ;сбрасываем бит переполнения
    out USISR,r16 ;счетчика USI
    ldi r16,(1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC) ;конфигурация USI:
;-режим SPI (бит USIWM0)
;-программное тактирование (бит USICS1)
;-сдвиг регистра данных (1 в USICLK)
;-переключение линии CLK (1 в USITC)
SPITransfer_loop:
    out USICR,r16 ;запись в регистр управления USI, сдвиг регистра данных, переключение CLK
    sbis USISR,USIOIF ;проверка переполнения счетчика USI
    rjmp SPITransfer_loop ;переход если нет
    in r16,USIDR ;если да, читаем что пришло по SPI
    ret ;возврат из подпрограммы

Хотя я предпочитаю вариант SPITransfer_Fast, он хотя и длиннее более чем в 2 раза, зато быстрее (и кстати проще).


Спасибо за ответ по теме. Можно подробнее про SPITransfer_Fast?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 17:39:37 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 30
Зарегистрирован: Ср янв 05, 2011 16:25:15
Сообщений: 1163
Рейтинг сообщения: 0
Satyr писал(а):
Очень дурной тон программно имитировать то, что и так есть аппаратно.
... не обязательно - случаи бывают разные .. :)
hybroid писал(а):
Каюсь, я программист на высокоуровневых языках.
... SPI легко реализуется программно (на С в том числе) - просто есть 4 варианта ... хотя разница несущественна


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 18:11:35 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3850
Откуда: Москва
Рейтинг сообщения: 0
hybroid писал(а):
Можно подробнее про SPITransfer_Fast?

Это пример, который идет в даташите после первого варианта.
Там первой строкой также пишется байт в порт данных, потом в два регистра (R16 и R17) записывается конфигурация USI, с отличием в один бит (этот бит - тактовый). Потом тупо 8 раз повторяется вывод сначала R16 потом R17 в конфигурационный регистр USI, при этом регистр данных сдвигается автоматом при каждом изменении в тактовом бите. После 8 циклов читается то, что пришло по SPI.
Кстати, не забываем что в SPI еще может быть линия CS...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 18:14:22 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Satyr писал(а):
Очень дурной тон программно имитировать то, что и так есть аппаратно.
да что вы говорите?! :))) ну-ну...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 18:35:34 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 623
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Сообщений: 8007
Откуда: Лукалэнд
Рейтинг сообщения: 0
Engineer_Keen писал(а):
Кстати, не забываем что в SPI еще может быть линия CS...

Хм. Можно про камни с CS? Мною используемый LCD как раз "активно жаждит" CS..

ARV писал(а):
да что вы говорите?! ну-ну...
Что же вы предлагаете программно реализовать лучше, чем имеющееся аппаратно? На примере AVR, пожалуйста. 8-ми битных, к слову.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 19:34:54 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3850
Откуда: Москва
Рейтинг сообщения: 0
hybroid писал(а):
Хм. Можно про камни с CS? Мною используемый LCD как раз "активно жаждит" CS..

Выделяете любую свободную ногу МК под CS, и перед тем как передавать какие-либо данные с помощью вышерассмотренных подпрограмм ставите ее в 0, после передачи ставите в 1. Если 2 устройства - 2 линии CS, при общении с конкретным устройством ставите в 0 его CS, и т.д.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 19:41:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2057
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18024
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
hybroid писал(а):
Что же вы предлагаете программно реализовать лучше, чем имеющееся аппаратно? На примере AVR, пожалуйста. 8-ми битных, к слову.
да упаси меня бог чего-то предлагать! я сижу тихохонько в уголке и наблюдаю... :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

скушно, бабоньки!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Ср мар 09, 2011 20:29:04 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вс июл 13, 2008 21:38:56
Сообщений: 26
Откуда: Харьков
Рейтинг сообщения: 0
hybroid писал(а):
За апноут благодарю.

Всегда пожалуйста, обращайся.
Цитата:
PS: Откуда столько яда? С каких пор знание чего-то удобнее ассемблера стало "пацанской" биркой? Или вы считаете, что работать с МК со знанием C - это "не по-пацански"? :))) Или, м.б., я зря несу в голове понятия
И, между прочим, мир высокоуровневых языков не ограничен C++ :))


Я специально поставил в конце предложения смайлик - это была дружеская шутка, подначка .
Если обидел - прошу прощения.

Совет:
Вообще, если есть желание программировать микроконтроллеры то знание ассемблера ОЧЕНЬ НЕ ПОМЕШАЕТ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Чт май 19, 2011 12:30:49 
Открыл глаза

Зарегистрирован: Вт апр 19, 2011 12:24:56
Сообщений: 54
Рейтинг сообщения: 0
Так же как автор топика решил освоить USI в качестве SPI, пишу в алгоритм билдере (ассемблер). помоему в USI нехватает настроек от SPI, таких как:
1) выбор из 4 типов тактирования (два по спаду и два по подъёму, каждая из двоек либо с нуля, либо с единицы стартует)
2) деление частоты от тактирования процессора (SPI самый быстрый протокол был, а это... я даж без понятия какую скорость получится выжать)
3) какой бит передаётся первым, старший или младший? такой настройки вообще не нашол... может плохо искал хз, гугл не смог помочь.
си не изучал, т.к. обычно мне нужна ассемблерная точность и быстрота работы процессора (прошу не холиварить по данному поводу)

п.с. на меге 32 по SPI подключил экран и он вполне сносно и быстро работает, хочу перевести проект на attyni2313. подскажите в какой регистр что записать чтоб получить:
1) старт передачи с 0 (хотя не критично, можно и с 1), тактирование по подъёму(по классификации SPI это 1 или 3 тип был)
2) частоту нужно как можно большую, в меге было дабл спид, т.е. кварц/2
3) MSB передаётся первым, это вроде младший бит...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Чт май 19, 2011 13:07:10 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3850
Откуда: Москва
Рейтинг сообщения: 0
kotoandroid писал(а):
1) старт передачи с 0 (хотя не критично, можно и с 1), тактирование по подъёму(по классификации SPI это 1 или 3 тип был)

Вроде в качестве мастера тинька может только по подьему тактировать, в качестве слейва и по спаду и по подьему (даташит, таблица 61)
kotoandroid писал(а):
2) частоту нужно как можно большую, в меге было дабл спид, т.е. кварц/2

Кварц/2 получается в варианте SPITransfer_Fast (ДШ, пример на странице 143)
kotoandroid писал(а):
3) MSB передаётся первым, это вроде младший бит...

Most significant bit - т.е. старший байт.
Любые другие варианты (другие режимы SPI, младший бит первым) - только с помощью программного SPI (но при этом не получить скорости кварц/2)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Чт май 19, 2011 13:56:26 
Открыл глаза

Зарегистрирован: Вт апр 19, 2011 12:24:56
Сообщений: 54
Рейтинг сообщения: 0
таким образом мне повезло и самая быстрая конфигурация как раз мне подойдёт, я правильно понял? таблица 61 для меня пока загадка, не понимаю я что там написано, причем тут внешние сигналы тактирования( возможно речь идет о слейв устройстве по отношению к мастеру?) как выставить USICR и USISR, чтоб было тактирование по подъёму( мастер устройство), старший бит первым шол и скорость СК/2?

п.с. надеюсь я не кажусь очень наглым, просто никак не доходит до меня этот USI. SPI и TWI и то проще... помоему.. кучу даташитов перелопатил, пока без результата.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Чт май 19, 2011 14:19:31 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 234
Зарегистрирован: Пт янв 29, 2010 10:27:40
Сообщений: 3850
Откуда: Москва
Рейтинг сообщения: 0
kotoandroid писал(а):
как выставить USICR и USISR, чтоб было тактирование по подъёму( мастер устройство), старший бит первым шол и скорость СК/2?

Почти все выставляется в примере SPITransfer_Fast. Нужно только еще DDR этого порта сконфигурировать (CS, DO, CLK на выход, DI на вход. Не путать DI/DO USI с MOSI/MISO ISP, они там наоборот стоят!).
kotoandroid писал(а):
п.с. надеюсь я не кажусь очень наглым, просто никак не доходит до меня этот USI. SPI и TWI и то проще... помоему.. кучу даташитов перелопатил, пока без результата.

Зачем кучу, нужно всего пару - на МК и на ведомое устройство :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATTiny USI -> SPI
СообщениеДобавлено: Чт май 19, 2011 17:23:13 
Открыл глаза

Зарегистрирован: Вт апр 19, 2011 12:24:56
Сообщений: 54
Рейтинг сообщения: 0
Engineer_Keen писал(а):
Зачем кучу, нужно всего пару - на МК и на ведомое устройство :)))


я имел ввиду кучу разных даташитов и описаний USI, SPI, attiny и прочего. что касается даташитов на ведомое устройство, то повторюсь, оно уже работало, но на меге, с нормальным SPI, где всё явно и понятно, без заморочек.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 21 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y