реклама на сайте
подробности

 
 
41 страниц V  « < 6 7 8 9 10 > »   
Closed TopicStart new topic
> Ну , что прощаемся с Atmel ?
aleksandr-zh
сообщение Sep 30 2015, 08:27
Сообщение #106


Местный
***

Группа: Участник
Сообщений: 359
Регистрация: 28-05-05
Из: Брянщина
Пользователь №: 5 494



аппаратный i2c и на аврах был "ну очень слёзен". У меня 99% - программные
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 30 2015, 08:36
Сообщение #107


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Эдди @ Sep 30 2015, 10:54) *
Руки бы поотрывал и засунул их в задницу тем, кто временные интервалы не таймерами задает, а "нопами". АВРщина головного мозга!

Интервал интервалу рознь. Иногда требуется задержка в несколько тактов шины (не менее) для работы ядра или периферии.
У тех же Cortex-ов, иногда не просто nop-ы нужно вставлять, а грамотно пользоваться барьерами))
Таймеров мало, а суть проблемы программных задержек не ясна. Объясните в чем зло?

Цитата(Эдди @ Sep 30 2015, 10:54) *
Вы еще ногодрыг вручную устройте на какие-нибудь I2C, 1-wire и т.п. Особенно ржачно смотреть, как аврщики городят всякие велосипеды вроде I2C (а то и SPI) на камнях, имеющих это аппаратно!!!

Ок. Берем SPI на почти-процовой частоте. Каждый байтик уходит за 16 тактов. По мне так куда смешнее смотреть на конструкции вида:
Код
BYTE sd_send_byte(const BYTE data)
{
    BYTE spib;
    while((SD_SPI->SR & (1 << SPI_SR_TXE)) == 0);
    SPI3->DR8 = data;
    while((SD_SPI->SR & (1 << SPI_SR_RXNE)) == 0);
    spib = SD_SPI->DR8;
    return spib;
}


Без грамотного проектирования с передачей-приемом по DMA больших блоков с обработкой прерываний по приему SPI и окончания передачи DMA не вижу
никакого преимущества аппаратного SPI перед софтовым. Причем, софтовый имеет неоценимые плюшки в виде незанимания аппаратного SPI и полной свободе в выборе пинов. Сам я использую аппаратные SPI - просто привык использовать их совместно с DMA. Написал драйвер работы с SD-картой
через SPI с callback-функциями - уровень разработки скажу не для слабонервных. Можете привести пример над которым мы бы все могли "поржать"?
А еще хотелось бы посмотреть на 9-битный SPI, нужный, например, для подключения дисплеев nokia... не у всякого МК есть такой.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 30 2015, 08:39
Сообщение #108


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(aleksandr-zh @ Sep 30 2015, 11:27) *
аппаратный i2c и на аврах был "ну очень слёзен". У меня 99% - программные

На AVR он как раз весьма хорош (наверное, потому что был взят в виде готовой корки).
Go to the top of the page
 
+Quote Post
aleksandr-zh
сообщение Sep 30 2015, 08:52
Сообщение #109


Местный
***

Группа: Участник
Сообщений: 359
Регистрация: 28-05-05
Из: Брянщина
Пользователь №: 5 494



в каком семействе? на мелких моделях - плюнул и забыл.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Sep 30 2015, 08:53
Сообщение #110


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Например, на ATmega48 и т.п. На tiny модуль другой.
Go to the top of the page
 
+Quote Post
ESN
сообщение Sep 30 2015, 08:55
Сообщение #111


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 4-10-10
Из: г.Псков
Пользователь №: 59 908



Цитата(Эдди @ Sep 30 2015, 10:54) *
Руки бы поотрывал ...

Мозги лучше иногда включить... После деления частоты кварца для экономии потребления камень начинает работать на 2457600/16=153600 Гц( если изначально ХТАL=2,457мГц) или 3579545/8=447443Гц (если ХТАL=3,579 мГц). После этого нужно сформировать одну из синусоид верхних частот: 1209Гц, 1336Гц,1477Гц или 1633Гц и сверху наложить с фазовой задержкой одну из синусоид нижних частот: 697Гц, 770Гц,852Гц,941Гц, чтобы получить сигнал DTMF. На эти операции уходит ровно 153600/1209=127, 153600/1336=115, 153600/1477=104, 153600/1633=94 машинных цикла при частоте 153600 Гц (в знаменателе генерируемая частота) или 447443/1209=370, 447443/1336=335, 447443/1477=303, 447443/1633=274 при частоте 447443Гц. Так формируется сигнал DTMF c помощью ЦАПа R/2R. При XTAL=2,457мГц DTMF-сигнал, содержащий частоту 1209 Гц, строится по 20 точкам, 1336Гц-18 точкам, 1447Гц-16 точкам, 1633Гц-14 точкам за период. И какие могут быть таймера при таком решении задачи, если команда возрата из прерываниея (таймерного в частности) reti съедает 4 машинных цикла + 2 цикла на сохранение и восстановление слова-состояния. Замечу, когда кнопка тастатуры нажата - сигнал формируется непрерывно! Все это ради экономии потребления тока. Частоты этих кварцов делятся на верхние частоты почти без остатка - нацело, поэтому погрешности при формировании сигналов DTMF таким способом - нет или 1 Гц.
P.S. Лучше эту тему убрать или перенести.

Сообщение отредактировал ESN - Sep 30 2015, 11:50
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2015, 13:05
Сообщение #112


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (adnega @ Sep 30 2015, 11:36) *
Без грамотного проектирования с передачей-приемом по DMA больших блоков с обработкой прерываний по приему SPI и окончания передачи DMA не вижу
никакого преимущества аппаратного SPI перед софтовым. Причем, софтовый имеет неоценимые плюшки в виде незанимания аппаратного SPI и полной свободе в выборе пинов. Сам я использую аппаратные SPI - просто привык использовать их совместно с DMA. Написал драйвер работы с SD-картой
через SPI с callback-функциями - уровень разработки скажу не для слабонервных. Можете привести пример над которым мы бы все могли "поржать"?
А еще хотелось бы посмотреть на 9-битный SPI, нужный, например, для подключения дисплеев nokia... не у всякого МК есть такой.

Насколько я вижу, Вы здесь придумали некий НЕДО аппаратный SPI и лихо его "побеждаете" sm.gif софтовым. Давате все-же определимся, что типичный аппаратный SPI по нынешним временам, имеет, как мнимум FIFO если не DMА, и не все вместе, и настраивамую разрядность. До кучи еще поддержка не только SPI режима. По скоорости они тоже превосходят ногомахалки на многомегагерцовых контролерах.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Ga_ry
сообщение Sep 30 2015, 13:14
Сообщение #113


Местный
***

Группа: Свой
Сообщений: 494
Регистрация: 23-06-09
Из: Полтава, UA
Пользователь №: 50 579



Интересно, закроют производство или нет?
У меня под 2 тыс. плат на AVR-ах по всей стране работают и их надо сопровождать по гарантии еще 3 года а недавно еще дозаказали полтысячи.
А переделывать... пусть меня пристрелят. Не хочу.

Сообщение отредактировал Ga_ry - Sep 30 2015, 13:15
Go to the top of the page
 
+Quote Post
Эдди
сообщение Sep 30 2015, 13:27
Сообщение #114


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Цитата(aaarrr @ Sep 30 2015, 10:34) *
Вопрос именно в строгости времянки, а не лишних строках (например, нужно выводить в тот же внешний ЦАП данные с периодом 16 тактов). Тогда лучше уж написать кусочек на асм, чем добавлять в код asm("nop").

Не нужно тут байки рассказывать, что ногодрыг за 16 тактов сработает! От силы же 2МГц!!!
Go to the top of the page
 
+Quote Post
zhevak
сообщение Sep 30 2015, 13:37
Сообщение #115


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(zltigo @ Sep 30 2015, 18:05) *
Давате все-же определимся, что типичный аппаратный SPI по нынешним временам, имеет, как мнимум FIFO если не DMА, и не все вместе, и настраивамую разрядность.


На это раз я солидарен с zltigo.

Я вот так думаю -- если стоит задача передавать по "квадратной" шине или SPI отдельные байты, то наверно -- да, изящнее будет выглядеть программная реализация, а не использование аппаратной части МК. Чем, собственно, и занимаются разработчики. (Я тоже не избежал участи испытать на своих проектах всю прелесть TWI. Ужас, какой-то!)

А вот если нужно передавать не байты, а пакеты, то аппаратные возможности камня однозначно рулят. И особенно рулят те камни, у которых имеется DMI -- подготовил в памяти пакет, снабдил его CRC, сообщил DMA параметры (адрес, количество) и дал команду "Старт!" И всё -- ушел делать фоновую работу или лёг спать. Когда процесс передачи закончится, прерывание "позвонит".

И я так понимаю, что передавать разрозненные байты -- это прерогатива студентов, но никак не тёртых эмбеддеров. У последних задачки посложнее будут.


Цитата(aleksandr-zh @ Sep 30 2015, 12:45) *
вот сижу и думаю: так осваивать теперь Xmega али нет?...
вроде на следующей неделе платки для обучения работе с stms32 получу ... только на них и сосредоточиться?


Если бы я был на Вашем, тёзка, месте, то я бы выбрал STM32. Поигравшись с этими бестиями, Вам уже будут не интересны другие камни. Думаю, мои слова подтвердят многие разработчики, кто работал с STM32. У XMega ниша слишком узкая и перспективы туманны. Хотя, сам по себе, камень хороший. Ключевое слово -- "был".


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 30 2015, 13:42
Сообщение #116


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(zltigo @ Sep 30 2015, 16:05) *
Насколько я вижу, Вы здесь придумали некий НЕДО аппаратный SPI и лихо его "побеждаете" sm.gif софтовым.

Можно конкретнее, а то я не вижу что именно увидели вы?

Цитата(zltigo @ Sep 30 2015, 16:05) *
Давате все-же определимся, что типичный аппаратный SPI по нынешним временам, имеет, как мнимум FIFO если не DMА, и не все вместе, и настраивамую разрядность. До кучи еще поддержка не только SPI режима. По скоорости они тоже превосходят ногомахалки на многомегагерцовых контролерах.

По долгу службы я очень интенсивно использую SPI для больших объемов данные (управление LED-панелями).
В такой задаче передача только аппаратным SPI + DMA.
В задачах передачи единиц байт плюсов от применения DMA и прерываний не вижу.
В популярной меге8 с ОЗУ байт 512 (на стек, переменные и т.п.) просто нет таких объемов данных.
Ровно как и нет FIFO, DMA, переменной длины слова...
Т.е. получается "АВРщина головного мозга" по определению?
Как быть с тинькой 13?

По делу: давно и плотно сижу на STM32. Серийных проектов на AVR давно уже нет, а те что были переехали на Cortex-M0.
Причем, AVR мне очень нравились и продолжают нравиться (хотя и не слежу за новостями).
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2015, 14:07
Сообщение #117


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (adnega @ Sep 30 2015, 16:42) *
Можно конкретнее, а то я не вижу что именно увидели вы?

То, что увидел то четко и описал. Типовой SPI нынешних контроллеров не требует непрерывного сканирования состояния и подкидывания по байтику. Собчтвенно и Вы это прекрасно знаете. Так-что говорить о бесполезности железного SPI можно только в случае тупейшей его реализациии да и то, только при использовании в качестве master.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
one_eight_seven
сообщение Sep 30 2015, 14:34
Сообщение #118


Знающий
****

Группа: Участник
Сообщений: 916
Регистрация: 3-10-08
Из: Москва
Пользователь №: 40 664



Цитата
Каждый байтик уходит за 16 тактов.

Это как? Даже если микроконтроллер умеет в запись непосредственного значения в регистр ввода-вывода за 1 такт (в чём я лично сомневаюсь), то эти данные надо предварительно подготовить. Кроме того, бывает такое, что по SPI надо принимать, а не только пересылать.
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 30 2015, 15:14
Сообщение #119


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(one_eight_seven @ Sep 30 2015, 17:34) *
Это как? Даже если микроконтроллер умеет в запись непосредственного значения в регистр ввода-вывода за 1 такт (в чём я лично сомневаюсь), то эти данные надо предварительно подготовить.

Ок. Впадаем в крайности - нужно подготовить и передать 1 байт по SPI.
Есть мнение, что аппаратный и софтовый варианты реализации не сильно будут отличаться по времени, размеру кода.
Точнее сильно, но это не меняет ситуацию принципиально - толком ни поспать, ни что-то полезное сделать.
С программной точки зрения: что там ожидание, что тут.

Цитата(one_eight_seven @ Sep 30 2015, 17:34) *
Кроме того, бывает такое, что по SPI надо принимать, а не только пересылать.

С этим согласен. Когда SCK приходит из вне - лучше аппаратно реализовать.
Но чаще всего МК сам генерит SCK, а прием или передача особой роли не играет.

Насчет "правильных SPI": не у всякого мелкого МК есть аппаратный-то...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2015, 15:21
Сообщение #120


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (adnega @ Sep 30 2015, 18:14) *
Точнее сильно, но это не меняет ситуацию принципиально - толком ни поспать, ни что-то полезное сделать.
С программной точки зрения: что там ожидание, что тут.

Вообще-то АППАРАТНАЯ передача по SPI выглядит иначе - кладется информация в регистр-FIFO-DMA и уходится заниматься ДРУГИМИ делами без всякого "ожидание".
QUOTE
Насчет "правильных SPI": не у всякого мелкого МК есть аппаратный-то...

На нет и спроса нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

41 страниц V  « < 6 7 8 9 10 > » 
Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016