Страница 13 из 130
Re: Программирование STM8
Добавлено: Ср фев 06, 2013 12:21:06
HHIMERA
TRIOD писал(а):
Хочу прошить, но ST-Link не имею хочу попробывать через RS232.
Прошьёте... но только один раз...
Чтобы не один раз - там конфигурацию МК править нужно... так что... лучше сразу покупайте Discovery...
Re: Программирование STM8
Добавлено: Ср фев 06, 2013 18:55:57
TRIOD
Я вкурсе что надо при первой прошике надо запрограмировать биты отвечающие за работу bootlader.
Тут на сайте в статье "Измеритель параметров Тиля-Смолла на МК"
http://www.radiokot.ru/circuit/digital/measure/87/ написано как это сделать.
Кстае может мне кто прояснить что к чему.
В статье написано в что готовый фаил прошивки в конце добовляется строка S105487E55AA35.
Я понимаю что 487Е это адрес байтов отвечающих за загрузчик, 55AA это значение для записи, но что значит S105 и 35.
Re: Программирование STM8
Добавлено: Пт мар 22, 2013 14:04:38
Serj_K
TRIOD писал(а):Я понимаю что 487Е это адрес байтов отвечающих за загрузчик, 55AA это значение для записи, но что значит S105 и 35.
http://ru.wikipedia.org/wiki/SREC
Re: Программирование STM8
Добавлено: Пт май 17, 2013 14:57:04
selevo
есть ли в stm8s прерывание по падению напряжения ?
Re: Программирование STM8
Добавлено: Пт май 17, 2013 16:15:22
ChipKiller
selevo писал(а):есть ли в stm8s прерывание по падению напряжения ?
Analog watchdog не устроит?
Re: Программирование STM8
Добавлено: Пт май 17, 2013 17:36:50
selevo
ну эт стандартно...
а кто тестил максималюнюю частоту которую можно на прескалер счётчиков подавать ?
нигде не могу найти данные.
Re: Программирование STM8
Добавлено: Пт май 17, 2013 18:35:03
selevo
я что-то не понял у МК входы таймеров одновременно и выходы что ли ?
Re: Программирование STM8
Добавлено: Пт май 17, 2013 20:12:26
HHIMERA
А даташит вслух... на форуме читать обязательно???

Re: Программирование STM8
Добавлено: Пт май 17, 2013 20:36:24
dosikus
Меня терзают смутные сомнения .
selevo решил из китаезных вольтметров частотомеры наклепать ?

Re: Программирование STM8
Добавлено: Пт май 17, 2013 20:43:18
HHIMERA
Та да... остаётся только пожелать ему удачи...
Хотя... на STM8S можно сделать... хардварный...

Re: Программирование STM8
Добавлено: Пт май 17, 2013 21:09:54
dosikus
selevo писал(а):я что-то не понял у МК входы таймеров одновременно и выходы что ли ?
Еще много чудных открытий предстоит .
Когда мы увидим в продаже частотомеры/тахометры ?
Re: Программирование STM8
Добавлено: Сб май 18, 2013 13:26:08
selevo
LED вольтметр напишете мне на 4 разряда
100р закину на тел.
Re: Программирование STM8
Добавлено: Сб май 18, 2013 21:51:17
ibiza11
ну раз так просите:
"LED вольтметр на 4 разряда"
денег не надо

Re: Программирование STM8
Добавлено: Сб май 18, 2013 22:57:55
Alexeyslav
4 разряда - это всего 4 компаратора и 4 светодиода. Тоже ведь разряды...
Re: Программирование STM8
Добавлено: Ср июл 03, 2013 07:31:42
Ruslan-maniak
Други, подскажите, существует ли описание стандартной библиотеки работы с периферией на STM8L. А то библиотека есть, а описание нигде не могу найти. В апноутах привязка идёт к регистрам а не функциям либы. А вот что бы как на STM32 было описалово неужели нет?
Re: Программирование STM8
Добавлено: Сб июл 13, 2013 20:33:31
ibiza11
в самой библиотеке есть help файл, в котором все функции описаны.
Re: Программирование STM8
Добавлено: Ср июл 17, 2013 18:57:19
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, хидер от него же...
Re: Программирование STM8
Добавлено: Ср июл 17, 2013 21:49:38
oleg110592
Попробуйте:
Код: Выделить всё
#pragma vector = <номер прерывания>
__interrupt void <имя прерывания>(void)
{
}
Где:
<номер прерывания> - номер прерывания в hex формате. Берется значение из даташита на микроконтроллер и к нему прибавляется 2.
<имя прерывания> - любое имя, понятное вам.
Re: Программирование STM8
Добавлено: Сб июл 20, 2013 11:06:59
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; //Перед выходом из прерывания необходимо вручную сбросить флаг,
//Иначе тут-же вернемся обратно в обработчик.
}
Re: Программирование STM8
Добавлено: Вс июл 21, 2013 15:33:08
The_D
Думаю можно, на стм32ф1 спокойно реализовывал емкостной датчик, там как раз надо было переключать режимы работы ножки на лету.