на той странице нашел файл stm8l.h с другим размером
они одинаковые. В onewire.c вставил
Код:
#define TIM_EGR_UG (1 << 0)
который был в stm8s.h собрал c помощью sdcc 4.2
Код:
$ 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 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 -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c main.c 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:174: warning 158: overflow in implicit constant conversion sdcc -DSTM8S003 -I../ -I../../ -I/usr/share/sdcc/include -mstm8 --out-fmt-ihx -c onewire.c onewire.c:106: warning 158: overflow in implicit constant conversion sdcc -mstm8 --out-fmt-ihx -lstm8 interrupts.rel led.rel main.rel onewire.rel -o testproj.ihx
$ stm8-size ./testproj.ihx text data bss dec hex filename 0 3114 0 3114 c2a ./testproj.ihx
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Я имею ввиду декодировку для исправления общий анод - общий катод.
да декодирование, это что. я посмотрел код, bres и bset можно поменять местами, но там в ODR регистр перекидывается значение из аккумулятора. и его надо инвертировать. т.е. вставлять лишнюю инструкцию. это значит что все метки полетят.
Почему бы не спросить у автора? Здесь его нет, но на других форумах он есть, да и в том же ЖЖ. Надо только сказать волшебную фразу: "Винда - отстой, линукс должны все использовать в принудительном порядке".
А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов? Спрашивал. Ответил "А я с STM8 уже много лет не связываюсь".
А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?
Это не вольтметр, а термометр на NTC. Был со сгоревшей STM. Заказывал на али пару штук микросхем несколько лет назад. Позавчера попались на глаза. Заменил, прошил при помощи ардуино иде блинк. Заработало. А дальше оказалась засада(. Попробую еще с помощью FLProg (человек создавал для W1209) сделать прошивку. Кстати для интереса прошил без изменений прошивку автора кода. Индикатор подмигивает некоторыми символами. Видимо программа работает. Так что если ничего не получится, выпаяю индикатор и на проводках с коммутирую как надо.
Жлоб ты Сирожа. Потрудись сам, что бы оценить затраты.
Я конечно извиняюсь за уровень наглости моей просьбы. Но мне чтобы потрудится самому, нужно освоить программирование с ноля. А это не быстро. Поэтому слабо представляю этот процесс. Мне и вправду казалось, что людям не по наслышке знакомым с программированием не так сложно это сделать. Возможно есть какие-то специальные инструменты для этого. Только откуда мне это знать. Я ж никого не принуждаю. Есть желание и возможность помочь, помогли. Нет, так нет. Я всё прекрасно понимаю, что не все хотят тратить своё время на безвозмездной основе.
/** * Setup for writing a letter * @param ltr - letter (0..17 for 0..F, - or h | 0x80 for DP, any other value for 'space') */ void write_letter(U8 ltr){ U8 L = ltr & 0x7f; PD_ODR = 0; // turn off digits 1..3 if(L < 18){ // letter PA_ODR = PA_bits[L]; PB_ODR = PB_bits[L]; PC_ODR = PC_bits[L]; }else{ // space PA_ODR = PA_BLANK; PB_ODR = PB_BLANK; PC_ODR = PC_BLANK; } if(ltr & 0x80){ // DP PC_ODR ^= 0x20; } }
/** * Turn on anode power for digit N (0..3: PA3, PD6, PD4, PD1 -- A0x08, D0x40, D0x10, D0x02) * @param N - number of digit (0..3), if other - no action (display off) * @return */ void light_up_digit(U8 N){ switch(N){ case 0: PA_ODR |= 0x08; break; case 1: PD_ODR |= 0x40; break; case 2: PD_ODR |= 0x10; break; case 3: PD_ODR |= 0x02; break; } }
Другое дело, что данные порты/пины где-то ещё могут использоваться. Как минимум - они где-то настраиваются изначально. Это тоже нужно искать.
PS: Стиль исходника конечно говнокодерский: Порты/пины прибиты гвоздями в коде. В нормально написанном исходнике они должны быть вынесены в дефайны. И тогда назначение ног меняется только в одном месте, а не по всему коду лазить-править. Впрочем - качественно писать исходники - это же не кричать "винда - мастдай, линух - рулёз". Здесь голова нужна....
В led.c редактировать (для перназначения ног) нужно только этот маленький участок:
Спасибо, но ваш пример кода из другого проекта (под названием led) и немного другой. Или при применении 3х значного индикатора они все взаимозаменяемые (led.c)из разных проектов?
Ну, практически тоже самое. Там в самом начале нарисована цифра сегментная и таблица ей соответствующая. Так вот в Вашем случае надо не просто изменить некоторые биты в этой таблице, а внести новые ряды, так как Вы часть новых портов внесли. А часть наоборот, вынесли, и это тоже надо учитывать. В общем, вмешательство достаточно большое.
Там в самом начале нарисована цифра сегментная и таблица ей соответствующая. Так вот в Вашем случае надо не просто изменить некоторые биты в этой таблице, а внести новые ряды, так как Вы часть новых портов внесли. А часть наоборот, вынесли, и это тоже надо учитывать.
В таблице поменял. Ниже, где упоминаются номера портов в явном виде, тоже. Но что то никаких изменений не получил. И ещё просьба: не могли бы Вы скомпилировать hex или ihx из исходных файлов, выложенных мной ранее? Чтобы сравнить с файлом автора, находящимся с теми файлами. А то как то странно: при прошивке с помощью stvp файла ihx автора в устройстве подмигивают одни символы, а при компиляции и прошивке с помощью Microsoft VS Code исходников из той же папки, горят другие символы. И ещё вопрос: в Microsoft VS Code во вкладке "выходные данные" сообщение "Не удалось разрешить конфигурацию с compilerPath: "C:/Users/Comp/.platformio/packages/toolchain-sdcc/bin/sdcc.exe"" является ошибкой или это норма?
Это опять я. Можете помочь код для ардуино уно скомпилировать в .хекс для загрузки в атмегу 328.
Спойлер
Код:
/* Demo Code for HDSP 2111 using SN74LS595N Matt Joyce < matt@nycresistor.com > Mark Tabry */
//Pin connected to latch pin (ST_CP) of 74HC595 const int latchPin = 8; //Pin connected to clock pin (SH_CP) of 74HC595 const int clockPin = 12; ////Pin connected to Data in (DS) of 74HC595 const int dataPin = 11; const int ce = 5; const int wr = 6; const int a2 = 4; const int a1 = 3; const int a0 = 2; const int rst = 10; const int a3 = 9; int incomingByte = 0;
void setup() { //set pins to output because they are addressed in the main loop pinMode(latchPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(a0, OUTPUT); pinMode(a1, OUTPUT); pinMode(a2, OUTPUT); pinMode(a3, OUTPUT); pinMode(rst, OUTPUT); pinMode(ce, OUTPUT); pinMode(wr, OUTPUT); digitalWrite(ce, HIGH); digitalWrite(wr, HIGH);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения