Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 02.12.2010, 06:47  
pinco
Гражданин KAZUS.RU
 
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
pinco на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от SasaVitebsk Посмотреть сообщение
Писать на ассемблере сейчас нет смысла, а соответственно хотелось бы посмотреть как проц справляется с реальной задачей. С учётом компиляции. Хотя это тоже не
Как раз на асме-то и происходит реальное сравнение возможностей ядер , а если писать на С то будет нечистое сравнение поскольку сюда уже будет входить еще и разная реализация функций как там компиляторы сами себе там по разному ваяют - да и еще и от текущих версии тех компиляторов для одного и того же ядра ,и еще от "степени понимания" ими написанных на С прог, и тогда про затраченные на это такты уже даже и говорить не приходится , и получается ну совсем необьктивно .
Реклама:
__________________
Короче асма кода нет !

Последний раз редактировалось Falconist; 14.04.2011 в 00:22.
pinco вне форума  
Непрочитано 02.12.2010, 07:01  
pinco
Гражданин KAZUS.RU
 
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
pinco на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от Gnider Посмотреть сообщение
...Чисто ради интереса протестил это пример на lpc1111
Получилось функция SummArray выполняется за 4529 тактов и занимает 38 байт.

P.S. Камень стоит 35 рублей.
Согласен , LPC уже точно более-менее подходит на замену AVR-а , по сравнению с рассматриваемыми STM8.
__________________
Короче асма кода нет !

Последний раз редактировалось Falconist; 14.04.2011 в 00:22.
pinco вне форума  
Непрочитано 02.12.2010, 08:35  
pinco
Гражданин KAZUS.RU
 
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
pinco на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Сообщение от SasaVitebsk Посмотреть сообщение
Очень неплохая фишка, как раздельное тактирование таймера от PLL с повышением тактовой (как у xmega),
Такого нет Только поделить можно, увы.

Сообщение от SasaVitebsk Посмотреть сообщение
управление событиями как у xmega тоже бы очень помогли.
Там что то подобное имеется. Я еще не до конца разобрался.

Сообщение от SasaVitebsk Посмотреть сообщение
Ещё. В одной новой разработке нужен АЦП с диф входом на 8 каналов.
Опять увы - нету. Впрочем самих входов куча, но вот в диф. режиме они не функционируют. На разницу в цене с хмегой можно пару внешних 4-х канальных ОУ прицепить. Разницы не на пару хватит, а на десяток.
Входы у XMega могут работать в диф режиме - вместо обычных 8 получается 4 дифференциальных входа .

По PLL - есть там умножение частоты тактовой - внимательнее смотрите datasheet на XMeg -у , причем любой множитель от 1 до 31 .
__________________
Короче асма кода нет !

Последний раз редактировалось Falconist; 14.04.2011 в 00:22.
pinco вне форума  
Непрочитано 02.12.2010, 11:26  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

2pinco: Вы забыли написать, что табуляция лучше пробелов. А то как-то не полный комплект для мирового холивара...
testerplus вне форума  
Непрочитано 02.12.2010, 13:36  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от pinco Посмотреть сообщение
Раз не пользовался AVR -ами то и не нужно вводить народ в заблуждение - команды установки бита в AVR -есть - это для РОН команда sbr Rd,K где регистр Rd это тот в котором устанавливаем , а K это константа - маска изменяемых битов где в константе стоя единички , и причем даже за один присест изменить не один бит в регистре , а хоть все 8
Читаем внимательно - не пользовался не АВР, а АВ - Algoritm Builder. А команды sbr нету, это псевдоним ORI. Вы выдергиваете из контекста кусок обсуждения, так делать не нужно. Речь шла о том, что обработчик прерывания из двух команд ORI reg,x reti у АВР недопустим в принципе. Если больше нравится - sbr reg,x reti - код абсолютно одинаковый.

Сообщение от pinco Посмотреть сообщение
А в AVR-ах тоже система прерыв продуманная , и не никакая не "псевдо" а нормальная , и причем даже в самом программном ходе обработки текущего прерывания можно устанавливать и сбрасывать прерыв другого уровня
Нужно не устанавливать и сбрасывать, нужно чтоб более приоритетное могло прервать текущее, а менее приоритетное - ждало своей очереди. Ну по типу АРМ7 с его FIQ и IRQ. Но там всего два уровня, причем быстрым можно сделать всего одно прерывание. Иначе оно перестанет быть быстрым. Так что нет приоритетов у АВР. Хотите поспорить? Тогда давайте, но с примерами. А вот у STM8 реально 3 приоритета.

Сообщение от pinco Посмотреть сообщение
Да нет , никак фичей назвать не могу потому что такую же систему можно реализовать и на AVR-е : при инициализации определять наличие генерации и подключать кварц если генерация с него есть
Пример такой инициализации можно? Вы вообще АВР видели хоть раз???? У него генератор определяется фьюзами и если установлен например на кварц и кварц отвалится, то никакой ватчдог уже не поможет.

Сообщение от pinco Посмотреть сообщение
Да опять неверно - для sbi/cbi в AVR доступны все младшие регистры ввода/вывода адресов до 32 - а их там дофига в общем-то .
32 от общего числа в например 70 вовсе не дофига.

Сообщение от pinco Посмотреть сообщение
По PLL - есть там умножение частоты тактовой - внимательнее смотрите datasheet на XMeg -у , причем любой множитель от 1 до 31 .
Перечтите то, на что отвечаете еще раз. Александр именно это и написал - PLL как у XMEGA.

Последний раз редактировалось kison; 13.04.2011 в 18:17.
kison вне форума  
Непрочитано 02.12.2010, 14:01  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от andries5 Посмотреть сообщение
В AVRStudio можно было посчитать время исполнения программы по шагам, а в STVD можно? Что-бы настроить функцию Delay() не используя таймер.
Функция задержки иногда полезная вещь. Настраивать ее неблагодарное дело.
В общем вот пример такой задержки, компилятор Космик.
Код:
// файл delay.h
#ifndef DELAY_H
#define DELAY_H

#ifndef F_CPU
   #error "F_CPU not defined!"
#endif

#define US(x) \
(unsigned int)((((x*(F_CPU/1000000.0))‹=8)*8 \
+((x*(F_CPU/1000000.0))›8)*(x*(F_CPU/1000000.0)) - 4)/4)

#define MS(x) US(x*1000)

@inline void delay(unsigned int del)
{
volatile unsigned int tmp;
tmp = del;
#asm
$N:
        decw x
        jrne $L
        nop
#endasm 
}
#endif // #ifndef DELAY_H
Для работы необходимо определить глобальный дефайн F_CPU. В установках проекта на вкладке опций компилятора. Для обоих режимов - и релиза и дебага отдельно!
Смотрите картинку. Частота в герцах, UL в конце - unsigned long.
Нельзя использовать такую задержку при отключенной оптимизации и нельзя передавать ей в качестве параметра переменную! Параметр - только константа!
Как использовать:
Код:
#include ‹delay.h›

int main(void)
{
// трам пам пам
delay(US(100));
delay(MS(10));
delay(MS(1.7));
// трам пам пам
}
Ограничения - минимальная задержка 8 тактов. Максимальная 65536*4= 262144 такта.
Пользуйтесь на здоровье. А тому кто подскажет как сделать инлайновую функцию на голом асме и не потерять параметр будет респект и уважуха. Чтоб понять что я хочу уберите из delay объявление переменной tmp и присваивание ей параметра функции.
При 16МГц такта минимум 0,5мкс, разрешение 0,25мкс. Округляется вниз, т.е. задержка на 0,5мкс и 0,6мкс будет одинаковой - 0,5. Следующая возможная 0,75 и т.д. до 16мС с копейками. При снижении такта соответственно растет минимальная, максимальная задержка и шаг ее.

ЗЫ. Отзывы о работоспособности/неработоспособности приветствуются. Я физически не могу все свои функции тестировать со всеми опциями оптимизации. Так что надеюсь на багрепорты. И задержки и того что планирую в скором времени выложить.
Миниатюры:
Нажмите на изображение для увеличения
Название: stvd_delay.GIF
Просмотров: 122
Размер:	18.4 Кб
ID:	15330  

Последний раз редактировалось kison; 13.04.2011 в 18:17.
kison вне форума  
Эти 5 пользователя(ей) сказали Спасибо kison за это сообщение:
access777 (14.08.2019), andries5 (02.12.2010), dosikus (02.12.2010), EugenyAM (02.12.2010), vpadm (02.12.2010)
Непрочитано 02.12.2010, 20:36  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

]Где накосячил не пойму :

Код:
#include "stm8s105c_s.h"
#include "stdint.h"


#define LED1 PORTB1
                  
void  main (void)
  {	
	CLK_ECKR=0x01;     //Разрешаем работу генератора с внешним кварцем (HSEEN)
  CLK_SWCR=0x02;      //Разрешаем переключение генераторов;
  CLK_SWR=0xB4;             //Выбираем clock от кварцевого генератора (HSE)
  CLK_CKDIVR=0;             //Делители частоты внутреннего и внешнего генератора на 1 - частота ядра максимальная
  while(CLK_CMSR!=0xB4);    //Ждем стабилизации частоты
  CLK_CSSR=0x01;     //Разрешаем автопереключение источника Clock на внутренний при неисправности генератора

          DDRB1 = 1;
		PB_CR1=0XFF;
		PB_CR2=0XFF;
		PE_DDR=0x01;
		PE_CR1=0x01;
		PE_CR2=0x01;
		CLK_CCOR=0x09;
	while (1)
	   { 
	   
	     LED1=~LED1;
				   
           }
  }
Главный цикл компилируется в :

Код:
main.c:37		     LED1=~LED1; 
0x8109 BCPL  _PB_ODR,#1 
0x810d JRT   0x8109

Считаю так :
Такт - при 16 МГц -62,5ns .
BCPL - 1 такт
JRT - 2 такта

Итого (1+2)*2 * 62,5 ns получаем период 375ns или 2,666 МГц .
На Rigole вижу 2 МГц и период 498ns.
Смотрел на кварце - норма .
Вывел на E0 fCPU - так же норма - 16 МГц.
Откуда появился лишний такт ?????
Миниатюры:
Нажмите на изображение для увеличения
Название: discov_4.png
Просмотров: 63
Размер:	7.0 Кб
ID:	15353   Нажмите на изображение для увеличения
Название: disov_3.png
Просмотров: 75
Размер:	7.5 Кб
ID:	15354  
__________________
Осторожно , злой кот

Последний раз редактировалось Falconist; 14.04.2011 в 00:21. Причина: Описка - JRT 2 такта
dosikus вне форума  
Непрочитано 02.12.2010, 21:04  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Интересно. Видимо где то лишний такт затесался. Симулятор показывает 3, а их на самом деле 4.... Попозже попробую у себя.

Последний раз редактировалось kison; 13.04.2011 в 18:17.
kison вне форума  
Непрочитано 02.12.2010, 21:14  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,759
Сказал спасибо: 123
Сказали Спасибо 598 раз(а) в 415 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от dosikus Посмотреть сообщение
Итого (1+3)*2 * 62,5 ns получаем период 375ns или 2,666 МГц .
А меня результат другой 500ns или 2.000 МГц (1+3=4, 4*2=8, 8*62,5=500)
А инициализацию делал так
void Init_CLK(void)
{
CLK_DeInit();
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE,DISABLE,DISABLE);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV16);
}

Последний раз редактировалось Falconist; 14.04.2011 в 00:21.
andries5 вне форума  
Непрочитано 02.12.2010, 21:17  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Дальше хуже :
Код:
#include "stm8s105c_s.h"
#include "stdint.h"


#define LED1 PORTB1
                  
void  main (void)
  {	
	CLK_ECKR=0x01;     //Разрешаем работу генератора с внешним кварцем (HSEEN)
  CLK_SWCR=0x02;      //Разрешаем переключение генераторов;
  CLK_SWR=0xB4;             //Выбираем clock от кварцевого генератора (HSE)
  CLK_CKDIVR=0;             //Делители частоты внутреннего и внешнего генератора на 1 - частота ядра максимальная
  while(CLK_CMSR!=0xB4);    //Ждем стабилизации частоты
  CLK_CSSR=0x01;     //Разрешаем автопереключение источника Clock на внутренний при неисправности генератора

          DDRB1 = 1;
		PB_CR1=0XFF;
		PB_CR2=0XFF;
		PE_DDR=0x01;
		PE_CR1=0x01;
		PE_CR2=0x01;
		CLK_CCOR=0x09;
	while (1)
	   { 
	   
	     LED1=1;
             LED1=0;
				   
           }
  }
Код:
main.c:38				 LED1=1; 
0x8109 BSET  _PB_ODR,#1 
main.c:39				 LED1=0; 
0x810d BRES  _PB_ODR,#1 
0x8111 JRT   0x8109
Имеем 2,6 МГц и 375 ns вместо 4 МГц и 250 ns.
Добавилось 2 лишних такта .
Такое ощущение что битовые операции имеют 2 такта а не 1.
Миниатюры:
Нажмите на изображение для увеличения
Название: disov_6.png
Просмотров: 58
Размер:	7.3 Кб
ID:	15355  
__________________
Осторожно , злой кот

Последний раз редактировалось Falconist; 14.04.2011 в 00:21.
dosikus вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KiCAD-объявления и впечатления al_dan KiCAD 32 03.10.2016 17:02
Народ, посмотрите quasm, Как ваши впечатления? suri Proteus, KiCAD и другие ECAD 5 14.10.2009 11:57


Часовой пояс GMT +4, время: 00:03.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot