Страница 14 из 130

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

Добавлено: Вс июл 21, 2013 20:28:39
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]
правильно ли я понял методику нахождения бита?

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

Добавлено: Вт июл 30, 2013 06:14:22
Ruslan-maniak
Здравствуйте. Подскажите что это может быть? Какие есть варианты? Работаю с STM8L. И столкнулся со следующим: В основном цикле ждём события, событие происходит, программа проходит все положенные функции и, дойдя до последней функции в основном цикле, выполняет её и сбрасывается. То есть начинается полностью с нуля. При этом в отладке ни каких ошибок не возникает. Из-за чего программа может сбрасываться?

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

Добавлено: Вт июл 30, 2013 08:47:33
The_D
Телепаты в отпуске. Выложи свой проект/код.

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

Добавлено: Вт июл 30, 2013 09:14:56
radio-kot
Ruslan-maniak писал(а): Из-за чего программа может сбрасываться?
из-за того что можно иногда увидеть в специальном регистре в котором отображается причина.

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

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

Дополню. Попытался вывести отладочную информацию через UART - не выдаётся. Инициализацию UART взял из рабочего проекта. Фигня какая-то. Или контроллер битый или компилятор глючный (IAR 1.40.1).

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

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

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

Добавлено: Пн ноя 04, 2013 02:47:55
a5021
Никто не в курсе, STM8L-DISCOVERY может использоваться для программирования/отладки пятивольтовых STM8S ? Если запитываю STM8S103F3 от 3.3в, то все зашибись, если от 5в, то шьет через раз. Несколько разных экземпляров попробовал на макетках, все без толку. Это мне так повезло или я странного хочу?

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

Добавлено: Пн ноя 04, 2013 09:18:44
The_D
Вы же сами написали:
STM8S103F3 от 3.3в, то все зашибись,
Ну так в чем дело? Вперед! А вообще там скорей всего уровни не согласованы. Хотите - помудрите с преобразователями уровней. А может лучше предусмотреть лишний пин в разъеме для подачи стороннего напряжения 3,3в и джампер для переключения между напряжениями.

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

Добавлено: Пн ноя 04, 2013 14:09:27
a5021
Внешнее 3.3в питание не очень вписывается в схему, где STM8S103F3 является лишь ее частью. Хочется отладки в боевых условиях. Пробовал простейший преобразователь уровней на полевиках по линиям reset и swim, но по неизвестной причине дискавери так и не увидел МК. Осциллографом видно, что они пытаются общаться и согласование уровней похоже, что работает, только софт все время пишет об ошибке.

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

Добавлено: Пн ноя 04, 2013 15:14:19
Alexeyslav
Может велика задержка сигнала, реализованная таким способом? Программатор начинает общаться с контроллером слишком рано, пока сигнал сброса на контроллере не достиг нужного уровня.

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

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

Попутный вопрос: как относится дискавери к длине проводов на swim-е? У меня кабель сантиметров тридцать.

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

Добавлено: Пн ноя 04, 2013 16:26:49
Alexeyslav
По частотам у него диапазон неплохой только если в затвор пол ампера вкачивать, емкость затвора ведь не нулевая, потом емкость монтажа на выходе а подпирающий резистор конечного сопротивления - к нулю прижать можно быстро, а обратно напряжение будет расти куда медленней.

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

Добавлено: Пн ноя 04, 2013 17:17:02
a5021
Господь с вами, емкость затвора у него 30пф, откуда пол-амперы ? Да и схема включения, по сути, с общим затвором:
Изображение
Неоткуда бы частотным потерям браться.

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

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

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

Добавлено: Пн ноя 04, 2013 19:57:59
a5021
Стоп-стоп-стоп.. Это резистивный делитель на 3.3в. Затвор туда жестко приколочен и никакой динамики не ожидается. Параллельно затвору на землю можно хоть 1000мкф емкость вешать, ничего не изменится. Выходная емкость тут тоже никаким боком.

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

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

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

Добавлено: Пн ноя 04, 2013 23:15:03
a5021
Емкость исток-затвор в таком включении будет проходной по отношению к пути следования сигнала. 30пф в худшем случае уголки фронтов чуть призакруглит.
Насчет напряжения отпирания, тут да, стоит озадачиться. Был бы двухканальный осцилл, можно было бы поразглядывать в подробностях.

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

Добавлено: Пн ноя 04, 2013 23:38:19
Alexeyslav
Даже в симуляторе, уже видно какая фигня происходит. Обрати внимание на то что происходит с опорным напряжением... а ты говоришь никак не влияет?

Он 250нс никак не может открыться, а после перехода в 0 - столько же продолжает открываться и не хочет закрываться.

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

Добавлено: Вт ноя 05, 2013 12:46:45
a5021
Что за модель полевика используется? Я в протезе покрутил 2n7002, так он вполне нормальный меандр рисует. Вот если делитель вниз подвигать, то где-то в районе 2.5в начинается похожая фигня. Но тут как раз с отпиранием наверное проблемы.

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

Добавлено: Вт ноя 05, 2013 14:49:23
Alexeyslav
2N7000 как и в схеме. 2N7002 это тот же кристалл только в SOT-23 корпусе.