Например TDA7294

Форум РадиоКот • Просмотр темы - Программирование STM8
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт июл 04, 2025 08:48:04

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2563 ]     ... , , , 9, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 18:32:37 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
а ни кто не знает по чем космик для предприятий?

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 18:45:08 
Опытный кот
Аватар пользователя

Зарегистрирован: Вт янв 20, 2009 14:49:08
Сообщений: 890
Откуда: Гондурас, Мурманск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Судя по тому, что у Raisonance профессиональная версия Ride7 стоит 990 евро, думаю у космика цена не сильно отличается.

_________________
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 20:02:31 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
DrWatson писал(а):
Использование ИЛИ вместо сложения как минимум уберет условный переход и формирование переноса. Вообще в данном случае использование сложения незачем.
Да это понятно, я с "или" и начинал, просто уже всё подряд пробовал и последнее в форум и процитировал. С "или" у него даже хуже вышло, тоже с rlwa/rrwa (и ведь знает, гад, эти команды, почему не использовал их так, как я после двух дней чтения доки на STM8 смог?).

Вариант с разбивкой на байты и занесением через указатель... В принципе, можно слепить такой макрос LOAD_SFRW(var,sfraddr) и им пользоваться. Но там дальше с этой локальной переменной дальше вычисления идут, принудительно кидать её в память означает вязать руки оптимизатору. Хотя такому оптимизатору... Да и не люблю я такие привяки с тех пор, когда пришлось для AVOCET C51 15+ лет назад лепить
Код:
#define EQU(a,b) (((a)^(b))==0)
 if (EQU(a,b)) {...}
потому что на if (a==b) он такую жуть генерил...
Неправильно это, так прогибаться перед компилятором. А через пару лет, когда его поправят -- опять макросы и привычки менять.

Последняя капля от IAR:
Код:
  PB_ODR_ODR5 = 1; // BSET нужный_адрес, 5
  PB_ODR_ODR5 = 0; // BCLR нужный_адрес, 5
Всё красиво. А вот это:
Код:
  PB_ODR_ODR5 = ~PB_ODR_ODR5;
  PB_ODR_ODR5 = !PB_ODR_ODR5;
  PB_ODR ^= (1 << 5);
Во всех вариантах компилирутся в жуть с загрузкой PB_ODR в аккумулятор и разные вычисления вместо банального BCPL. Мало того, что длинно и долго, так ещё и неатомарно :-(

Космики с резонансами выглядят лучше.
IAR, конечно, допилят со временем, но...

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 20:14:21 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
Zheleznjakov писал(а):
с локальными
Код:
main.c:34       ++uu;
0x80f9 <main+2>             0x0C01          INC   (0x01,SP)           INC   (0x01,SP)
main.c:36      BYTES(ticks)[1] = TIM3->CNTRH;
0x80fb <main+4>             0xC6528C        LD    A,0x528c            LD    A,0x528c
0x80fe <main+7>             0x6B04          LD    (0x04,SP),A         LD    (0x04,SP),A
main.c:37      BYTES(ticks)[0] = TIM3->CNTRL;
0x8100 <main+9>             0xC6528D        LD    A,0x528d            LD    A,0x528d
0x8103 <main+12>            0x6B03          LD    (0x03,SP),A
Ой как хорошо! Локальные на стеке!

IAR придумал себе «виртуальные регистры» -- 16 байт в начале области короткой адресации, в смысле в самом начале ОЗУ, выделены в секцию .vregs, в которой размечено шестнадцать байтовых "регистров", накрывающихся восемью словными и четырьмя двухсловными. Везде, где не хватает A,X,Y -- используются эти виртуальные регистры.

Из-за этого на входе в обработчик прерываний стоит горсть push тих байтов вместо
SUB SP, #сколько_надо_для_локальных_обработчика ...

Из-за этого контекст вырос, переключение задач (речь идёт о порте scmRTOS под STM8) резко удлинняется...

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 20:17:39 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
С виртуальными регистрами -- похоже, они решил так себе упростить жизнь, у AVR/MCS51/ARM/... регистров валом и середина компилятора может быть просто рассчитана на их наличие.
Если так, а не какая-то умная задумка, которую я ещё не понял и не вижу от неё выиграша, то ждать улучшений не приходится, модель работы компилятора -- не оптимизатор, меняться не будет.

Да, кстати, показали космик, а резонанса нету?

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 21:16:52 
Опытный кот
Аватар пользователя

Зарегистрирован: Вт янв 20, 2009 14:49:08
Сообщений: 890
Откуда: Гондурас, Мурманск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А может у IAR есть какая-то настройка, чтобы локальные переменные на стек кидались?
Raisonance скачал, но не ставил, поскольку любовь к халяве на генетическом уровне заставила искать пилюлю, которая быстрее нашлась для космика. (Может и не понадобится, но "шоб було"))
ЗЫ: А что мешает на другом компиляторе писать? (Хотя, если деньги "уплочены", то придется, иначе можно и триал от резонанса использовать, если кода не больше 32к).

_________________
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 21:29:15 
Опытный кот
Аватар пользователя

Зарегистрирован: Вт янв 20, 2009 14:49:08
Сообщений: 890
Откуда: Гондурас, Мурманск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Zheleznjakov писал(а):
мне проще вот так оборачивать (ещё с авр-ки ползет)
Код:
#define BYTES(Value)    ((uint8_t *) & (Value))

и применять логичнее

А я б завернул так (для работы с байтами двухбайтных):
Код:
#define HI(Val) (*((unsigned char *) &(Val)))
#define LO(Val) (*((unsigned char *) (&(Val))+1))

HI(ticks)=TIM3_CNTRH;
LO(ticks)=TIM3_CNTRL;

Блин надо это запомнить или куда-то записать )))

_________________
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 21:36:47 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
DrWatson писал(а):
А может у IAR есть какая-то настройка, чтобы локальные переменные на стек кидались?
Меняется только количество виртуальных регистров -- 12 или 16 байт.
Исходя из того, что размер секции .vregs по map-е от этой настройки не зависит, я подозреваю, что у библиотеки на этот счёт может быть своё мнение (кстати, при «просьбе кинуть на стек» и библиотеки подменять нужно было бы).

По поводу IAR -- да никаких проблем, просто человек, попросивший меня «спортить» scmRTOS, просил IAR.
Но без фанатизьмы, эта тема уже заставила задуматься :-)

Мне так вообще всё равно, я в ближайшее время stm8 не собираюсь нигде ставить. Разве что
DrWatson писал(а):
можно и триал от резонанса использовать, если кода не больше 32к.
Юридический и технический вопросы.
Юр: как там с триалом -- в серию можно на нём делать?
Техн: оно только под win ?

Исключительно из соображений «чтобы не даром толочься вокруг stm8» мне сейчас есть куда поставить STM8L151 (нужны 12 бит АЦП и ЦАП), кода там врядли больше 8К будет. Но туда с тем же успехом и ~в те же деньги станет STM32F100.
Компилироваться будет тем же gcc и зашиваться той же FT2232 и под той же убунтой, что и для STM32F103, который в том же изделии будет стоять. Да, у него и АЦП и ЦАП будут, но там удобнее и логичнее часть работы вынести на другую плату со своим микроконтроллером.
Так что для оправдания возни с STM8 можно туда его поставить, но только если это не потребует большого дополнительного геморроя.

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб май 14, 2011 21:46:07 
Опытный кот
Аватар пользователя

Зарегистрирован: Вт янв 20, 2009 14:49:08
Сообщений: 890
Откуда: Гондурас, Мурманск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
С триалом коммерческие проекты, думаю вряд-ли. Насколько я понимаю он чисто для ознакомления, изучения.
Экономически и тд целесообразнее ИМХО делать весь проект на кортексах - одна среда, один программатор и т.п.
На счет Ride7 и COSMIC под линукс не помню (не задавался этим вопросом), на их сайтах я думаю эта информация должна быть.

_________________
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс май 15, 2011 04:32:36 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
DrWatson писал(а):
Zheleznjakov писал(а):
мне проще вот так оборачивать (ещё с авр-ки ползет)
Код:
#define BYTES(Value)    ((uint8_t *) & (Value))

и применять логичнее

А я б завернул так (для работы с байтами двухбайтных):
Код:
#define HI(Val) (*((unsigned char *) &(Val)))
#define LO(Val) (*((unsigned char *) (&(Val))+1))

HI(ticks)=TIM3_CNTRH;
LO(ticks)=TIM3_CNTRL;

Блин надо это запомнить или куда-то записать )))

не совсем удобно, а если переменная 32 бита?
Код:
   uint32_t ticks;   
   
   BYTES(ticks)[1] = TIM3->CNTRH;
   BYTES(ticks)[0] = TIM3->CNTRL;
   BYTES(ticks)[2] = TIM3->CNTRH;
   BYTES(ticks)[3] = TIM3->CNTRL;

у меня их два:
Код:
#define BYTES(value)    ((uint8_t *) & (value))
#define WORDS(value)    ((uint16_t *) & (value))

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн май 16, 2011 03:21:45 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
DrWatson писал(а):
Экономически и тд целесообразнее ИМХО делать весь проект на кортексах - одна среда, один программатор и т.п.
В том-то и дело.
Хотя «одна среда» (GCC + C::B или эклипса, наконец-то) и «один программатор» (FT2232) возможны и для связки Cortex-M3 + AVR :-)

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн май 16, 2011 03:30:45 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
avreal писал(а):
Из-за этого на входе в обработчик прерываний стоит горсть push тих байтов вместо
SUB SP, #сколько_надо_для_локальных_обработчика ...

Из-за этого контекст вырос, переключение задач (речь идёт о порте scmRTOS под STM8) резко удлинняется...
Не так всё страшно (контекст всё равно переключается ощутимо быстрее, чем для AVR при той же тактовой) и не так всё просто.
У STM8 не нашлось адресации, косвенной по ячейке со смещением к стеку. Т.е. чего-то такого [(offset,SP)].
А вот по ячейке памяти косвенно [shortmem.w] и косвенно-индексно ([shortmem,w],X) обращаться можно. Виртуальные регистры дают кучку указателей c достаточно компактным и быстрым обращением без дёрганья туда-сюда X/Y.
Так что после допиливания оптимизатора должно быть нормально. Только вот когда?

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт май 17, 2011 22:37:15 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
Ну вот первая прикидка scmRTOS STM8/IAR

Сделано сразу под scmRTOS v4.00, но пока:
- переключатель контекстов только прямым вызовом
- нет возможности задать отдельный стек для прерываний

Модели памяти кода работают все.
Модель памяти данных LARGE очень уж неэффективна (код примера 1-EventFlag распухает с ~1850 байт до ~3050), так что не вижу причин и заморачиваться с ней.

Примеры 1-EventFlag (в объёме этой статьи, чтобы легче сравнивать с AVR) и 4-Debug (пример использования новых возможностей ОС v4.00) рабочие. Только при максимальной оптимизации на скорость 4-Debug показывает цену на дрова, а не % времени. При максимальной-сбалансированной, максимальной-на-размер, средней -- всё нормально.
Глюк мой или компилятора -- ещё не разбирался.

p.s. Оно «в процессе», я уже сократил на несколько байт и тактов :-) переключатель контекста, где-то что-то по мелочам подправил... Но всё то мелочи и архив на сайте пока не менял. Что-то существнное будет, тогда уже дополню.

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Ср май 18, 2011 00:19:24 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 9
Зарегистрирован: Пт июн 12, 2009 19:17:35
Сообщений: 487
Рейтинг сообщения: 0
DrWatson писал(а):
На счет Ride7 и COSMIC под линукс не помню
нет пока ничего


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пт май 27, 2011 09:35:20 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
DrWatson писал(а):
А что мешает на другом компиляторе писать?
Хех... Ну вот нашлось опять немного времени для темы «scmRTOS для STM8»...
Глянул ближе на COSMIC, а он без плюсов. Я среди всех этих gcc/IAR/Keil уже как-от отвык от такого :-)
На С-шный их компилятор для общего развития посмотрю, конечно. Но «космического порта scmRTOS» не будет.

Хочу gcc/stm8 :))

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пт июн 03, 2011 06:31:30 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
Всем, привет!

Вопрос по расположению функций в ОЗУ.

Использую компилятор cosmic.

Сейчас делаю согласно документации:

1) выделяю секцию в озу
2) обертываю функцию в секцию
3) при загрузке копирую в память

Вопрос как рационально использовать ОЗУ, сохранив при этом безопасность использования функций?

Сейчас не получается расположить разные функции в одной и той же области озу.

Например:
1) выделить секцию
2) загрузить функцию_1
3) после выполнения функции_1, загрузить функцию_1, в ту же секцию

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Ср июн 22, 2011 21:59:00 
Открыл глаза

Зарегистрирован: Чт июн 25, 2009 16:51:32
Сообщений: 60
Откуда: Саратов
Рейтинг сообщения: 0
Кто-то с Ресонанс и СТМ8 работает? Как там описать прерывания и работать с ними? Если можно фрагменты кода


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт июн 23, 2011 17:25:26 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
Написал немножко касательно расположения кода в ОЗУ
http://ziblog.ru/2011/06/23/stm8-ndash- ... da-iz-ozu/

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс июл 17, 2011 19:53:33 
Родился

Зарегистрирован: Вс ноя 23, 2008 12:03:37
Сообщений: 8
Рейтинг сообщения: 0
DrWatson писал(а):
любовь к халяве на генетическом уровне заставила искать пилюлю, которая быстрее нашлась для космика

здравствуйте! а не подскажете, где её (рабочую) взять? в своё время накачал даже несколько версий космика, но ни одна из пилюль ни с одной из версий так и не взлетела :(

_________________
don't believe what u see,
don't believe what u read


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн июл 18, 2011 04:06:21 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб июн 12, 2010 16:19:17
Сообщений: 190
Откуда: Россия, Томск
Рейтинг сообщения: 0
Вам не хватает фришной версии с ограничением в 32кБ? по моему более чем достаточно :)

_________________
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2563 ]     ... , , , 9, , , ...  

Часовой пояс: 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