Easyelectronics.ru

Электроника для всех
Текущее время: 12 ноя 2018, 23:14

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 124 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 17 сен 2018, 16:26 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5132
Я блинкал в иаре
Мне показалось в иаре проще писать
Обычный main.c
Никаких стартап файлов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 19 сен 2018, 16:14 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
Там по хорошему только N76E003.h оставить, а остальное свое сделать. Они в своем BSP предлагают все по одному биту менять. А если нужно 3 бита в одном регистре установить? Я себе как в STM просто маски бит прописал. Я уж лучше по старинке напишу (условно):
IE |= IE_EADC | IE_ET1 | IE_EA;
чем
set_EADC;
set_ET1;
set_EA;
В первом варианте выполнится за 4 такта и 3 байта.
Во втором случае за 12 тактов и 6 байт (и это частный случай, что регистр IE через SETB управляется, а если другой регистр через ORR, то это 9 байт).
P.S. Что SETB, что ORR 4 такта на выполнение тут у Нувотона. (1T 8051, бггг).
P.P.S. Мне пока поморгать нечем, платка пока в пути:).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 16:05 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
Ассемблер 51 это нечто. Все делается через аккумулятор.
Во что превращается компилятором одна строка загрузки uint из массива (index 8бит).
step = step_table[index];
Код:
C:0x0005    AF0A     MOV      R7,index(0x0A)
C:0x0007    EF       MOV      A,R7
C:0x0008    33       RLC      A
C:0x0009    95E0     SUBB     A, (0xE0)
C:0x000B    FE       MOV      R6,A
C:0x000C    EF       MOV      A,R7
C:0x000D    25E0     ADD      A, (0xE0)
C:0x000F    FF       MOV      R7,A
C:0x0010    EE       MOV      A,R6
C:0x0011    33       RLC      A
C:0x0012    FE       MOV      R6,A
C:0x0013    74A7     MOV      A,#IAPAH(0xA7)
C:0x0015    2F       ADD      A,R7
C:0x0016    F582     MOV      DPL(0x82),A
C:0x0018    7401     MOV      A,#0x01
C:0x001A    3E       ADDC     A,R6
C:0x001B    F583     MOV      DPH(0x83),A
C:0x001D    E4       CLR      A
C:0x001E    93       MOVC     A,@A+DPTR
C:0x001F    FE       MOV      R6,A
C:0x0020    7401     MOV      A,#0x01
C:0x0022    93       MOVC     A,@A+DPTR
C:0x0023    FF       MOV      R7,A


Последний раз редактировалось dekus 20 сен 2018, 16:07, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 16:06 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5124
dekus, а брал то зачем тогда? Я то хоть знал - что это и с чем едят...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 16:08 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
Я еще ничего не брал :). Ко мне dev платка только едет поиграться, я писал выше. Как раз изучаю что это и с чем едят :).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 16:14 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5124
dekus, у меня ностальгия по 51ым, а тут еще и периферия и отладка.
Вполне годные чипы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 16:43 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
Исходя из темы, я для себя делаю вывод, stm8 не equ нувотону. stm8 получается в разы шустрее что по ногодрыгу, что по скорости выполнения. Лично мне нувотон интересен только потому, что для меня это что-то новенькое изучить :). У меня хобби изучить новый МК, его ассемблер и сделать какой нибудь проектик C+АСМ, постараясь выжать по максимуму :). Вот и сейчас нувотон еще не приехал, а я уже пишу проектик под него на 51 асме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 16:58 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5132
dekus писал(а):
Исходя из темы, я для себя делаю вывод, stm8 не equ нувотону. stm8 получается в разы шустрее что по ногодрыгу, что по скорости выполнения. Лично мне нувотон интересен только потому, что для меня это что-то новенькое изучить :). У меня хобби :).

таже фигня

кстати глупый вопрос
51-е совместимы по бинарному коду или общее только основы архитектуры?

т.е. если компилятор 51-й то можно ли им для нувоторна компилить или нужен только "совместимый"?

попался тут плагин IAR для эклипса. пробую
но 51-е там не работают у меня, только stm8

но в эклипсе альтернатива для 51-го это и gnu кросс компиляторы вроде как и sdcc


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 20:32 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1336
dekus писал(а):
Ассемблер 51 это нечто. Все делается через аккумулятор.
Во что превращается компилятором одна строка загрузки uint из массива (index 8бит).
step = step_table[index]

Не всё делается через аккумулятор, только то, где нужно АЛУ
В этой строке все манипуляции 16-битные [индекс 8 бит, но он же умножается на два для индексирования 16-битных данных]
Вот так примерно это выглядело бы для 8-битных манипуляций
Код:
mov a,index
mov dptr,#step_table
movc a,@a+dptr
mov step,a

Опкоды инструкций х51 строго однобайтные [в отличие от], поэтому их мало и набор оптимизирован наверно до предела, вряд ли сделать лучше


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 21:49 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5124
vt340, и я про то же, нех брать если не в курсе.
А то клюнули -ой дешево, а как юзать не знаем..
Ау эксрементаторы, вы хоть пошерстите в сети насчет 51ых...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 20 сен 2018, 23:27 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1336
Да, на си их программировать надо аккуратно, иначе никакая компиляторная оптимизация не поможет )


Вложения:
8051-Opcode.gif
8051-Opcode.gif [ 48.91 Кб | Просмотров: 620 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 02:13 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
IAR то поумнее Keil.
Например "не правильно" написанные циклы for (i = 0; i<10; i++) IAR переворочивает в одну строку декремент с командой DJNZ. Keil так и лупит простыню сравнения с числом 10 (а у 51го целая простынка сравнить с числом, бгг)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 02:26 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
vt340, я уже на ассемлере свое написал, вместо того длинного кода выше (uint step = step_table[index]).
У меня index проверяется и не может быть больше 88, поэтому все получилось компактнее (если что, то я только сегодня начал писать на 51 ассемблере и никаких шаблонов не знаю :))
Код:
step_h          EQU R6
step_l           EQU R7

mov     DPTR, #step_table
mov     A, index
rl      A
mov     step_h, A
movc    A,@A+DPTR
xch     A, step_h
inc     DPTR
movc    A,@A+DPTR
mov     step_l, A


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 02:39 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
dosikus_2 писал(а):
А то клюнули -ой дешево, а как юзать не знаем..

Это вообще к кому обращение и в чем его смысл? Мне например не важно 10р камень стоит или 100р. Я больше нескольких этих МК просто никак не потрачу. У меня МК это хобби. А вот устройство с али может оказаться на нувотоне и я уже смогу доработать устройство под себя. Я за долгие годы многие МК программировал. В конце 90х Zilog Z8 несколько лет использовал. Вот ты Z8 программировал? Давай тут не будем заниматься измерением своих достоинств и лезть в чужие личные дела, а общаться по теме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 10:06 
Старожил

Зарегистрирован: 26 авг 2014, 10:34
Сообщения: 735
dekus писал(а):
циклы for (i = 0; i<10; i++)

Keil вполне нормально и ожидаемо делает то что просили, листинг:
Код:
000B 0500        R     INC     i
000D E500        R     MOV     A,i
000F C3                CLR     C
0010 940A              SUBB    A,#0AH
0012 40EF              JC      ?C0006


Переношу проекты с STM8S003 на N76E003 - например один и тот же проектик
на Keil C51:
Program Size: data=97.1 xdata=0 code=3221

на IAR STM8:
3 007 bytes of readonly code memory
184 bytes of readonly data memory
308 bytes of readwrite data memory (+ 85 absolute)

По ROM приблизительно равны, по RAM на 51 ядре получше.

з.ы. во времена древних AT89C2051 (флэш 2К), еще когда ARM Keil не купил, тогда тоже Keil с 51-и вполне неплохо справлялся, ассеблер практически уже не требовался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 20:56 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
В доке на N76E003 написано "Strongly suggests that disable POR function every time after power-on reset at the initial part of Customer code."
В стартапе Keil это есть, а к IAR стартапа нет. Написал для IAR стартап. Нужно только добавить к проекту. Может кому пригодится. Заодно будет и очистка idata и xdata как в Keil (можно просто выкинуть, если не нужно).
P.S. Я переехал на IAR :).
Show


Последний раз редактировалось dekus 22 сен 2018, 00:04, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 21:32 
Старожил
Аватара пользователя

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 519
Мне кажется вы ерундой занимаетесь. Я версию для 51-го не использовал никогда, но больше чем уверен, что там подход такой же как и для остальных камней. Сразу после ресета вызывается функция __low_level_init(). В ней всё железо и конфигурите. Стартапы у IAR всегда качественные были. Вот, например, для STM8
Вложение:
startup.png
startup.png [ 43.62 Кб | Просмотров: 514 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 22:03 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1336
dekus писал(а):
А вот устройство с али может оказаться на нувотоне и я уже смогу доработать устройство под себя.

Так в этих "устройствах" на stm8/n76 вся ценность - софт, а если делать свой, то нет смысла их и покупать, а тогда нет смысла и в stm8/n76 )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 22:20 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2931
Откуда: КЧР, поселок Нижний Архыз
vt340 писал(а):
Так в этих "устройствах" на stm8/n76 вся ценность - софт

С точностью ровно наоборот! Даже осел напишет прошивку для "вольтметра" на базе STM8S003, а вот сделать этот вольтметр самому получится намного дороже, чем те 100 рублей, за которые их китайцы продают!
Я из таких "вольтметров" делал термометры, ну и просто прикола ради прошивки "вольтметров" восстанавливал. Еще можно использовать как дисплейчик на I2C/SPI/etc...
А китайская говнопрошивка имеет нулевую ценность. Особенно если учесть, как эти рукожопы пишут и как разводят схемы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 22:30 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1336
Eddy_Em писал(а):
Я из таких "вольтметров" делал термометры, ну и просто прикола ради прошивки "вольтметров" восстанавливал. Еще можно использовать как дисплейчик на I2C/SPI/etc...

И куда ты потом эти термометры и дисплейчики приспособил? Выбросил? )
Потому как если уж на самом деле делать термометры и дисплейчики, то их же совсем не в таком виде надо делать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 23:05 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2931
Откуда: КЧР, поселок Нижний Архыз
Лежат себе в коробке - побаловался, и хватит!
Но, в принципе, в домашних самоделках всякие производные этих "вольтметров" вполне можно использовать. Дешево и сердито.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 23:16 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1336
Eddy_Em писал(а):
Но, в принципе, в домашних самоделках всякие производные этих "вольтметров" вполне можно использовать.

Это вряд ли, эти "вольтметры" и т.п. очень точно и оптимально сделаны только для того, для чего сделаны


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 21 сен 2018, 23:29 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2931
Откуда: КЧР, поселок Нижний Архыз
Они сделаны именно для того, чтобы из них что-нибудь полезное сварганить. Потому что как вольтметры-амперметры это Г использовать никак не выйдет!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 22 сен 2018, 00:15 
Заглядывает иногда

Зарегистрирован: 17 фев 2016, 16:51
Сообщения: 35
VladislavS писал(а):
Мне кажется вы ерундой занимаетесь. Я версию для 51-го не использовал никогда, но больше чем уверен, что там подход такой же как и для остальных камней. Сразу после ресета вызывается функция __low_level_init(). В ней всё железо и конфигурите. Стартапы у IAR всегда качественные были. Вот, например, для STM8

Я посмотрел еще. IAR подключает функции очистки памяти, когда эта память появляется в проекте.
Так что да, самостоятельно не нужно очищать память и startup становится таким (только сброс POR, а дальше уже выполняется код IARа):
Show

P.S. Кстати, не забывайте включать в настройках второй DPTR, у нувотона 2 DPTR. Переключается через INC AUXR1.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8S003F3P6 equ N76E003AT20 ?
СообщениеДобавлено: 22 сен 2018, 08:28 
Старожил
Аватара пользователя

Зарегистрирован: 28 янв 2010, 11:56
Сообщения: 2856
Откуда: Винница
dekus писал(а):
у нувотона 2 DPTR. Переключается через INC AUXR1.
Надо же. У NXP позаимствовали? ;)

_________________
Китайская комплектация - европейское качество!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 124 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB