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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
Volt_A
Родился
Сообщения: 15
Зарегистрирован: Чт июн 21, 2012 09:59:29

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

Сообщение Volt_A »

Да, вполне получилось, оперировать выводом в программе, набрался смелости и попробовал прошить, только подал вначале низкий уровень (дабы не сжечь чего нибудь):
Спойлер

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

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 = 0;  //Подтянем пин к земле (работает!)
  PC_ODR_bit.ODR7 = 0; //Подтянем пин к земле - светодиод горит
  PC_ODR_bit.ODR4 = 0; //Подтянем пин к земле - светодиод горит
  DelayLong(); // ждем 3 секунды
 
  PD_DDR_bit.DDR2 = 0;   // Ножка PD2 конфигурируется на ввод (переключение бита вывода на ввод)
  PD_CR1_bit.C12 = 0;   // Выход плавающий - установлен подтягивающий резистор
  PD_CR2_bit.C22 = 1;   // Прерывание ВКЛючено
  EXTI_CR1_bit.PDIS = 0; //Прерывание по спаду напряжения (задний фронт)
 
  DelayShort(); // ждем 1,5 секунды
 }

Спасибо всем за советы.
P.S. При изучении мануала по STM8S возник еще вопрос по прерываниям, конкретно интересует, возможно ли программно выставить приоритет по отдельным пинам порта? Т.е. в STM8L это сделать можно, для STM8S, как я понял, приоритет можно выставить только для всего порта? Например "средний приоритет" для порта D будет выглядеть так?:
Спойлер

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

ITC_SPR2_bit.VECT6SPR = 0; //средний приоритет порт D

методика поиска:
идем в датшит к мк (в моем случае STM8S103F2P6), смотрим таблицу:
"Interrupt vector mapping"
6 | EXTI3 | Port D external interrupts
стр.42
далее идем в RM0016:
"Software priority register x (ITC_SPRx)"
стр.68
вектору 6 соответствует:
ITC_SPR2 VECT6SPR[1:0]
правильно ли я понял методику нахождения бита?
Ruslan-maniak
Открыл глаза
Сообщения: 40
Зарегистрирован: Вт янв 18, 2011 08:15:32

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

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

Здравствуйте. Подскажите что это может быть? Какие есть варианты? Работаю с STM8L. И столкнулся со следующим: В основном цикле ждём события, событие происходит, программа проходит все положенные функции и, дойдя до последней функции в основном цикле, выполняет её и сбрасывается. То есть начинается полностью с нуля. При этом в отладке ни каких ошибок не возникает. Из-за чего программа может сбрасываться?
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

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

Сообщение The_D »

Телепаты в отпуске. Выложи свой проект/код.
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

Ruslan-maniak писал(а): Из-за чего программа может сбрасываться?
из-за того что можно иногда увидеть в специальном регистре в котором отображается причина.
Будете проходить мимо- проходите!
Serj_K
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

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

Сообщение Serj_K »

Начал разбираться с шиной I2C.
На STM8S105C6 выполнено Slave устройство.
Инициализацию шины прописал с использованием бита АСК(регистр I2C_CR2), но при аппаратной отладке ST-Linkoм видно, что бит АСК не устнавливается при записи I2C_CR2, а остаётся = 0. Сответственно, после приёма адреса вместо АСК мастер получает в ответ NACK и отваливается.
Прикол в том, что при отладке в симуляторе всё работает. Сталкивался кто-нибудь с проблемой не записи бита АСК?

Дополню. Попытался вывести отладочную информацию через UART - не выдаётся. Инициализацию UART взял из рабочего проекта. Фигня какая-то. Или контроллер битый или компилятор глючный (IAR 1.40.1).
Serj_K
Опытный кот
Сообщения: 718
Зарегистрирован: Сб апр 14, 2012 16:11:35

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

Сообщение Serj_K »

Итак, по моему предыдущему посту:
1. Проблема с UART - не правильно настроил порт.
2. Бит АСК устанавливается ТОЛЬКО ПОСЛЕ ВКЛЮЧЕНИЯ ИНТЕРФЕЙСА I2C БИТОМ РЕ !!!.
В общем интерфейс заработал, но пока есть проблемы с обработкой состояния RESTART.
Продолжаю разбираться.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Никто не в курсе, STM8L-DISCOVERY может использоваться для программирования/отладки пятивольтовых STM8S ? Если запитываю STM8S103F3 от 3.3в, то все зашибись, если от 5в, то шьет через раз. Несколько разных экземпляров попробовал на макетках, все без толку. Это мне так повезло или я странного хочу?
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

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

Сообщение The_D »

Вы же сами написали:
STM8S103F3 от 3.3в, то все зашибись,

Ну так в чем дело? Вперед! А вообще там скорей всего уровни не согласованы. Хотите - помудрите с преобразователями уровней. А может лучше предусмотреть лишний пин в разъеме для подачи стороннего напряжения 3,3в и джампер для переключения между напряжениями.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Внешнее 3.3в питание не очень вписывается в схему, где STM8S103F3 является лишь ее частью. Хочется отладки в боевых условиях. Пробовал простейший преобразователь уровней на полевиках по линиям reset и swim, но по неизвестной причине дискавери так и не увидел МК. Осциллографом видно, что они пытаются общаться и согласование уровней похоже, что работает, только софт все время пишет об ошибке.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Может велика задержка сигнала, реализованная таким способом? Программатор начинает общаться с контроллером слишком рано, пока сигнал сброса на контроллере не достиг нужного уровня.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Да вроде нечему там задержку вносить. Полевики, в моем случае 2n7002, по частотам вроде неплохой диапазон имеют. Временные характеристики конвертера посмотреть нечем, т.к. кроме старенького осцилла из оборудования более ничего.

Попутный вопрос: как относится дискавери к длине проводов на swim-е? У меня кабель сантиметров тридцать.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

По частотам у него диапазон неплохой только если в затвор пол ампера вкачивать, емкость затвора ведь не нулевая, потом емкость монтажа на выходе а подпирающий резистор конечного сопротивления - к нулю прижать можно быстро, а обратно напряжение будет расти куда медленней.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Господь с вами, емкость затвора у него 30пф, откуда пол-амперы ? Да и схема включения, по сути, с общим затвором:
Изображение
Неоткуда бы частотным потерям браться.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Емкость затвора и резистор в 4.7кОм образует RC-цепочку которая является НЧ-фильтром фактически. Можно в принципе оценить время заряда в таких условиях, найти формулу расчета... вобщем при таких характеристиках цепи 63% напряжения на выходе такого фильтра появится спустя 0.14мкс а 95% через 0.4мкс - уже задержка...
На выходе, 10кОм и наверняка практически такая же емкость... еще одна задержка.
Критична ли? или нет? черт его знает... Попробуй осцилографом измерить фактичесую задержку подав прямоугольник на вход.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Стоп-стоп-стоп.. Это резистивный делитель на 3.3в. Затвор туда жестко приколочен и никакой динамики не ожидается. Параллельно затвору на землю можно хоть 1000мкф емкость вешать, ничего не изменится. Выходная емкость тут тоже никаким боком.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Потому что эта емкость исток-затвор. Именно туда и приходит твой сигнал. Если взять идеальные условия, на входе прямоугольник - он через эту емкость просадит твое опорное напряжение до тех пор пока затвор не зарядится. И еще неизвестно как транзистор отнесется к отрицательному напряжению на затворе относительно истока. И кстати, при каком напряжении на входе транзистор начнет открываться, а при каком откроется полностью? Может он у тебя еле-еле открывается и выход не дотягивает? Не помню какое там напряжение отпирания у 2N7000...
Очень было бы интересно глянуть на двухканальном осциллографе вход и выход с этой схемы.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Емкость исток-затвор в таком включении будет проходной по отношению к пути следования сигнала. 30пф в худшем случае уголки фронтов чуть призакруглит.
Насчет напряжения отпирания, тут да, стоит озадачиться. Был бы двухканальный осцилл, можно было бы поразглядывать в подробностях.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Даже в симуляторе, уже видно какая фигня происходит. Обрати внимание на то что происходит с опорным напряжением... а ты говоришь никак не влияет?

Он 250нс никак не может открыться, а после перехода в 0 - столько же продолжает открываться и не хочет закрываться.
Вложения
povtoritel.jpg
(64 КБ) 689 скачиваний
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Что за модель полевика используется? Я в протезе покрутил 2n7002, так он вполне нормальный меандр рисует. Вот если делитель вниз подвигать, то где-то в районе 2.5в начинается похожая фигня. Но тут как раз с отпиранием наверное проблемы.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

2N7000 как и в схеме. 2N7002 это тот же кристалл только в SOT-23 корпусе.
Ответить

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