Например TDA7294

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





Текущее время: Чт апр 18, 2024 22:08:29

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2500 ]     ... , , , 72, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн апр 10, 2017 17:29:25 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 3
RusikOk писал(а):
тактирование от внутреннего источника?

да
в реальном железе дебаг - все работает:
Изображение
Изображение
г-код на всякий
Спойлер
Код:
#include "stm8s.h"

#define LED_GPIO_ODR GPIOA->ODR
#define LED ((uint8_t)(1<<3))

__IO uint16_t  ms = 0;

INTERRUPT_HANDLER(TIM2_UPD_OVF_IRQHandler, 13) // Прерывание таймера
{
    TIM2->SR1 &= ~TIM2_SR1_UIF; // Очистка флага прерывания по обновлению
    if(ms != 0) ms--;
}

void delay_ms(uint16_t ms16_t) // Задержка мс
{
    ms = ms16_t;
    while(ms);
}

void main( void )
{
    CLK->CKDIVR = 0; //Делитель частоты = 1
   
    GPIOA->DDR |= (uint8_t) (1<<3); // Ножка конфигурируется на вывод
    GPIOA->CR1 |= (uint8_t) (1<<3);  //Выход типа Push-pull
    //GPIOA->CR2 |= (uint8_t) (1<<3);  // Скорость переключения - до 10 МГц.

    TIM2->SR1 &= ~TIM2_SR1_UIF; // Очистка флага прерывания по обновлению
    TIM2->PSCR = 0x06; // //Предделитель на 2^6=64 16000000/64 = 250000 Hz
    TIM2->ARRH = 0; ///Значение перезагрузки 250000/250 = 1000 Гц
    TIM2->ARRL = 250;
    TIM2->IER |= TIM2_IER_UIE; // Прерывание по обновлению счетного регистра азрешено
    TIM2->CR1 |= TIM2_CR1_URS | TIM2_CR1_CEN ; // Прерывание по переполнению разрешено и таймер запущен
    asm("rim");
    while(1)
    {
        LED_GPIO_ODR |= LED;
        delay_ms(500);
        LED_GPIO_ODR &= ~LED;
        delay_ms(500);
    }
}

релиз на всякий:
Вложение:
BlinkRelease.zip [446 байт]
Скачиваний: 306


upd:
проверил на живом светодиоде - блинкает


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

Зарегистрирован: Пн янв 24, 2011 01:51:48
Сообщений: 197
Откуда: Украина, Киев
Рейтинг сообщения: 0
oleg110592 писал(а):
проверил на живом светодиоде - блинкает
огромное спасибо! выяснил в чем проблема. STVP после программирования не переводил контроллер в нормальный рабочий режим


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

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
МК STM8S103.

У меня такое чувство, что если возникло событие внешнего прерывания в момент когда прерывание запрещено (вернее текущий уровень приоритета не перебивается этим событием), то это событие будет потеряно.

На такие мысли меня навел некий мой проект. И если моя догадка верна, то это все объясняет. Кроме того, флагов событий внешних прерываний то нет (по крайней мере для пользователя).

Можно конечно тестовую прошивочку сделать, но сейчас не до нее.

Может кто сталкивался с этим или где-то про это написано.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Использование особенностей GCC для повышения комфорта
СообщениеДобавлено: Чт июн 22, 2017 00:41:39 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
попробуйте последний snapshot

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


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Использование особенностей GCC для повышения комфорта
СообщениеДобавлено: Пт июн 23, 2017 15:38:08 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1244
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Цитата:
кстати да, в недавнее время его неплохо обработали напильником.


Верю! Только где найти документацию на обработанную версию? :) В том документе, что качается с официального сайта, про режим генерации кода для STM8 почти ничего нет, притом что другим архитектурам посвящены целые главы.

Кстати интересно, они таки допилили возможность передавать/возвращать структуры по значению и объявлять обработчики прерываний где угодно, а не только в файле, содержащем точку входа (main)? В документации, позиционируемой как текущая, я как раз прочел, что SDCC этого не умеет. :)

На самом деле, в данный момент я мало заинтересован в SDCC. Как я уже говорил, из STM8 мне интересны только младшие кристаллы, по причине того, что они продаются практически на вес. В этих кристаллах памяти не более 8 кБ, а 8 кБ кода способна генерировать и бесплатная версия Cosmic. Более того, у Cosmic даже есть неограниченная версия для STM8 (+ 32K-версия для STM32), однако ее надо хотя и бесплатно, но регистрировать.

Брать старшие кристаллы я не вижу смысла, потому что STM8 сама по себе достаточно специфичная архитектура, и для чего-то более продвинутого я бы взял Cortex-M0. Или AVR, кстати. В плане аналоговой периферии последние гораздо лучше - как минимум, у них есть встроенная опора. Это одна из причин, по которой ATtiny13 для мелких поделок с аналоговой частью для меня вне конкуренции.

Я вот сейчас раздумываю, как бы прикрутить Cosmic к Programmer's Notepad. В последнем есть настройки используемых инструментов, но я пока не понял, как сделать так, чтобы выбранный инструмент вызывался для каждого файла в проекте, а не только для активного.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Использование особенностей GCC для повышения комфорта
СообщениеДобавлено: Пт июн 23, 2017 18:06:01 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
объявлять обработчики прерываний где угодно, а не только в файле, содержащем точку входа (main)? В документации, позиционируемой как текущая, я как раз прочел, что SDCC этого не умеет.

тут пример прерываний не в main:
https://github.com/MightyPork/stm8s_inline_spl
бесплатная версия Cosmic

Cosmic the evaluation software available on this page is designed to allow the user to build and debug a small application for evaluation purposes.
Чем хуже бесплатный ИАР Restrictions to the Kickstart, size-limited evaluation а 8 Kbyte code size limitation, скачивается без регистрации
Я вот сейчас раздумываю, как бы прикрутить Cosmic к Programmer's Notepad. В последнем есть настройки используемых инструментов, но я пока не понял, как сделать так, чтобы выбранный инструмент вызывался для каждого файла в проекте, а не только для активного.

может makefile?

Народ gdb дебаг прикрутил уже к SDCC stm8, правда для виндовс цигвин нужен, попробовал - дебажить простенько можно:
https://stm8-binutils-gdb.sourceforge.io/

з.ы. извиняюсь - stm8 не по теме, может перенесем обсуждение в соответствующую ветку?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Использование особенностей GCC для повышения комфорта
СообщениеДобавлено: Пт июн 23, 2017 18:12:20 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1244
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Цитата:
тут пример прерываний не в main


То есть таки поддерживает? А в документации ни слова...

Цитата:
Чем хуже бесплатный ИАР


Своей параноидальной лицензионной политикой, даже в бесплатной версии. Я, собственно, по этой причине с некоторых пор от него отказался.

Цитата:
может makefile?


Не, ну так неинтересно. :)

Честно сказать, я не понимаю GDB. Отлаживаю по старинке - светодиодики, UART... :)

Цитата:
извиняюсь - stm8 не по теме, может перенесем обсуждение в соответствующую ветку?


Да, можно. Надеюсь, модераторы перенесут сообщения. А то мы как-то и правда отклонились.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Использование особенностей GCC для повышения комфорта
СообщениеДобавлено: Сб июн 24, 2017 00:04:33 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
Только где найти документацию на обработанную версию?

из исходников собрать) на всякий случай, в аттаче

Кстати интересно, они таки допилили возможность передавать/возвращать структуры по значению

нет. Насколько помню, это принципиальная позиция.
и объявлять обработчики прерываний где угодно, а не только в файле, содержащем точку входа (main)?

Цитата:
If you have multiple source files in your project, interrupt service routines can be present in any of them, but a prototype of the isr MUST be present or included in the file that contains the function main.

линкер не очень умный)


Вложения:
sdccman.zip [562.68 KiB]
Скачиваний: 285
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб июн 24, 2017 07:31:33 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 105
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
У меня такое чувство, что если возникло событие внешнего прерывания в момент когда прерывание запрещено (вернее текущий уровень приоритета не перебивается этим событием), то это событие будет потеряно.
Это вряд ли... в документации вроде ясно описано что прерывание таки произойдет после завершения более приоритетного прерывания...

Кроме того, флагов событий внешних прерываний то нет (по крайней мере для пользователя).
Это можно решить тем что на один порт будет не более одного внешнего прерывания... если например используется 2 внешних прерывания то распихать их по разным портам...
Если же необходимо использовать еще больше внешних прерываний, то наверное все таки придется пересмотреть приоритеты прерываний так чтобы внешние прерывания не задерживались...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб июн 24, 2017 12:45:30 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
shads писал(а):
Это вряд ли...
Надеюсь. Я так тестовую прогу так и не делал. Надо заставить себя. Проверить то просто. Установить для основного тела программы высший приоритет (т.е. запретить прерывания), дать событие, и разрешить прерывание.
Для чистоты эксперимента, можно ввалится в обработчик высшего приоритета, потупить в нем и в это время дать внешнее событие. Хотя по логике STM8 - это вроде как одно и тоже.

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

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн июн 26, 2017 10:17:50 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 5
Зарегистрирован: Вт май 20, 2014 18:14:20
Сообщений: 1338
Откуда: Белгород
Рейтинг сообщения: 0
День добрый, господа.
Возник вопрос. Сначала что сделал и в чем проблема:
Настроил TIM2_CH1 вывод PWM, "поддяжка" к 1. Запускаю таймер, все работает, ШИМ такой как и подсчитал.
А вот когда ОСТАНАВЛИВАЮ таймер возник затык, таймер останавливается в том положении (0 или 1), в котором его застиг момент останова.
Это у меня руки кривые или так и задумано?
Собственно вопрос - как сделать так, чтобы при остановке таймера на выходе была ВСЕГДА 1.

_________________
Дорогу осилит идущий.


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

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Таймер можно не останавливать по-моему.
В регистре TIMx_CCMR1 биты OC1M[2:0] переводите из режима ШИМ на режим 001 и обратно.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн июн 26, 2017 11:20:56 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 5
Зарегистрирован: Вт май 20, 2014 18:14:20
Сообщений: 1338
Откуда: Белгород
Рейтинг сообщения: 0
Спасибо. Попробую.

Попробовал. Все получилось. Таймер останавливать не надо. Еще раз спасибо.

_________________
Дорогу осилит идущий.


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

Карма: 6
Рейтинг сообщений: 33
Зарегистрирован: Ср мар 02, 2011 07:47:39
Сообщений: 834
Откуда: Уфа
Рейтинг сообщения: 0
Набыдлокодил тут с аппаратным i2c( :shock: ). Все как бы работает, но удивляет некий момент:
По даташиту флаг SB должен очищаться после чтения регистра I2C_SR1, но он зараза очищается только после записи адреса слева в I2C_DR.


void i2c_start(void)
{
while(I2C_SR3_BUSY);
I2C_CR2_START=1;
while(!(I2C_SR1_SB)); <---тут он не очищается
volatile char z=I2C_SR1; <---и тут он не очищается
}

По прерываниям тоже самое.
Впринципе и так работает, просто хотелось бы докопаться до истины :)) .


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

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
Цитата:
EV5:SB=1, cleared by reading SR1 register followed by writing DR register with Address.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт июн 29, 2017 00:00:54 
Опытный кот
Аватар пользователя

Карма: 6
Рейтинг сообщений: 33
Зарегистрирован: Ср мар 02, 2011 07:47:39
Сообщений: 834
Откуда: Уфа
Рейтинг сообщения: 0
Ах еклмн. Английский мануал надо читать)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт июл 04, 2017 15:21:10 
Электрический кот

Карма: 13
Рейтинг сообщений: 139
Зарегистрирован: Вс сен 25, 2011 19:09:33
Сообщений: 1040
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
вопрос
есть строка кода:
Код:
 if( ++data->byte_index >= data->bytes ) data->state = encoding_state_tx_busy_lb;

где data->byte_index и data->bytes оба volatile
IAR дает варнинг:
Цитата:
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement


как правильно избавиться от этого варнинга?
если сделать локальную переменную, в нее присвоить значение одной из volatile и затем в сравнении использовать ее то варнинг уйдет
так надо?


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

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
вопрос
IAR дает варнинг:
как правильно избавиться от этого варнинга?

Используй скобки, а то непонятно, что инкрементируешь, data или byte index:
Код:
 if( ++(data->byte_index) >= data->bytes ) data->state = encoding_state_tx_busy_lb;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт июл 04, 2017 17:49:07 
Электрический кот

Карма: 13
Рейтинг сообщений: 139
Зарегистрирован: Вс сен 25, 2011 19:09:33
Сообщений: 1040
Рейтинг сообщения: 0
Медали: 1
Мявтор 3-й степени (1)
GARMIN спасибо, с этим согласен, исправил
что по поводу варнинга? скобки на варнинг не влияют, суть его именно в том, что компилятор считает, что из за отсутствия определенности в последовательности доступа к значениям переменных могут быть неверные результаты


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт июл 04, 2017 17:58:44 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Компильнул в IAR вот такой код.
Код:
 typedef struct {
     char byte_index;
     char bytes;
     char state;
   } data_t;
   data_t *data;
   
   data=0;
   
   if( ++data->byte_index >= data->bytes ) data->state = 1;

Ни одного варнига.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


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

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


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

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


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

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


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