Программирование STM8
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
[uquote="Martian",url="/forum/viewtopic.php?p=4640029#p4640029"]если наименования портов совпали, то ничего менять не требуется.[/uquote]
Требуется. Неправильно написал. Понятней будет так: Было-надо: PA3-PC7, PD4-PC5, PD5-PD4, PC3-PD1, PB5-PD2, PD1-PC4, PC5-PA3, PC4-PA2, PB4-PD3, PC7-PC6, PC6-PC3, PD3-PD6.
Требуется. Неправильно написал. Понятней будет так: Было-надо: PA3-PC7, PD4-PC5, PD5-PD4, PC3-PD1, PB5-PD2, PD1-PC4, PC5-PA3, PC4-PA2, PB4-PD3, PC7-PC6, PC6-PC3, PD3-PD6.
- Реклама
Re: Программирование STM8
они одинаковые.на той странице нашел файл stm8l.h с другим размером
В onewire.c вставил
Код: Выделить всё
#define TIM_EGR_UG (1 << 0)собрал 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
Re: Программирование STM8
[uquote="Сирожа",url="/forum/viewtopic.php?p=4637168#p4637168"]Может я конечно чего-то не понимаю, но мне кажется что 600р. за один индикатор это многовато.[/uquote]
Жлоб ты Сирожа. Потрудись сам, что бы оценить затраты.
Я имею ввиду декодировку для исправления общий анод - общий катод.
Жлоб ты Сирожа. Потрудись сам, что бы оценить затраты.
Я имею ввиду декодировку для исправления общий анод - общий катод.
Последний раз редактировалось OKF Чт окт 24, 2024 12:24:33, всего редактировалось 1 раз.
Re: Программирование STM8
И это практически весь led.c менять. Не, у меня - лапки.JackSmith писал(а):все-равно код грязный.
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
Интересно как у автора то работало?
https://eddy-em.livejournal.com/80558.html
https://eddy-em.livejournal.com/80558.html
- Реклама
Re: Программирование STM8
[uquote="OKF",url="/forum/viewtopic.php?p=4640038#p4640038"]Я имею ввиду декодировку для исправления общий анод - общий катод.[/uquote]
да декодирование, это что. я посмотрел код, bres и bset можно поменять местами, но там в ODR регистр перекидывается значение из аккумулятора. и его надо инвертировать. т.е. вставлять лишнюю инструкцию. это значит что все метки полетят.
да декодирование, это что. я посмотрел код, bres и bset можно поменять местами, но там в ODR регистр перекидывается значение из аккумулятора. и его надо инвертировать. т.е. вставлять лишнюю инструкцию. это значит что все метки полетят.
Re: Программирование STM8
[uquote="alexvas2004",url="/forum/viewtopic.php?p=4640046#p4640046"]Интересно как у автора то работало?[/uquote] Почему бы не спросить у автора? Здесь его нет, но на других форумах он есть, да и в том же ЖЖ. Надо только сказать волшебную фразу: "Винда - отстой, линукс должны все использовать в принудительном порядке".
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?
Спрашивал. Ответил "А я с STM8 уже много лет не связываюсь".
Спрашивал. Ответил "А я с STM8 уже много лет не связываюсь".
Re: Программирование STM8
[uquote="alexvas2004",url="/forum/viewtopic.php?p=4640053#p4640053"]А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?[/uquote]
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
[uquote="JackSmith",url="/forum/viewtopic.php?p=4640059#p4640059"][uquote="alexvas2004",url="/forum/viewtopic.php?p=4640053#p4640053"]А есть какой нибудь алгоритм в замене? Для человека, не понимающего в языках программирования нет шансов?[/uquote]
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?[/uquote]
Это не вольтметр, а термометр на NTC. Был со сгоревшей STM. Заказывал на али пару штук микросхем несколько лет назад.
Позавчера попались на глаза. Заменил, прошил при помощи ардуино иде блинк. Заработало. А дальше оказалась засада(.
Попробую еще с помощью FLProg (человек создавал для W1209) сделать прошивку.
Кстати для интереса прошил без изменений прошивку автора кода. Индикатор подмигивает некоторыми символами. Видимо программа работает.
Так что если ничего не получится, выпаяю индикатор и на проводках с коммутирую как надо.
прошивка для вольтметра с али на stm8. вольтметров на этих чипах китайцы уже сто лет не продают, где вы их нашли?[/uquote]
Это не вольтметр, а термометр на NTC. Был со сгоревшей STM. Заказывал на али пару штук микросхем несколько лет назад.
Позавчера попались на глаза. Заменил, прошил при помощи ардуино иде блинк. Заработало. А дальше оказалась засада(.
Попробую еще с помощью FLProg (человек создавал для W1209) сделать прошивку.
Кстати для интереса прошил без изменений прошивку автора кода. Индикатор подмигивает некоторыми символами. Видимо программа работает.
Так что если ничего не получится, выпаяю индикатор и на проводках с коммутирую как надо.
Re: Программирование STM8
[uquote="OKF",url="/forum/viewtopic.php?p=4640038#p4640038"]Жлоб ты Сирожа. Потрудись сам, что бы оценить затраты.[/uquote]
Я конечно извиняюсь за уровень наглости моей просьбы. Но мне чтобы потрудится самому, нужно освоить программирование с ноля. А это не быстро. Поэтому слабо представляю этот процесс. Мне и вправду казалось, что людям не по наслышке знакомым с программированием не так сложно это сделать. Возможно есть какие-то специальные инструменты для этого. Только откуда мне это знать.
Я ж никого не принуждаю. Есть желание и возможность помочь, помогли. Нет, так нет. Я всё прекрасно понимаю, что не все хотят тратить своё время на безвозмездной основе.
Я конечно извиняюсь за уровень наглости моей просьбы. Но мне чтобы потрудится самому, нужно освоить программирование с ноля. А это не быстро. Поэтому слабо представляю этот процесс. Мне и вправду казалось, что людям не по наслышке знакомым с программированием не так сложно это сделать. Возможно есть какие-то специальные инструменты для этого. Только откуда мне это знать.
Я ж никого не принуждаю. Есть желание и возможность помочь, помогли. Нет, так нет. Я всё прекрасно понимаю, что не все хотят тратить своё время на безвозмездной основе.
Re: Программирование STM8
[uquote="alexvas2004",url="/forum/viewtopic.php?p=4640035#p4640035"][uquote="Martian",url="/forum/viewtopic.php?p=4640029#p4640029"]если наименования портов совпали, то ничего менять не требуется.[/uquote]
Требуется. Неправильно написал. Понятней будет так: Было-надо: PA3-PC7, PD4-PC5, PD5-PD4, PC3-PD1, PB5-PD2, PD1-PC4, PC5-PA3, PC4-PA2, PB4-PD3, PC7-PC6, PC6-PC3, PD3-PD6.[/uquote]В led.c редактировать (для перназначения ног) нужно только этот маленький участок:
Другое дело, что данные порты/пины где-то ещё могут использоваться. Как минимум - они где-то настраиваются изначально. Это тоже нужно искать.
PS: Стиль исходника конечно говнокодерский: Порты/пины прибиты гвоздями в коде.
В нормально написанном исходнике они должны быть вынесены в дефайны. И тогда назначение ног меняется только в одном месте, а не по всему коду лазить-править.
Впрочем - качественно писать исходники - это же не кричать "винда - мастдай, линух - рулёз". Здесь голова нужна....
Требуется. Неправильно написал. Понятней будет так: Было-надо: PA3-PC7, PD4-PC5, PD5-PD4, PC3-PD1, PB5-PD2, PD1-PC4, PC5-PA3, PC4-PA2, PB4-PD3, PC7-PC6, PC6-PC3, PD3-PD6.[/uquote]В led.c редактировать (для перназначения ног) нужно только этот маленький участок:
Код: Выделить всё
/************* arrays for ports *************/
// PA, mask: 0x02, PA1
static U8 PA_bits[18] = {0,2,2,2,0,0,0,2,0,0,0,0,0,2,0,0,2,0};
#define PA_BLANK 0x02
// PB, mask: 0x30, PB4:0x10=16, PB5:0x20=32
#define PB_BLANK 0x30
static U8 PB_bits[18] = {0,32,0,0,32,16,16,0,0,0,0,48,16,32,16,16,48,48};
// PC, mask: 0xF8, PC3:0x08=8, PC4:0x10=16, PC5:0x20=32, PC6:0x40=64, PC7:0x80=128
#define PC_BLANK 0xF8
static U8 PC_bits[18] = {40,232,48,160,224,160,32,232,32,160,96,32,56,32,48,112,240,96};
/**
* 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: Стиль исходника конечно говнокодерский: Порты/пины прибиты гвоздями в коде.
В нормально написанном исходнике они должны быть вынесены в дефайны. И тогда назначение ног меняется только в одном месте, а не по всему коду лазить-править.
Впрочем - качественно писать исходники - это же не кричать "винда - мастдай, линух - рулёз". Здесь голова нужна....
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
[uquote="jcxz",url="/forum/viewtopic.php?p=4640649#p4640649"]В led.c редактировать (для перназначения ног) нужно только этот маленький участок:[/uquote]
Спасибо, но ваш пример кода из другого проекта (под названием led) и немного другой. Или при применении 3х значного индикатора они все взаимозаменяемые (led.c)из разных проектов?
Спасибо, но ваш пример кода из другого проекта (под названием led) и немного другой. Или при применении 3х значного индикатора они все взаимозаменяемые (led.c)из разных проектов?
Re: Программирование STM8
Дак ктож знает? я тоже этот файл смотрел, по Вашей же ссылке...
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
[uquote="Martian",url="/forum/viewtopic.php?p=4640785#p4640785"]Дак ктож знает? я тоже этот файл смотрел, по Вашей же ссылке...[/uquote]
По ссылке там несколько проектов. А во вложении был один, который нужен. Вот он отдельно:
По ссылке там несколько проектов. А во вложении был один, который нужен. Вот он отдельно:
- Вложения
-
- led.c
- (7.55 КБ) 785 скачиваний
Re: Программирование STM8
Ну, практически тоже самое.
Там в самом начале нарисована цифра сегментная и таблица ей соответствующая. Так вот в Вашем случае надо не просто изменить некоторые биты в этой таблице, а внести новые ряды, так как Вы часть новых портов внесли. А часть наоборот, вынесли, и это тоже надо учитывать.
В общем, вмешательство достаточно большое.
Там в самом начале нарисована цифра сегментная и таблица ей соответствующая. Так вот в Вашем случае надо не просто изменить некоторые биты в этой таблице, а внести новые ряды, так как Вы часть новых портов внесли. А часть наоборот, вынесли, и это тоже надо учитывать.
В общем, вмешательство достаточно большое.
- alexvas2004
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Пн фев 15, 2010 05:28:51
Re: Программирование STM8
[uquote="Martian",url="/forum/viewtopic.php?p=4640838#p4640838"]Там в самом начале нарисована цифра сегментная и таблица ей соответствующая. Так вот в Вашем случае надо не просто изменить некоторые биты в этой таблице, а внести новые ряды, так как Вы часть новых портов внесли. А часть наоборот, вынесли, и это тоже надо учитывать.[/uquote]
В таблице поменял. Ниже, где упоминаются номера портов в явном виде, тоже. Но что то никаких изменений не получил.
И ещё просьба: не могли бы Вы скомпилировать hex или ihx из исходных файлов, выложенных мной ранее? Чтобы сравнить с файлом автора, находящимся с теми файлами.
А то как то странно: при прошивке с помощью stvp файла ihx автора в устройстве подмигивают одни символы, а при компиляции и прошивке с помощью Microsoft VS Code исходников из той же папки, горят другие символы.
И ещё вопрос: в Microsoft VS Code во вкладке "выходные данные" сообщение "Не удалось разрешить конфигурацию с compilerPath: "C:/Users/Comp/.platformio/packages/toolchain-sdcc/bin/sdcc.exe"" является ошибкой или это норма?
В таблице поменял. Ниже, где упоминаются номера портов в явном виде, тоже. Но что то никаких изменений не получил.
И ещё просьба: не могли бы Вы скомпилировать hex или ihx из исходных файлов, выложенных мной ранее? Чтобы сравнить с файлом автора, находящимся с теми файлами.
А то как то странно: при прошивке с помощью stvp файла ihx автора в устройстве подмигивают одни символы, а при компиляции и прошивке с помощью Microsoft VS Code исходников из той же папки, горят другие символы.
И ещё вопрос: в Microsoft VS Code во вкладке "выходные данные" сообщение "Не удалось разрешить конфигурацию с compilerPath: "C:/Users/Comp/.platformio/packages/toolchain-sdcc/bin/sdcc.exe"" является ошибкой или это норма?
Re: Программирование STM8
Это опять я. 
Можете помочь код для ардуино уно скомпилировать в .хекс для загрузки в атмегу 328.
Можете помочь код для ардуино уно скомпилировать в .хекс для загрузки в атмегу 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);
resetDisplay();
}
void resetDisplay() {
digitalWrite(rst, LOW);
delayMicroseconds(1);
digitalWrite(rst,HIGH);
delayMicroseconds(150);
digitalWrite(a3, HIGH);
}
void writeDisplay(char *input) {
// Serial.println(input);
for (int i=0; i<8; i++) {
digitalWrite(a0, (1&i)!=0?HIGH:LOW);
digitalWrite(a1, (2&i)!=0?HIGH:LOW);
digitalWrite(a2, (4&i)!=0?HIGH:LOW);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, input[i] );
digitalWrite(latchPin, HIGH);
delay(1);
digitalWrite(ce, LOW);
delay(1);
digitalWrite(wr, LOW);
delay(1);
digitalWrite(wr, HIGH);
delay(1);
digitalWrite(ce, HIGH);
delay(1);
}
}
void scrollDisplay(char *words) {
char buffer[9];
int i = 0;
while(words[i] != 0){
boolean blank = false;
for (int j = 0; j<8; j++) {
if ( !blank && words[i+j] == 0 ) {
blank = true;
}
if ( blank ) {
buffer[j] = ' ';
}
else {
buffer[j] = words[i+j];
}
}
buffer[8]=0;
writeDisplay(buffer);
delay(200);
i++;
}
}
void loop() {
char intro[] = " Test ";
scrollDisplay(intro);
delay(2000);
}Re: Программирование STM8
Раздел называется "Программирование STM8". Подумайте, попадает ли под это "код для ардуино уно скомпилировать в .хекс для загрузки в атмегу 328.".
Re: Программирование STM8
Извиняюсь. Не доглядел. Как раз таки на название раздела и посмотрел. А как эта тема называется забыл.


