Программирование STM8
Помогите освоить вот этого зверя STM8S001J3 Какой программой пользоваться, чем и как прошивать.
- Реклама
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="borskiy",url="/forum/viewtopic.php?p=3529107#p3529107"]Помогите освоить вот этого зверя STM8S001J3 Какой программой пользоваться, чем и как прошивать.[/uquote]А проиводитель что говорит? Не может же он не рекомендовать средства разработки.
STM8S001J3 Нужна помощь в написание небольшой программы, не бесплатно. Все вопросы в личку.
- Сообщения: 1
- Зарегистрирован: Пт мар 01, 2019 07:37:59
Добрый день. Подскажите чайнику по STM8.
Есть кусок кода, изменение значения "AA" в строке ld A, #$AA меняет функционал прошивки. На какой адрес будет ссылаться при значении AA, C2 ?
push A
ld A, #$AA
ld $983,A
callf $19301
ld XL, A
ld A, #$20
mul X, A
addw X, #$95c1
ldw $986,X
pop A
retf
Есть кусок кода, изменение значения "AA" в строке ld A, #$AA меняет функционал прошивки. На какой адрес будет ссылаться при значении AA, C2 ?
push A
ld A, #$AA
ld $983,A
callf $19301
ld XL, A
ld A, #$20
mul X, A
addw X, #$95c1
ldw $986,X
pop A
retf
- Реклама
Лично я вопрос не понял. При изменении АА на С2? Кто будет ссылаться на адрес?SarCity писал(а):На какой адрес будет ссылаться при значении AA, C2 ?
[uquote="SarCity",url="/forum/viewtopic.php?p=3587384#p3587384"]callf $19301[/uquote]
"Огласите весь список, пожалуйста!" (с)
Что происходит в данной подпрограмме?
"Огласите весь список, пожалуйста!" (с)
Что происходит в данной подпрограмме?
Думаю не знает. Судя по листингу - дизассемблер.ПростоНуб писал(а):Что происходит в данной подпрограмме?
Да, это дизассемблированная прошивка.
Что происходит в callf $19301 я не знаю, да и данном случае это, я думаю, не важно.
0xAA как-то должно преобразоваться и далее уже *0x20+0x95C1=адрес
Что происходит в callf $19301 я не знаю, да и данном случае это, я думаю, не важно.
0xAA как-то должно преобразоваться и далее уже *0x20+0x95C1=адрес
[uquote="SarCity",url="/forum/viewtopic.php?p=3587427#p3587427"]я думаю, не важно.[/uquote]
Это очень важно, так как, если функция возвращает знаковый или беззнаковый байт, то большинство компиляторов используют для этого аккумулятор.
Это очень важно, так как, если функция возвращает знаковый или беззнаковый байт, то большинство компиляторов используют для этого аккумулятор.
SarCity писал(а):Что происходит в callf $19301 я не знаю, да и данном случае это, я думаю, не важно.
Код: Выделить всё
ld A, #$AA
ld $983,AКод: Выделить всё
callf $19301Вот что находится в 0x19301.
Спойлер
Код: Выделить всё
0x19301: 88 push A cycles=1
0x19302: a0 30 sub A, #$30 cycles=1
0x19304: a1 0c cp A, #$0c cycles=1
0x19306: 24 1c jrnc $19324 (offset=28) cycles=1-2
0x19308: 8d 01 a9 fe callf $1a9fe cycles=5
0x1930c: 01 rrwa X, A cycles=1
0x1930d: 46 rrc A cycles=1
0x1930e: 01 rrwa X, A cycles=1
0x1930f: 4a dec A cycles=1
0x19310: 01 rrwa X, A cycles=1
0x19311: 4e swap A cycles=1
0x19312: 01 rrwa X, A cycles=1
0x19313: 52 01 sub SP, #$01 cycles=1
0x19315: 56 rrcw X cycles=2
0x19316: 01 rrwa X, A cycles=1
0x19317: 5a decw X cycles=1
0x19318: 01 rrwa X, A cycles=1
0x19319: 5e swapw X cycles=1
0x1931a: 01 rrwa X, A cycles=1
0x1931b: 62 div X, A cycles=2-17
0x1931c: 01 rrwa X, A cycles=1
0x1931d: 66 01 rrc ($01,X) cycles=1
0x1931f: 6a 01 dec ($01,X) cycles=1
0x19321: 6e 01 swap ($01,X) cycles=1
0x19323: 72 a0 ??? cycles=?SarCity писал(а):далее уже *0x20+0x95C1=адрес
986 адрес, по которому запишется значения регистровой пары Х.SarCity писал(а):ldw $986,X
Добавлено after 1 minute 30 seconds:
[uquote="SarCity",url="/forum/viewtopic.php?p=3587458#p3587458"]Вот что находится в 0x19301.[/uquote] А там еще вызов подпрограммы.
Добавлено after 7 minutes 16 seconds:
попрограмма не вся. Но судя по всему значение А не изменяет. Возможно результат ее работы в XH.SarCity писал(а):Вот что находится в 0x19301.
подскажите какой ток потребления у входа АЦП STM8S? нужно рассчитать впритык по току делитель
В ДШ разве не написано? Ну и реально попробовать. Если мне память не изменяет нужно отключить триггер Шмидта для уменьшения потребления.
- Сообщения: 79
- Зарегистрирован: Пн дек 19, 2016 10:20:28
Разбирался на днях с отладочной платой STM8S-Discovery, да потер всю память на чипе, не запомнив дефолтные значения option bytes.
Часть демок теперь не работает как надо. Пол дня прокопался, но так и не разобрался, что там изначально было.
Если у кого есть данная плата, напишите пожалуйста, что у вас в ней прошито в option bytes?
Часть демок теперь не работает как надо. Пол дня прокопался, но так и не разобрался, что там изначально было.
Если у кого есть данная плата, напишите пожалуйста, что у вас в ней прошито в option bytes?
PombI4, а если прошить значениями по умолчанию (factory default) из даташит?
Добавлено after 2 hours 17 minutes 36 seconds:
Как то я это пропустил.
15 апреля вышел SDCC 3.9
SDCC 3.9.0 Feature List:
Support for struct / union assignment.
Optimizations in the stm8 backend relevant to soft float increase Whetstone score by two thirds.
Improvements in rematerialization in the stm8 backend improve code generation for struct, union and arrays.
New stack allocator reduces stack space usage for the stm8, z80, z180, gbz80, r2k, r3ka, tlcs90 backends.
New ez80_z80 backend for eZ80 in Z80 mode.
Removed deprecated sdcclib utility.
New pdk14 backend for Padauk µC with 14-bit wide program memory.
New in-development pdk15 backend for Padauk µC with 15-bit wide program memory.
Особенно радует ускорение теста Whetstone в два раза и рематериализация для STM8 при операциях со структурами, объединениями и массивами. Код, который SDCC генерил до этого, особенно со структурами, меня сильно раздражал.
Присваивание структур и объединений вещь приятная, но мне не в лом было и memcpy() писать.
Что там улучшили в аллоцировании стека я пока не понял.
Развитие поддержки сверхдешевых, но однократно программируемых, Padauk радует, но это уже к STM8 отношения не имеет.
Добавлено after 2 hours 17 minutes 36 seconds:
Как то я это пропустил.
15 апреля вышел SDCC 3.9
SDCC 3.9.0 Feature List:
Support for struct / union assignment.
Optimizations in the stm8 backend relevant to soft float increase Whetstone score by two thirds.
Improvements in rematerialization in the stm8 backend improve code generation for struct, union and arrays.
New stack allocator reduces stack space usage for the stm8, z80, z180, gbz80, r2k, r3ka, tlcs90 backends.
New ez80_z80 backend for eZ80 in Z80 mode.
Removed deprecated sdcclib utility.
New pdk14 backend for Padauk µC with 14-bit wide program memory.
New in-development pdk15 backend for Padauk µC with 15-bit wide program memory.
Особенно радует ускорение теста Whetstone в два раза и рематериализация для STM8 при операциях со структурами, объединениями и массивами. Код, который SDCC генерил до этого, особенно со структурами, меня сильно раздражал.
Присваивание структур и объединений вещь приятная, но мне не в лом было и memcpy() писать.
Что там улучшили в аллоцировании стека я пока не понял.
Развитие поддержки сверхдешевых, но однократно программируемых, Padauk радует, но это уже к STM8 отношения не имеет.
- Сообщения: 79
- Зарегистрирован: Пн дек 19, 2016 10:20:28
Странно - перепрошился через ST VD и все заработало...
А вот через IAR... Сначала работало, а потом после стирания перестало.
При этом, после прошивки через ST VD, options bytes как были нулевыми, так и остались.
А вот через IAR... Сначала работало, а потом после стирания перестало.
При этом, после прошивки через ST VD, options bytes как были нулевыми, так и остались.
PombI4, Они не могли быть нулевыми. Большинство option bytes у STM8 парные - прямое и инверсное значение. Например, по-умолчанию, OPT1=0х00, а следующий за ним NOPT1=0хFF
Поэтому просто нулями их так просто не перепишешь.
Подозреваю, что ST VD увидев несоответствие между прямыми и инверсными значениями сам прописал значения по-умолчанию.
Поэтому просто нулями их так просто не перепишешь.
Подозреваю, что ST VD увидев несоответствие между прямыми и инверсными значениями сам прописал значения по-умолчанию.
- Сообщения: 79
- Зарегистрирован: Пн дек 19, 2016 10:20:28
Ну, как реально в памяти они лежали, я не смотрел... А вот в интерфейсе прошивальщика они занулены. Там они не как OPT NOPT отображаются.




