Например TDA7294

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

Текущее время: Вт ноя 25, 2025 05:47:50

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2579 ]     ... , , , 20, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Ср июл 09, 2014 07:20:41 
Родился

Зарегистрирован: Чт янв 16, 2014 10:43:00
Сообщений: 7
Рейтинг сообщения: 0
HHIMERA Спасибо огромное, помогло)
Цитата:
А где откопали этот "stm8s.h" ???

На офф сайте ST вместе с STM8 I2C optimized examples.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт авг 19, 2014 11:22:06 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пн сен 26, 2011 13:48:25
Сообщений: 202
Откуда: Харьков
Рейтинг сообщения: 0
Привет котам:)
Подскажите пожалуйста, можно ли прошить STM8s c помощью stm32f0 discovery или других discovery на stm32? В даташите на discovery упоминаний о такой возможности не нашел :(

_________________
Осилит дорогу идущий
----------
Пишу на Си за еду


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт авг 19, 2014 11:50:23 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Без переделки и смены прошивки - НЕТ...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 02:04:52 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
Дано: STM8S003F3P3, таймер TIM2, IAR 1.42, процедура вида:

TIM2_CR1_OPM = 1; // режим единичного прогона таймера
TIM2_CR1_URS = 1; // не поднимать флаги при "ручной" перегрузке счетчиков
TIM2_EGR_UG = 1; // сама "ручная" перегрузка
TIM2_CR1_CEN = 1; // запуск

С вероятностью 80% действие в строке 3 зашибает последующий старт таймера в строке 4. Таймер тупо не стартует. Ассемблерный код в отладчике виден, как рафинированная очередь BSET-ов без каких либо посторонних вкраплений. Вставка пары нопов между строками 3 и 4 решает проблему, но немое недоумение остается. Вроде ж солидное устройство, а работает только при помощи веревок, палок и грязных тряпок. Чтение эрраты и референса не принесло ни просветления, ни облегчения. Одна тоска по поводу несовершенства мира и печаль за бесцельно прожитые годы. :)


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 11:43:09 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Цитата:
Вставка пары нопов между строками 3 и 4 решает проблему, но немое недоумение остается. Вроде ж солидное устройство, а работает только при помощи веревок, палок и грязных тряпок. Чтение эрраты и референса не принесло ни просветления, ни облегчения.

"Ваше незнание не освобождает от наказания!"(С)
Всё там верно... для UG нужно два дополнительных такта... и NOP'ы там не лишние... Просто если после UG есть ещё настройки, то NOP'ы не нужны... кроме последующего сброса флагов... Между UG и сбросом флагов тоже нужны NOP'ы... иначе они не сбросятся...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 13:45:43 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Bit 0 UG: Update generation
This bit can be set by software, it is automatically cleared by hardware.
0: No action
1: Re-initializes the counter and generates an update of the registers. Note that the prescaler
counter is also cleared.

Будет ли правильным подождать пока бит не станет нулем? Или это не является сигналом готовности?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 14:20:55 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Как по мне... проще два NOP'а... Тем более... в случае дополнительных настроек таймера они могут и не понадобиться... их функции выполнят последующин команды...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 20:32:39 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
Все правильно, я просто спустил вниз пару строк инициализации, которые шли до UG, а теперь стали после. Проблем с правильной инициализацией таймера это не вызывает. Возмутительно тут другое -- тот же RM0016 нигде на видном месте не предупреждает о каких-то там дополнительных клоках, которые надо выжидать после UG. Мне, во всяком случае, этого обнаружить не удалось.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 22:05:01 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Да какбэ...

RM0016
17.4.2 Internal clock source (fMASTER)

Figure 44. Control circuit in normal mode, fCK_PSC = fMASTER

показывает что к чему... :)

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 22:27:59 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
Что-то сей замечательный рисунок никаких интимных подробностей про нестандартную ориентацию бита CEN не высвечивает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт сен 11, 2014 22:34:54 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Там чётко видно наличие двух тактов после установки бита UG... этого достаточно...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пт сен 12, 2014 00:17:49 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
Там же четко видно, что на CEN оно никак не влияет. Одна сплошная дезинформация.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пт сен 12, 2014 09:22:31 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Дезинформация и звездёж это то, что что-то там не работает или не описано... Всё там работает и всё там описано (пусть и в неявной форме) "согласно купленным билетам"... и CEN тут не причём... всё претензии надуманны!!! Если что-то не работает или работает не так - что-то не поняли или не дочитали... разбирайтесь... В вашем случае... нужно просто разобраться с режимом OPM... что это такое и с чем его едят... Производитель не обязан сопливить-разжёвывать каждый бит и каждую комбинацию с другими битами... все основные моменты указаны в референсе...

Цитата:
Bit 3 OPM: One-pulse mode
0: Counter is not stopped at update event
1: Counter stops counting at the next update event (clearing the CEN bit)


Таймера STM8S, STM8L и STM32 одинаковы по сути и работе... разница только в названии битов и других мелочах...
Из явных глюков знаю только один - самопроизвольный запуск таймера TIM1 в режиме Gate Mode при установке бита UG в STM32... всё!!!

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб сен 13, 2014 12:18:06 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1398
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7316
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Три года назад я задавал уже этот вопрос, но может, что за это время изменилось...
Появились ли компиляторы C под stm8s, stm8l под линукс?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб сен 13, 2014 13:19:28 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
не пробовал http://www.diary.ru/~teplofizik/p189593410.htm?oam
http://sourceforge.net/projects/sdcc/fi ... ot_builds/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс сен 14, 2014 03:10:02 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
HHIMERA писал(а):
CEN тут не причём...


Конечно надуманы. Другие биты можно выставить, но не CEN. И это такая мощная фича, что она тайно присутствует, похоже, во всей линейке STM8 и для всех таймеров. Попробовал четвертый таймер на STM8L051. Для иллюстрации, старт таймера (сразу же после ручного сброса) выполняется инструкцией TIM4_CR1 = 0xFF. Встают все биты, которые могут там встать, но CEN остается в нуле. Примечательно, что поведение программы зависит еще и от неких "оптимизационных" свойств компилятора. Я не зря в исходном сообщении упомянул, что событие воспроизводится с вероятностью 80%. Собирая один и тот же исходник с разными параметрами оптимизации (речь про IAR 1.42), один и тот же ассемблерный код в окне отладчика в этом месте вдруг начинает работать, т. е. злосчастный CEN замечательно устанавливается и таймер запускается. Всегда. Можно заливать в устройство и отдавать в продакшн. Что это? Нюансы выравнивания? Конвейер ? Потусторонние силы? Черта лысого! Это грабли, заботливо разложенные ST-шниками, чтобы программерам жизнь медом не казалась. "Тут играем, тут не играем, здесь жирное пятно - рыбу заворачивали"...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс сен 14, 2014 09:46:02 
Держит паяльник хвостом
Аватар пользователя

Карма: 16
Рейтинг сообщений: 204
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 933
Откуда: от туда
Рейтинг сообщения: 0
А почитать инструкцию? Ну, развёл срач на пустом месте.
Для того, чтобы таймер заработал с новыми настройками нужно либо дождаться его переполнения, либо вручную передёрнуть TIM4->EGR = TIM4_EGR_UG;
Про UPDATE EVENT слышал?
Писатель.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн сен 15, 2014 10:15:44 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
а что должен делать этот код:
Код:
TIM2_CR1_OPM = 1; // режим единичного прогона таймера
TIM2_CR1_URS = 1; // не поднимать флаги при "ручной" перегрузке счетчиков
TIM2_EGR_UG = 1; // сама "ручная" перегрузка
TIM2_CR1_CEN = 1; // запуск

если, согласно RM для таймера2 нет "режима единичного прогона таймера"
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн сен 15, 2014 12:56:27 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
ответ на на вопрос "что делает код" не получил, если хотелось задержку получить, то я для STM32 делал так:
Код:
void delay_us(uint16_t delay)
{
     TIM3->PSC = 48-1; //устанавливаем предделитель
     TIM3->ARR = delay; //устанавливаем значение переполнения таймера, а значит и значение при котором генерируется Событие обновления
     TIM3->EGR |= TIM_EGR_UG; //Генерируем Событие обновления для записи данных в регистры PSC и ARR
     TIM3->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; //Запускаем таймер записью бита CEN и устанавливаем режим Одного прохода установкой бита OPM
     while ((TIM3->CR1 & TIM_CR1_CEN)!=0);
}

все прекрасно работает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн сен 15, 2014 13:37:06 
Друг Кота

Карма: 20
Рейтинг сообщений: 230
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6452
Рейтинг сообщения: 0
oleg110592 писал(а):
ответ на на вопрос "что делает код" не получил


Между тем, я дал вам исчерпывающий ответ. Таймер должен запуститься, досчитать до конца и остановиться. Мне удивительно, что я объясняю такие вещи.

Цитата:
TIM3->CR1 |= TIM_CR1_CEN|TIM_CR1_OPM; //Запускаем таймер записью бита CEN и устанавливаем режим Одного прохода установкой бита OPM
все прекрасно работает


Эта инструкция разворачивается в несколько команд на ассемблере, выполнение которых занимает больше времени, чем требуется для переинициализации таймера. В таком виде оно просто обязано работать "прямо из каропки". Уберите "или" перед знаком равно, чтобы получилась только одна команда "MOV", тогда и экспериментируйте. UG тоже неплохо бы одной командой устанавливать. Но опять же, не могу утверждать, что на STM32 оно будет вести себя так же, как и на STM8. Не смотря на подобную периферию, разница в аппаратных реализациях очевидна, что вполне может допускать разные варианты, которые я не проверял. Пока лишь могу утверждать, что "внеприродная аномалия" наблюдалась мной на двух камнях -- STM8S103F3 и STM8L051F3. Во избежание разночтения или недопонимания, вновь обращаю внимание, что суть "рукотворного феномена" в том, что в зависимости от сторонних обстоятельств, таймер может либо запускаться, либо нет. Проблема и лежит в той плоскости, что если таймер запустится сейчас, то это не означает, что он будет запускаться всегда.

HHIMERA писал(а):
Слов нет...

Очень часто этому состоянию сопутствует и отсутствие мыслей.


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

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


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

Сейчас этот форум просматривают: жирафик и гости: 17


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

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


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