Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программирование STM8

Сообщение HHIMERA »

TRIOD писал(а):Хочу прошить, но ST-Link не имею хочу попробывать через RS232.

Прошьёте... но только один раз...
Чтобы не один раз - там конфигурацию МК править нужно... так что... лучше сразу покупайте Discovery...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Re: Программирование STM8

Сообщение TRIOD »

Я вкурсе что надо при первой прошике надо запрограмировать биты отвечающие за работу bootlader.
Тут на сайте в статье "Измеритель параметров Тиля-Смолла на МК"http://www.radiokot.ru/circuit/digital/measure/87/ написано как это сделать.

Кстае может мне кто прояснить что к чему.
В статье написано в что готовый фаил прошивки в конце добовляется строка S105487E55AA35.
Я понимаю что 487Е это адрес байтов отвечающих за загрузчик, 55AA это значение для записи, но что значит S105 и 35.
Только абсолютная пустота бездны принесёт мне покой.
Serj_K
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

Re: Программирование STM8

Сообщение Serj_K »

TRIOD писал(а):Я понимаю что 487Е это адрес байтов отвечающих за загрузчик, 55AA это значение для записи, но что значит S105 и 35.

http://ru.wikipedia.org/wiki/SREC
Аватара пользователя
selevo
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт ноя 26, 2009 13:44:03
Откуда: Ижевск
Контактная информация:

Re: Программирование STM8

Сообщение selevo »

есть ли в stm8s прерывание по падению напряжения ?
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Программирование STM8

Сообщение ChipKiller »

selevo писал(а):есть ли в stm8s прерывание по падению напряжения ?
Analog watchdog не устроит?
Аватара пользователя
selevo
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт ноя 26, 2009 13:44:03
Откуда: Ижевск
Контактная информация:

Re: Программирование STM8

Сообщение selevo »

ну эт стандартно...

а кто тестил максималюнюю частоту которую можно на прескалер счётчиков подавать ?

нигде не могу найти данные.
Аватара пользователя
selevo
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт ноя 26, 2009 13:44:03
Откуда: Ижевск
Контактная информация:

Re: Программирование STM8

Сообщение selevo »

я что-то не понял у МК входы таймеров одновременно и выходы что ли ?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программирование STM8

Сообщение HHIMERA »

А даташит вслух... на форуме читать обязательно??? :))
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программирование STM8

Сообщение dosikus »

Меня терзают смутные сомнения .
selevo решил из китаезных вольтметров частотомеры наклепать ? :)))
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Программирование STM8

Сообщение HHIMERA »

Та да... остаётся только пожелать ему удачи... :)))
Хотя... на STM8S можно сделать... хардварный... :music:
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Программирование STM8

Сообщение dosikus »

selevo писал(а):я что-то не понял у МК входы таймеров одновременно и выходы что ли ?

Еще много чудных открытий предстоит . :)))
Когда мы увидим в продаже частотомеры/тахометры ?
Аватара пользователя
selevo
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт ноя 26, 2009 13:44:03
Откуда: Ижевск
Контактная информация:

Re: Программирование STM8

Сообщение selevo »

LED вольтметр напишете мне на 4 разряда
100р закину на тел.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Программирование STM8

Сообщение ibiza11 »

ну раз так просите:
"LED вольтметр на 4 разряда"
денег не надо :)
Ставим плюсы: )
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Программирование STM8

Сообщение Alexeyslav »

4 разряда - это всего 4 компаратора и 4 светодиода. Тоже ведь разряды...
Ruslan-maniak
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

Re: Программирование STM8

Сообщение Ruslan-maniak »

Други, подскажите, существует ли описание стандартной библиотеки работы с периферией на STM8L. А то библиотека есть, а описание нигде не могу найти. В апноутах привязка идёт к регистрам а не функциям либы. А вот что бы как на STM32 было описалово неужели нет?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Программирование STM8

Сообщение ibiza11 »

в самой библиотеке есть help файл, в котором все функции описаны.
Ставим плюсы: )
Аватара пользователя
Volt_A
Родился
Сообщения: 15
Зарегистрирован: Чт июн 21, 2012 09:59:29

Re: Программирование STM8

Сообщение Volt_A »

Уважаемые, вопрос дилетанта, как настроить прерывание на STM8S? Есть такой код (собственно учебный):
Спойлер/*----------
(Тестовая программа для STM8S103F2P6)
PC7(p13) и PC4(p14) инверсный - земля(GND),светодиоды анодом к VCC(+3.3V),
PD2 (p19), PD4 (p1) (подтяжка через 24кОм на VCC(+3.3V)

----------*/
#include "iostm8s103f2.h" // подключение заголовочного файла с объявлениями регистров, масок и битов

#define STRINGVECTOR(x) #x //как я понял, здесь берется прерывание (вектор)?
#define ISR( a, b ) \
_Pragma( STRINGVECTOR( vector = (b) ) ) \
__interrupt void (a)( void )


//Задержка на цикле. Примерно 3 секунды. Знаю, что быдлокод, таймеры ещё не осилил...
void SomeDelay()
{
for (unsigned long delay_count=0; delay_count<300000; delay_count++);
};

ISR(Pin2_interrupt, EXTI6_vector) //Собственно, здесь мне и не понятно, как сделать прерывание по пину PD2?
{
while (PD_IDR_bit.IDR2 == 0)
{
PC_ODR_bit.ODR7 = 0; //Подтянем пин к земле - светодиод горит
PC_ODR_bit.ODR4 = 0; //Подтянем пин к земле - светодиод горит
SomeDelay();
};

EXTI_SR1_bit.P2F = 1; //Перед выходом из прерывания необходимо вручную сбросить флаг,
//Иначе тут-же вернемся обратно в обработчик.
};

int main( void )
{

PC_DDR_bit.DDR7 = 1; // Ножка PC7 конфигурируется на вывод
PD_CR1_bit.C17 = 1; // Выход типа Push-pull
PD_CR2_bit.C27 = 1; // Скорость переключения - до 10 МГц.

PC_DDR_bit.DDR4 = 1; // Ножка PC4 конфигурируется на вывод
PC_CR1_bit.C14 = 1; // Выход типа Push-pull
PC_CR2_bit.C24 = 1; // Скорость переключения - до 10 МГц.

PD_DDR_bit.DDR2 = 0; // Ножка PD2 конфигурируется на ввод
PD_CR1_bit.C12 = 0; // Выход плавающий - установлен подтягивающий резистор
PD_CR2_bit.C22 = 1; // Прерывание ВКЛючено

PD_DDR_bit.DDR4 = 0; // Ножка PD4 конфигурируется на ввод
PD_CR1_bit.C14 = 0; // Выход плавающий - установлен подтягивающий резистор
PD_CR2_bit.C24 = 0; // Прерывание отключено

//Настраиваем оба прерывания на срабатывание по спаду напряжения (задний фронт)
EXTI_CR2_bit.P2IS = 2;

asm("RIM"); //Глобально разрешаем прерывания

while (1) //В цикле будем переключать светодиоды
{
if (PD_IDR_bit.IDR4 == 0) // Проверяем состояние кнопки
{
PC_ODR_bit.ODR7 = 0; //Подтянем пин к земле - светодиод горит
PC_ODR_bit.ODR4 = 1; //Подтянем к +VCC - светодиод погас
SomeDelay(); // ждем 3 секунды
} else
if (PD_IDR_bit.IDR4 == 1) // Проверяем состояние кнопки
{
PC_ODR_bit.ODR7 = 1; //Подтянем к +VCC - светодиод погас
PC_ODR_bit.ODR4 = 0; //Подтянем пин к земле - светодиод горит
SomeDelay(); // ждем 3 секунды
}
}
}

Прерывание "стянутое" с примера STM8L, не работает, значит, если мыслить логически, на "S" оно реализуется другим способом? Просьба не отправлять в мануалы (я там уже был :))) ), а если не трудно, привести пример практической работы с прерыванием по входам. Заранее спасибо.
P.S. JAR 1.40.1, хидер от него же...
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

Попробуйте:

Код: Выделить всё

#pragma vector = <номер прерывания>                           
__interrupt void <имя прерывания>(void)             
{
}

Где:
<номер прерывания> - номер прерывания в hex формате. Берется значение из даташита на микроконтроллер и к нему прибавляется 2.
<имя прерывания> - любое имя, понятное вам.
Аватара пользователя
Volt_A
Родился
Сообщения: 15
Зарегистрирован: Чт июн 21, 2012 09:59:29

Re: Программирование STM8

Сообщение Volt_A »

oleg110592, спасибо вам, добрый человек, начал потихоньку вникать, вопрос возник такой, возможно ли в прерывании (либо в цикле основной программы) оперативно переключать порты на ввод/вывод, ну что-то типа этого (пример компилируется на JAR 1.4 без ошибок, мк не прошивал, как-то боязно спалить):
Спойлер

Код: Выделить всё

#pragma vector = 8      //вектор прерывания для порта D (6+2(RST&TRAP без номера)JAR обрабатывает, даже если число в десятичном формате!)                    
__interrupt void Pin2_interrup (void)
{
 while (PD_IDR_bit.IDR2 == 0) //Пока PD2=0 выполняем цикл...
 {
  PD_DDR_bit.DDR2 = 1;   // Ножка PD2 конфигурируется на вывод (выдет или нет???)
  PD_CR1_bit.C12 = 1;   // Выход типа Push-pull
  PD_CR2_bit.C22 = 1;   // Скорость переключения - до 10 МГц.
 
  PD_ODR_bit.ODR2 = 1;  //Подтянем пин к VCC(+3.3V)(ничего не сгорит?)
  PC_ODR_bit.ODR7 = 0; //Подтянем пин к земле - светодиод горит
  PC_ODR_bit.ODR4 = 0; //Подтянем пин к земле - светодиод горит
  SomeDelay(); // ждем 3 секунды
 }
EXTI_CR1_bit.PDIS = 1; //Перед выходом из прерывания необходимо вручную сбросить флаг,
  //Иначе тут-же вернемся обратно в обработчик.

}
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Re: Программирование STM8

Сообщение The_D »

Думаю можно, на стм32ф1 спокойно реализовывал емкостной датчик, там как раз надо было переключать режимы работы ножки на лету.
Ответить

Вернуться в «Разные вопросы по МК»