Easyelectronics.ru

Электроника для всех
Текущее время: 25 июн 2019, 21:04

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5258
Я блинкал в иаре
Мне показалось в иаре проще писать
Обычный 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
Сообщения: 5428
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
Сообщения: 5428
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
Сообщения: 5258
dekus писал(а):
Исходя из темы, я для себя делаю вывод, stm8 не equ нувотону. stm8 получается в разы шустрее что по ногодрыгу, что по скорости выполнения. Лично мне нувотон интересен только потому, что для меня это что-то новенькое изучить :). У меня хобби :).

таже фигня

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

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

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

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


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

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1361
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
Сообщения: 5428
vt340, и я про то же, нех брать если не в курсе.
А то клюнули -ой дешево, а как юзать не знаем..
Ау эксрементаторы, вы хоть пошерстите в сети насчет 51ых...


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

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


Вложения:
8051-Opcode.gif
8051-Opcode.gif [ 48.91 Кб | Просмотров: 1406 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 753
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
Сообщения: 812
Мне кажется вы ерундой занимаетесь. Я версию для 51-го не использовал никогда, но больше чем уверен, что там подход такой же как и для остальных камней. Сразу после ресета вызывается функция __low_level_init(). В ней всё железо и конфигурите. Стартапы у IAR всегда качественные были. Вот, например, для STM8
Вложение:
startup.png
startup.png [ 43.62 Кб | Просмотров: 1300 ]


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

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

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


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

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

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


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

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

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


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

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


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

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

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


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 3220
Откуда: Винница
dekus писал(а):
у нувотона 2 DPTR. Переключается через INC AUXR1.
Надо же. У NXP позаимствовали? ;)

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


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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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

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