Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Ответ
Опции темы
Непрочитано 17.12.2019, 13:14   #1641
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от MikeF Посмотреть сообщение
я говорю про стандартный printf
"стандартный printf" недопустимо использовать на STM8! Оно ж отожрет половину флеша. Так что, явно там printf какой-то "нестандартный".
Сообщение от MikeF Посмотреть сообщение
Вы для чего используете прерывания при отправке, чтобы пока байт отправляется, основная прога исполнялась?
Да, чтобы не выжидать долго. Если бы на STM8S был DMA, все было бы проще.
Реклама:
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 13:23   #1642
MikeF
Прописка
 
Регистрация: 14.04.2005
Сообщений: 116
Сказал спасибо: 12
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
MikeF на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от eddy Посмотреть сообщение
"стандартный printf" недопустимо использовать на STM8! Оно ж отожрет половину флеша.
С чего вдруг недопустимо, я ж использовал. Ну если речь идет про stm8s001, то может быть и отожрет

Сообщение от eddy Посмотреть сообщение
Да, чтобы не выжидать долго.
Понятно, но это имеет смысл только если время отправки байта в первом приближении › времени одного цикла программы, иначе только кодозависимые-джиттероподобные паузы будут между байтами. Или вы следующий байт в прерывании отправляете?

Последний раз редактировалось MikeF; 17.12.2019 в 13:29.
MikeF вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 13:29   #1643
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от MikeF Посмотреть сообщение
А можно целиком этот пример увидеть
Это чисто функции getchar() и putchar() через прерывания.

Сообщение от MikeF Посмотреть сообщение
в нем как раз работают через стандартную stdio
Не совсем. Переназначены стандартные на эти.
Да и зачем Вам? Формируете строку, а потом отдаете эту строку самописной функции вывода строки, которая и выведет строку без запинок и "зависаний" процессора в тяжелом printf-e.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 13:33   #1644
MikeF
Прописка
 
Регистрация: 14.04.2005
Сообщений: 116
Сказал спасибо: 12
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
MikeF на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от akegor Посмотреть сообщение
Не совсем.
Ну а всё же, как найти этот пример? А то у меня нет CV.

Сообщение от akegor Посмотреть сообщение
Да и зачем Вам?
Удобно использовать когда нужно выводить данные с числовыми вставками из переменных.
MikeF вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 14:07   #1645
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,968
Сказал спасибо: 2,552
Сказали Спасибо 11,849 раз(а) в 5,938 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от MikeF Посмотреть сообщение
когда нужно выводить данные с числовыми вставками из переменных
"sprintf" прекрасно сформирует строку. Останется только направить ее в нужное место.
Пример? Да хоть так:
PHP код:
void putstr(char buf) {
    
int i=0;
    while (
buf[i]) {
        
my_putchar(buf[i]);
        
i++;
    }
    return;

my_putchar - вывод на прерываниях.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 14:15   #1646
MikeF
Прописка
 
Регистрация: 14.04.2005
Сообщений: 116
Сказал спасибо: 12
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
MikeF на пути к лучшему
По умолчанию Re: FAQ по STM8

Я понимаю, но заменив printf на sprintf мы не сэкономим память как хотел eddy
Спасибо, буду думать что оптимальнее будет применить.
MikeF вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 15:23   #1647
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от MikeF Посмотреть сообщение
Или вы следующий байт в прерывании отправляете?
Естественно! На что прерывания еще нужны, если нет DMA? Когда буфер полный, выставляю флаг - длина буфера. КА проверяет этот флаг. Как только он ненулевой, а новых посылок не запущено, запускает посылку и дальше работа идет внутри прерывания. Как только посылка отправлена, выставляется флаг готовности, и можно следующий буфер отправлять.
Как выглядят мои "printf" у меня можно на гите посмотреть. Но там ничего эдакого. просто вывод целых чисел в 10 или 16 формате. Ну и иногда нужно выводить числа с фиксированной точностью, там почти то же самое, что в выводе десятичных целых, только в определенной позиции точка еще выводится.
Так формируется выводной буфер. Далее, как вся строка сформирована, скармливаем ее посыльному. А уж посыльным может быть что угодно: UART на DMA или прерываниях, USB, SPI...
__________________
Союз Советских Социалистических Округов Северной Америки

Последний раз редактировалось eddy; 17.12.2019 в 15:25.
eddy вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 17:59   #1648
MikeF
Прописка
 
Регистрация: 14.04.2005
Сообщений: 116
Сказал спасибо: 12
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
MikeF на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от eddy Посмотреть сообщение
КА проверяет этот флаг. Как только он ненулевой, а новых посылок не запущено, запускает посылку и дальше работа идет внутри прерывания.
Т.е. когда на отправку данные сформированы вы разрешаете прерывание TXE и отправляете первый байт, а остальные байты отправляет уже алгоритм в прерывании?
MikeF вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 18:22   #1649
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 813 раз(а) в 590 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: FAQ по STM8

MikeF, именно так.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума   Ответить с цитированием
Непрочитано 17.12.2019, 18:36   #1650
MikeF
Прописка
 
Регистрация: 14.04.2005
Сообщений: 116
Сказал спасибо: 12
Сказали Спасибо 18 раз(а) в 12 сообщении(ях)
MikeF на пути к лучшему
По умолчанию Re: FAQ по STM8

Я думал о таком способе, но он мне показался не прозрачным - часть данных отправляется в одном месте кода, часть - в другом, поэтому я подумал что у вас данные отправляются в основном цикле, а прерывание только "крутит" счетчик и служит флагом что можно отправлять следующие байты. Вообщем взял на себя лишнее
MikeF вне форума   Ответить с цитированием
Ответ

Закладки

Метки
arm, cortex, stm32, stm8


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
STM8(S/L), первые впечатления kison STM8 1423 19.05.2018 19:23
Вопросы и замечания по топику - FAQ по PROTEUS avr123-nm-ru Proteus 291 05.06.2015 20:49
FAQ Импульсный трансформатор alberio Источники питания и свет 87 13.11.2012 18:07


Часовой пояс GMT +4, время: 15:43.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot