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

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

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

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

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

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


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

Сообщение от qwerky Посмотреть сообщение
те кто писали delay.h.
Он таки есть? Прикрепил бы кто нибудь.
Я эти файлы так и не нашел. Может это не к дискавери, а что нибудь типа стандартных либ от IAR?
Реклама:

Последний раз редактировалось kison; 13.04.2011 в 16:34.
kison вне форума  
Непрочитано 08.02.2011, 09:25  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
ALL - Вообще народ, давайте закончим тут разговоры "в пользу бедных". Хотите сравнить STM8 с тем же АВР - давайте примеры. Я сделаю на STM8 аналог. Хотя ассемблер STM8 практически не знаю - еще пара дней всего как дискавери распечатал.
Маленький рабочий пример для Discovery.
Код:
#include "stm8s207k.h"

	switch	.bss
count:	ds.b	1

	switch	.text

	xdef	InitTimers, TIM3int, TIM4int

InitTimers:
	mov	TIM3_PSCR, 0x0F		; Set prescaler
	mov	TIM3_ARRH, #0xff	; Set auto-reload register
	mov	TIM3_ARRL, #0xFF		;
	bset	UIE3			; Enable TIM3 update interrupts
	bset	URS3
	bset	CEN3			; Run TIM3
	ret
;
; ***** Timer interrupt handlers *****
;

;
; ** TIM4 overflow ISR
;
TIM4int:
	iret
;
; ** TIM3 overflow ISR
;
TIM3int:
	bres	UIF3		; Reset interrupt flag
	dec	count		; Additional program delay
	jrne	1$			;

	mov	count, #0x4		; Reload dlay counter
	bcpl	PD_ODR, #PD0		; Toggle LED port
1$:	iret

	end

Последний раз редактировалось Falconist; 13.04.2011 в 23:54.
Bill вне форума  
Непрочитано 08.02.2011, 09:48  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от niXto Посмотреть сообщение
И мне самому интересно стало - давайте напишем подпрограмму преобразования 4-байтного (32 бита) двоичного числа в двоично-десятичное. Эта подпрограмма будет многим полезна, и она дает максимальную нагрузку на ядро - тут и сдвиги, и арифметика, и косвенная адресация. В стек и пр. ничего не сохраняем - предполагаем что у нас ВСЕ регистры и ячейки ОЗУ свободны. Согласны?
Несколько упрощенный пример, заранее известно, что двоичное число не может быть больше 9999 (четыре десятичных цифры.
Код:
	extern	BCDcount, Count
;
; ** Bin2BCD	-- подпрограмма преобразования двоичног значения
;		в его эквивалентное двоично-десятичное представление
;
	public	Bin2BCD

Bin2BCD:
	ldw	x, Count	; Взять двоичное значение счетчика
	ld	a, #10		; Вычислить значение младшей цифры
	div	x, a			;
	ld	BCDcount+0, a	; Запомнить цифру
	ld	a, #10		; Вычислить значение следующей цифры
	div	x, a			;
	ld	BCDcount+1, a	; Запомнить цифру
	ld	a, #10		; Вычислить значение следующей цифры
	div	x, a			;
	ld	BCDcount+2, a	; Запомнить цифру
	ld	a, xl		; Зваомнить старшую цифру
	ld	BCDcount+3, a		;
	ret
PS: Взял готовую п/п для 16-разрядного числа вместо 32-разрядного. Над последним не думал, не было необходимости. Но я думаю, что для данного случая пример наглядный. Или нет?

Последний раз редактировалось Falconist; 13.04.2011 в 23:54.
Bill вне форума  
Непрочитано 08.02.2011, 10:24  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Или да!
Приветствую, Bill!
st_1 вне форума  
Непрочитано 08.02.2011, 10:38  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugVor Посмотреть сообщение
С трудом вспоминал AVR ассемблер, но в итоге:

Несложное задание для STM8:
Исходные условия: Три восьмиразрядные переменные A, B и C разместить в SRAM.
Задание: Как можно быстрее:
1. Установить весь PORTA на выход;
2. Установить бит 0 в PORTA;
3. Проинициализировать переменную A = 1;
4. Проинициализировать переменную B = 2;
5. Уйти в подпрограмму;
В подпрограмме:
6. Сложить переменные A и B, результат поместить в C;
7. Вернуться из подпрограммы.
8. Если установлен бит 0 в PORTA, сбросить его.

Исходный код для AVR:
Код:
**************************************************  *************************
.include "m16def.inc"

.equ 		A=	$70     ;Адрес переменной A в SRAM.
.equ 		B=	$71     ;Адрес переменной B в SRAM.
.equ 		C=	$72     ;Адрес переменной C в SRAM.
.def		rA=	r16     ;РОН для переменной A.	
.def		rB=	r17     ;РОН для переменной B.
.def		rC=	r18     ;РОН для переменной C.	

;_________________________________________________  ____________________________

.org 0		;Вектор сброса
		rjmp     reset
;_________________________________________________  ____________________________

reset:		;Инициализация програмного стека.
		ldi  	RA,low(ramend)
		out  	spl,rA
		ldi  	RA,high(ramend)
		out  	sph,rA

		ldi  	rA,$ff		;НАЧАЛО ОТСЧЁТА ЦИКЛОВ			
        	out  	ddra,rA			;PortA на выход.
		sbi	porta,0		;Установить PortA.0
		ldi  	rA,$01			
		sts 	A,rA		;Переменная A=1;
		ldi  	rA,$02
		sts 	B,rA		;Переменная B=2;
		rcall	SubRoutine	;Уход в подпрограмму.
		sbic	pina,0		;Пропустить следующую команду, если PortA.0 сброшен. 
		cbi	porta,0		;Сбросить PortA.0 - КОНЕЦ ОТСЧЁТА	ЦИКЛОВ


SubRoutine:	lds 	rA,A		;Загрузить переменную A в РОН rA.
		lds 	rB,B		;Загрузить переменную B в РОН rB.
		add	rA,rB		;Сложить  rB+rA, результат в rA.
		sts	C,rA		;Сохранить результат сложения в переменную С в SRAM.	
		ret			;Возврат из подпрограммы.
ATmega16 справился за 26 тактов.
Начало замера - PortA физически установился на выход (сброс счётчика циклов в ноль перед командой out ddra,rA).
Окончание - PortA.0 сбросился в единицу.
Применены инструкции непосредственного сброcа, установки и проверки бита в порту, которых у STM8 возможно нет. Тогда это будет не очень честно. Просьба повторить для STM8.
Можно тоже самое или что-то посложнее написать на Си для IAR
Примерно то же самое для STM8
Код:
reset:	ldw   x, #ramend   ;Инициализация програмного стека.
		ldw   sp, x
;НАЧАЛО ОТСЧЁТА ЦИКЛОВ
		mov 	PA_DDR,#0xff	;PortA на выход.		
		bset	PA_ODR,,#0	;Установить PortA.0
		mov 	_A, #1		;Переменная A=1;
		mov 	_B,#2		        ;Переменная B=2;
		rcall	SubRoutine	;Уход в подпрограмму.
		btjf	PA_IDR,#0, 1$		;Пропустить следующую команду, если PortA.0 сброшен. 
		bres	PA_ODR,#0		;Сбросить PortA.0 - КОНЕЦ ОТСЧЁТА	ЦИКЛОВ
1$:
SubRoutine:
        	ld 	a,_A		;Загрузить переменную A в РОН rA.
		add	a, _B		;Сложить  rB+rA, результат в rA.
		ld	_C,a		;Сохранить результат сложения в переменную С в SRAM.	
		ret			;Возврат из подпрограммы.
Количество тактов - примерно 19-20

Последний раз редактировалось Falconist; 13.04.2011 в 23:53.
Bill вне форума  
Непрочитано 08.02.2011, 11:19  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от niXto Посмотреть сообщение
А еще у STM только 1 регистр косвенной адресации... Это тоже сильно раздувает код. Вот пример сложения двух 4-байтных массивов ODIN и DVA и помещения результата в массив SYMMA
Занимает 16 слов (32 байта) памяти и выполняется 55 циклов. Все-таки 3 регистра косвенной адресации - лучше чем 1...
кто-нибудь может портировать на STM?
Код:
       clrw     x                ; 1/1
       mov    count, #4          ; 4/1
loop:
       ld      a, (ODIN, x)      ; 3/1
       add     a, (DVA, x)       ; 3/1
       ld      (SUMMA, x), a     ; 3/1
       incw    x                 ; 1/1
       dec     count             ; 1/1
       jrne    loop              ; 2/2
В комментариях - длина команды (байт)/кол-во циклов

Последний раз редактировалось Falconist; 13.04.2011 в 23:53.
Bill вне форума  
Непрочитано 08.02.2011, 11:54  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
И вообще я тут подумал - тестировать то нужно на типичных задачах для 8-ми битного процессора. Например софтовый SPI какой нибудь - народ любит подключать экранчики от сотовых с таким интерфейсом.
Хм... Маленький пример
Код:
;
; ** OutDDS	-- the subroutine outputs data to AD9834 device
;
; Input:	- the 16-bit data in register X
; Output:	- none
;
	xdef	OutDDS
OutDDS:
	ld	a, #16			; Set bit counter
	bres	FSYN_BIT		; Output start
1$:	sllw	x			; Copy MSB to carry
	bccm	SDAT_BIT		; Output it to the port
	bres	SCLK_BIT		; Form a clock pulse
	nop					;
	bset	SCLK_BIT			;
	dec	a			; Bump counter
	jrne	1$			; and loop if not done yet

	bset	FSYN_BIT		; Output end
	ret

Последний раз редактировалось Falconist; 13.04.2011 в 23:54.
Bill вне форума  
Непрочитано 08.02.2011, 12:29  
a-fisher
Прописка
 
Аватар для a-fisher
 
Регистрация: 15.11.2007
Адрес: СПБ
Сообщений: 214
Сказал спасибо: 37
Сказали Спасибо 42 раз(а) в 34 сообщении(ях)
a-fisher на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Он таки есть? Прикрепил бы кто нибудь.
Я эти файлы так и не нашел. Может это не к дискавери, а что нибудь типа стандартных либ от IAR?
Странно, что Вы не нашли... Вот они.
Учтите, что функции используют таймер4, если он занят - нужно делать по другому. И вместо ожидаемой delay_us там delay_10us
Вложения:
Тип файла: rar delay.rar (1.7 Кб, 105 просмотров)

Последний раз редактировалось Falconist; 13.04.2011 в 23:53.
a-fisher вне форума  
Непрочитано 08.02.2011, 12:53  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

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

Сообщение от a-fisher Посмотреть сообщение
Странно, что Вы не нашли.
Ну судя по #include "stm8l15x_clk.h" искать надо было в паке под 8L. Впрочем неинтересные функции - разрешение низкое, частота процессора только 16МГц. А может мне 2МГц надо. Или вообще 1МГц. Ну и ходовые задержки в 1-2-3мкс не получить. При чем все равно цикл ожидания, что с таймером, что просто в цикле вертеться. ИМХО бесполезные они.
kison вне форума  
 

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

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

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, время: 07:10.


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