кто имел опыт программирования STM8 на ассемблере под IAR?
Я разработал тестовый проект для STM8 на ассемблере под IAR лет 10 назад. С тех пор прошло много времени и я с этими МК дел более не имел и практически всё забыл. Однако, проект остался, если интересно, могу прислать в ЛС. Там, в частности, можно посмотреть как сегменты определены.
Подскажите, пожалуйста, по микроконтроллеру stm8s001j3. Выбор на него пал из-за 5В и 8 ножек, мне больше не надо в поделке. т.е. меньше места только лучше. В спецификации к микроконтроллеру написано
Цитата:
The PA2, PB0, PB1, PB2, PB3, PB6, PB7, PC1, PC2, PC7, PD0, PD2, PD4, PD7, PE5 and PF4 GPIOs should be configured after device reset in output push-pull mode with output low-state to reduce the device’s consumption and to improve its EMC immunity.
т.е. назначить на выход в режиме пуш-пулл эти ножки и назначить низкий уровень. в другом же документе an5047 приведен пример кода настройки этих ножек, но там настраивают их просто на выход без пуш-пулл (DDR=1) и никакого низкого уровня на них не назначают( ну это ладно возможно он по умолчанию такой). И пишут
Цитата:
After the device reset, those GPIOs are configured by hardware into input-floating mode. It is recommended to set them into output-mode/low-output-level state.
Но возникает вопрос: МК имеет порты от A до F по 8 выводов каждый (итого 48), 16 выводов, указанные в спецификации надо настроить, как указано выше, 12 выводов выходят на реальные пины МК, что делать с остальными 20-ю выводами??? Которые не имеют физического выхода на ножки МК, и не надо специфически настраивать по спецификации??
Проблема же у меня следующего плана: МК при включении настраивает gpio и осциллятор, затем ждет импульс на входе, после отправляет сообщение по специфическому протоколу, ждет 10с и уходит в halt, просыпается так же по прерыванию на входе, и повторяет все заново. Программа все работает, но при сборке устройства и обкатке в реальных условиях, мк стал нагреваться и переставал работать(сообщение не доходило или были искажения, не проверял), постояв какое то время без питания, работал вновь. И греется он ощутимо пальцем, хотя по идее должен быть в халт режиме. Я вот грешу на неверную настройку ножек, т.к. я все(включая 20 не указанных в спецификации) не используемые выводы настроил на push-pull и назначил в odr на них 0.
Кто сталкивался с этими МК и как настраивал gpio выводы или может сталкивался с такой же проблемой нагрева?
1. 4ygeca, ножки паркуют для уменьшения энергопотребления. если оно вас не волнует, оставьте все по умолчанию. 2. парковать, если делать это, следует все ножки. те что не выведены на корпус все равно есть в кристалле. 3. И греется он ощутимо пальцем коротыш. проверяйте свою схему на КЗ.
4ygeca, или просто бракованный экземпляр МК. У меня есть один STM32, который прекрасно работает, но греется до 60 градусов и потребляет около 200 мА даже в простое. Другой экземпляр там же работает правильно.
_________________ Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистыOrdyl Alpha 350 и AM 140. Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльная маска XV501T-4 и KSM-S6189 (5 цветов). Заказ печатных плат - pcbsmac@gmail.com
1.ножки паркуют для уменьшения энергопотребления. если оно вас не волнует, оставьте все по умолчанию. 2. парковать, если делать это, следует все ножки. те что не выведены на корпус все равно есть в кристалле. 3. И греется он ощутимо пальцем коротыш. проверяйте свою схему на КЗ.
2. Принял. Спасибо 3. Вот схема, честно ума не дам где в ней может быть КЗ платки заказывал. Питание берется с промышленной платы, которая нормально работает.
4ygeca, или просто бракованный экземпляр МК. У меня есть один STM32, который прекрасно работает, но греется до 60 градусов и потребляет около 200 мА даже в простое. Другой экземпляр там же работает правильно.
Возможно, смущает тот момент, что я сделал 3 таких штуки, одна давно уехала и исправно работает, но это была самая первая прошивка, плата и схема та же. одна у меня на тестовой сборке, там такая же проблема(как оказалось) и третья, на которой выявилась такая проблема. я конечно, не отрицаю, что из 5 МК, которые я заказал 2 дохлые, но как то сомневаюсь. Сейчас собираю обратно испытательный "стенд" буду все пробовать. Спасибо
Я как-то на Али взял 5 шт. STM32F103C8T6 одним лотом:
- у одного был просто КЗ по питанию; - у второго чудеса с нагревом, о которых писал выше; - третий работал чудесно на всех частотах, кроме как на 72 МГц, отчего USB-HID не определялся; - и только 2 оставшихся нареканий не вызвали.
То есть, тот продавец торговал лютой отбраковкой. И таких там легион.
_________________ Платы для HLDI - установки лазерной засветки фоторезиста. ФоторезистыOrdyl Alpha 350 и AM 140. Жидкое олово для лужения плат (видео) - самое лучшее и только у меня. Паяльная маска XV501T-4 и KSM-S6189 (5 цветов). Заказ печатных плат - pcbsmac@gmail.com
ну так залейте эту прошивку и сравните, будет греться новый камень или нет.
Попробовал, резульатат тот же.
В общем победил я эту проблему. Кроме как косячной партии МК, у меня объяснения нет. Когда начал разбираться обнаружил на пине 5 2.8В постоянно весящие, на 7 были 0.9В, т.е. транзисторы были открыты. Сверил с прошивкой и там да, получалось, что после отправки линии он притягивал к земле, открывая ключи, соответственно и питание на них должно быть. Но возникает вопрос почему 2.8В на одном и 0.9В на другом выводе?? И почему из-за них МК грелся??? А спустя время видимо разогревался так, что плыли частоты и сообщение уже не принималось. В общем добавил в конце отпускание пинов в 0 и греться перестал. Хотя казалось бы нагрузка всего 2 транзистора... Не зря на сайте ST написано не использовать эти МК для новых изделий... Очень косячные какие то, хапнул горя с ними с самого начала, когда в начале поймал ошибку в коде с неверной настройкой портов и swim слетал из-за того, что одна ножка на несколько портов. Написал предохранитель, после настройки gpio, проверял включен ли swim Спойлер
Код:
if (CFG->GCR & 0x1) { gpio_reset_default(); }
Ковыряясь в коде обнаружил, что не запускал таймер на отправку в сон, после того как запустил 2 МК уснули навечно, видимо где то косякнул с настройкой таймера, что прерывание сразу срабатывало. В итоге отказался от этой затеи, до лучших времен) это больше для себя фича)
Всем спасибо, кто откликнулся и пытался помочь.
Кстати, в этом проекте я написал очень, как по мне элегантное, удобное и быстрое решение по начальной инициализации ножек STM8. СпойлерТут мы генерируем с помощью х-маросов набор констант вида PIN*N*_*STATE*, где *N* номер вывода порта 0-7 и ALL, а *STATE* его определение IN\OUT PP OD и т.д.
Код:
/** * @brief: Значения по умолчанию, для инициализации неиспользуемых пинов. */ #define DDR_DEFAULT 0xFF #define CR1_DEFAULT 0x00 #define CR2_DEFAULT 0x00
/******************************************************************************/ /* X-Macros для GPIO pins */ /******************************************************************************/ // clang-format off #define FOREACH_PIN(x, x2) \ x (0, x2) \ x (1, x2) \ x (2, x2) \ x (3, x2) \ x (4, x2) \ x (5, x2) \ x (6, x2) \ x (7, x2)
Разбираться в х-марос то еще извращение, поэтому можно просто пользоваться) Проверял и тестировал это все на компиляторе SDCC, все отлично работает.
Код на выходе получается, как если писать константы в регистры, но читаемо и понятно. Один раз пробежался по всем портам в начале и все быстренько настроилось.
Я всё никак не домучаю наручные часы. Попали в руки другие индикаторы и я решил переделать плату под них. Индикаторы как мне показалось АЛС314А. Развёл плату, прошил, собрал, а оно не алё. Светится, но не так как надо. Оказалось индикаторы АЛС304Г. А у них общий анод, а нужно с общим катодом. И чтоб не искать новые индикаторы и не перепаивать, а сформировать их и запаять оказалось той ещё задачей. Возник вопрос, может кто может подправить скомпилированную (исходников нет) прошивку под индикаторы с общим +.
Ехать в Москву к ММК1 мне не кажется таким уж идеальным. Проще на вайлдберисе с озоном купить. Даже не несмотря на их конскую цену окажется дешевле. А если серьёзно, то на наших барахолках нашлось только пару предложений. И то выпаянные. Наверное придётся из чипидипа под заказ попробовать. Да и мои индикаторы доставшиеся бесплатно, бесполезной горкой лежать будут.
Именно это и имел ввиду - взять те, которые нужны. Поездкой ли в Москву, заказом ли в рынко-месте... Но, раз такая разница по цене и так мало предложений, а я недавно начал писать интерфейс дизассемблера для STM8, то подождите недельку и выложите схему часов, если есть. Не получиться напрямую - напишу Вам другую.
Здравствуйте всем! Кто-нибудь сможет скомпилировать прошивку из кода во вложении, с измененными пинами на индикатор и датчик? В таком порядке: Пин STM было-стало: 10-17, 1-15, 2-1, 13-18, 11-19, 18-14, 15-10, 14-6, 12-20, 17-16, 16-13, 20-3. Код взят отсюда: https://sourceforge.net/p/stm8samples/c ... ermometer/
Все таблицы массивов переписывать? Это простая, но занудная работа. Почему Вы не сделаете её самостоятельно? И сопоставьте номерам выводов наименования портов, а то есть подозрение, что если Вы этого не сделали сразу, то и в схеме их от балды взяли, тогда вообще нет смысла что либо делать.
Здравствуйте всем! Кто-нибудь сможет скомпилировать прошивку
проект не собирается. Спойлер$ make sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c interrupts.c sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c led.c sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c main.c sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c onewire.c onewire.h:133: warning 283: function declarator with no prototype onewire.h:135: warning 283: function declarator with no prototype onewire.h:136: warning 283: function declarator with no prototype onewire.h:138: warning 283: function declarator with no prototype onewire.h:139: warning 283: function declarator with no prototype onewire.h:143: warning 283: function declarator with no prototype onewire.h:145: warning 283: function declarator with no prototype onewire.h:147: warning 283: function declarator with no prototype interrupts.h:32: warning 283: function declarator with no prototype interrupts.h:35: warning 283: function declarator with no prototype interrupts.h:38: warning 283: function declarator with no prototype interrupts.h:41: warning 283: function declarator with no prototype interrupts.h:44: warning 283: function declarator with no prototype interrupts.h:47: warning 283: function declarator with no prototype interrupts.h:50: warning 283: function declarator with no prototype interrupts.h:53: warning 283: function declarator with no prototype interrupts.h:69: warning 283: function declarator with no prototype interrupts.h:72: warning 283: function declarator with no prototype interrupts.h:75: warning 283: function declarator with no prototype interrupts.h:86: warning 283: function declarator with no prototype interrupts.h:89: warning 283: function declarator with no prototype interrupts.h:104: warning 283: function declarator with no prototype interrupts.h:107: warning 283: function declarator with no prototype interrupts.h:111: warning 283: function declarator with no prototype interrupts.h:134: warning 283: function declarator with no prototype interrupts.h:142: warning 283: function declarator with no prototype interrupts.h:146: warning 283: function declarator with no prototype led.h:29: warning 283: function declarator with no prototype led.h:29: warning 283: function declarator with no prototype led.h:31: warning 283: function declarator with no prototype led.h:31: warning 283: function declarator with no prototype interrupts.h:32: warning 283: function declarator with no prototype interrupts.h:35: warning 283: function declarator with no prototype interrupts.h:38: warning 283: function declarator with no prototype interrupts.h:41: warning 283: function declarator with no prototype interrupts.h:44: warning 283: function declarator with no prototype interrupts.h:47: warning 283: function declarator with no prototype interrupts.h:50: warning 283: function declarator with no prototype main.c:67: warning 283: function declarator with no prototype interrupts.h:53: warning 283: function declarator with no prototype main.c:68: warning 283: function declarator with no prototype interrupts.h:69: warning 283: function declarator with no prototype interrupts.h:72: warning 283: function declarator with no prototype interrupts.h:75: warning 283: function declarator with no prototype interrupts.h:86: warning 283: function declarator with no prototype interrupts.h:89: warning 283: function declarator with no prototype led.c:82: warning 283: function declarator with no prototype interrupts.h:104: warning 283: function declarator with no prototype interrupts.h:107: warning 283: function declarator with no prototype interrupts.h:111: warning 283: function declarator with no prototype interrupts.h:134: warning 283: function declarator with no prototype interrupts.h:142: warning 283: function declarator with no prototype interrupts.h:146: warning 283: function declarator with no prototype onewire.h:133: warning 283: function declarator with no prototype onewire.h:135: warning 283: function declarator with no prototype onewire.h:136: warning 283: function declarator with no prototype onewire.h:133: warning 283: function declarator with no prototype onewire.h:138: warning 283: function declarator with no prototype onewire.h:135: warning 283: function declarator with no prototype onewire.h:139: warning 283: function declarator with no prototype onewire.h:136: warning 283: function declarator with no prototype onewire.h:143: warning 283: function declarator with no prototype onewire.h:138: warning 283: function declarator with no prototype onewire.h:145: warning 283: function declarator with no prototype onewire.h:139: warning 283: function declarator with no prototype onewire.h:147: warning 283: function declarator with no prototype interrupts.c:27: warning 283: function declarator with no prototype onewire.h:143: warning 283: function declarator with no prototype onewire.h:145: warning 283: function declarator with no prototype onewire.h:147: warning 283: function declarator with no prototype onewire.c:42: warning 283: function declarator with no prototype onewire.c:89: warning 283: function declarator with no prototype interrupts.c:30: warning 283: function declarator with no prototype onewire.c:106: warning 158: overflow in implicit constant conversion interrupts.c:33: warning 283: function declarator with no prototype main.c:77: warning 283: function declarator with no prototype interrupts.c:36: warning 283: function declarator with no prototype interrupts.c:39: warning 283: function declarator with no prototype interrupts.c:42: warning 283: function declarator with no prototype interrupts.c:45: warning 283: function declarator with no prototype interrupts.c:48: warning 283: function declarator with no prototype interrupts.c:64: warning 283: function declarator with no prototype onewire.c:117: warning 283: function declarator with no prototype interrupts.c:67: warning 283: function declarator with no prototype onewire.c:123: error 20: Undefined identifier 'TIM_EGR_UG' onewire.c:143: error 20: Undefined identifier 'TIM_EGR_UG' onewire.c:151: warning 283: function declarator with no prototype onewire.c:157: error 20: Undefined identifier 'TIM_EGR_UG' onewire.c:180: warning 283: function declarator with no prototype led.c:102: warning 283: function declarator with no prototype onewire.c:229: warning 283: function declarator with no prototype onewire.c:257: warning 283: function declarator with no prototype onewire.c:267: warning 283: function declarator with no prototype onewire.c:276: warning 283: function declarator with no prototype onewire.c:301: warning 283: function declarator with no prototype onewire.c:319: warning 283: function declarator with no prototype make: *** [Makefile:28: onewire.rel] Ошибка 1 make: *** Ожидание завершения заданий… interrupts.c:75: warning 283: function declarator with no prototype interrupts.c:86: warning 283: function declarator with no prototype interrupts.c:90: warning 283: function declarator with no prototype main.c:86: warning 283: function declarator with no prototype interrupts.c:133: warning 283: function declarator with no prototype interrupts.c:136: warning 283: function declarator with no prototype interrupts.c:140: warning 283: function declarator with no prototype interrupts.c:163: warning 283: function declarator with no prototype interrupts.c:172: warning 283: function declarator with no prototype interrupts.c:176: warning 283: function declarator with no prototype main.c:102: warning 283: function declarator with no prototype main.c:113: warning 283: function declarator with no prototype main.c:122: warning 283: function declarator with no prototype main.c:134: warning 283: function declarator with no prototype main.c:137: warning 94: comparison is always true due to limited range of data type main.c:139: warning 126: unreachable code main.c:140: warning 126: unreachable code main.c:141: warning 126: unreachable code main.c:142: warning 126: unreachable code main.c:143: warning 126: unreachable code main.c:145: warning 126: unreachable code main.c:147: warning 126: unreachable code main.c:150: warning 283: function declarator with no prototype main.c:174: warning 158: overflow in implicit constant conversion led.c:205: warning 94: comparison is always true due to limited range of data type led.c:246: warning 94: comparison is always true due to limited range of data type led.c:247: warning 94: comparison is always true due to limited range of data type sdcc 4.3.0
Номера портов сопоставил. Впишу их посередине: 10-PA3-17, 1-PD4-15, 2-PD5-1, 13-PC3-18, 11-PB5-19, 18-PD1-14, 15-PC5-10,14-PC4-6, 12-PB4-20, 17-PC7-16, 16-PC6-13, 20-PD3-3. Теперь во всех файлах, или только определенном, искать упоминание наименования портов и менять (типа как в arduino ide)? Пробовал установить по примеру из двух частей (https://cxem.net/mc/mc500.php)программы. В итоге примеры оттуда компилируются, а main.c из данного кода получается с ошибками. Два дня мучился безрезультатно.
"JackSmith"
Еще на той странице нашел файл stm8l.h с другим размером . Может в нем дело? Попробуйте, если возможно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения