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

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

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

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

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

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


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

Сообщение от luxin Посмотреть сообщение
Если нет, то какой тип присваивается вашей переменной по умолчанию?
int - 16 бит. У меня возврат uint32_t прекрасно работает.
Реклама:
kison вне форума  
Непрочитано 10.02.2011, 04:25  
luxin
Частый гость
 
Регистрация: 29.04.2007
Сообщений: 11
Сказал спасибо: 5
Сказали Спасибо 2 раз(а) в 1 сообщении
luxin на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
int - 16 бит. У меня возврат uint32_t прекрасно работает.
А никто и не говорит, что плохо работают.

Человек писал:
Сообщение от qwerky Посмотреть сообщение
нет, после вызова функции сразу вызывается c_itolx, то есть слово в Х расширяется в long, старшие 16бит пропадают.
т.е. результат получается 16р.(старшие уже потеряны разряды), а потом просто происходит преобразование типов. Поэтому спросил какой тип по умолчанию b32.
luxin вне форума  
Непрочитано 10.02.2011, 09:50  
qwerky
Вид на жительство
 
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
qwerky на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Цитата:
какой тип по умолчанию b32
извиняюсь, пропустил
static volatile unsigned long b32;

Цитата:
У меня возврат uint32_t прекрасно работает.
а где там stdint.h ? я не нашел
qwerky вне форума  
Непрочитано 10.02.2011, 13:05  
qwerky
Вид на жительство
 
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
qwerky на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

чудеса, немного перегруппировал вызов функций, и результат в отладчике получился правильный...

32-битный BIN-BCD (сдвиг + коррекция):
Код:
U32 bin2bcd_U32(U32 bin) {
	#asm
	        clrw X     ; result in stack
		pushw X
		pushw X
		push #32   ; bit counter
		
	bin2bcd_U32_01:    ; bit shift loop
		
		; BCD correction
		add SP,#5  ; SP points to result MSB
		ldw X,#4   ; result byte counter
	bin2bcd_U32_02:
		ld A,#0x33
		add A,(0,SP)
		bcp A,#0x08
		jrne bin2bcd_U32_03
		sub A,#0x03
	bin2bcd_U32_03:
		bcp A,#0x80
		jrne bin2bcd_U32_04
		sub A,#0x30
	bin2bcd_U32_04:
		push A
		decw X ; decrement byte counter
		jrne bin2bcd_U32_02
		sub SP,#1

		; shift bits
		sll (11,SP) ; bin
		rlc (10,SP)
		rlc (9,SP)
		rlc (8,SP)
		rlc (5,SP)  ; bcd
		rlc (4,SP)
		rlc (3,SP)
		rlc (2,SP)
		
		dec (1,SP) ; decrement bit counter
		jrne bin2bcd_U32_01
		
		pop A
		popw X      ; copy result to c_lreg
		ldw c_lreg,X
		popw X
		ldw c_lreg+2,X
	#endasm
}

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

Сообщение от qwerky Посмотреть сообщение
а где там stdint.h ? я не нашел
Нету. Пришлось сделать.
kison вне форума  
Непрочитано 10.02.2011, 16:26  
luxin
Частый гость
 
Регистрация: 29.04.2007
Сообщений: 11
Сказал спасибо: 5
Сказали Спасибо 2 раз(а) в 1 сообщении
luxin на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от qwerky Посмотреть сообщение
U32 bin2bcd_U32(U32 bin) {
#asm clrw X ; result in stack
pushw X
pushw X
push #32 ; bit counter
bin2bcd_U32_01: ; bit shift loop ; BCD correction
add SP,#5 ; SP points to result MSB
А не стремно так делать? Я понимаю, что со стеком очень хорошо работает данный контроллер, но ...
Как вы думаете, как Ваша функция выполнится, если произойдет вызов прерывания?
luxin вне форума  
Непрочитано 10.02.2011, 16:28  
qwerky
Вид на жительство
 
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
qwerky на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Цитата:
Как вы думаете, как Ваша функция выполнится, если произойдет вызов прерывания?
прерывание должно сохранить состояние регистров и стека, нет ?
а, понял. прерывание может затереть данные на вершине стека.

Последний раз редактировалось qwerky; 10.02.2011 в 16:35.
qwerky вне форума  
Непрочитано 10.02.2011, 16:41  
luxin
Частый гость
 
Регистрация: 29.04.2007
Сообщений: 11
Сказал спасибо: 5
Сказали Спасибо 2 раз(а) в 1 сообщении
luxin на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от qwerky Посмотреть сообщение
а, понял. прерывание может затереть данные на вершине стека.
Молодец

Тоже произойдет, если вы захотите внутри добавить вызов какой-то функции. Возможно была у Вас проблема подобного типа

Последний раз редактировалось luxin; 10.02.2011 в 16:45.
luxin вне форума  
Непрочитано 10.02.2011, 19:24  
qwerky
Вид на жительство
 
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
qwerky на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

модификация:
Код:
U32 bin2bcd_U32(U32 bin) {
	#asm
	        clrw X     ; result in stack
		pushw X
		pushw X
		ldw X,SP
		push #32   ; bit counter
		
	bin2bcd_U32_01:
		
		push #4    ; byte counter
		; BCD correction
	bin2bcd_U32_02:
		ld A,#0x33
		add A,(1,X)
		bcp A,#0x08
		jrne bin2bcd_U32_03
		sub A,#0x03
	bin2bcd_U32_03:
		bcp A,#0x80
		jrne bin2bcd_U32_04
		sub A,#0x30
	bin2bcd_U32_04:
		ld (1,X),A
		incw X
		
		dec (1,SP)
		jrne bin2bcd_U32_02
		subw X,#4
		pop A

		; shift bits
		sll (11,SP) ; bin
		rlc (10,SP)
		rlc (9,SP)
		rlc (8,SP)
		rlc (5,SP)  ; bcd
		rlc (4,SP)
		rlc (3,SP)
		rlc (2,SP)
		
		dec (1,SP)
		jrne bin2bcd_U32_01
		
		pop A
		popw X      ; copy result to c_lreg
		ldw c_lreg,X
		popw X
		ldw c_lreg+2,X
	#endasm
}
p.s.достали глюки отладчика - не всегда правильно отображает регистры и память

Последний раз редактировалось qwerky; 10.02.2011 в 19:26.
qwerky вне форума  
Непрочитано 10.02.2011, 19:58  
luxin
Частый гость
 
Регистрация: 29.04.2007
Сообщений: 11
Сказал спасибо: 5
Сказали Спасибо 2 раз(а) в 1 сообщении
luxin на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от qwerky Посмотреть сообщение
p.s.достали глюки отладчика - не всегда правильно отображает регистры и память
Я тоже заметил. Пробовал Raisonance - были глюки. Попробовал STVD - тоже. Я как понял причина в том, что локальные переменные находятся в стеке. Когда SP изменяется, то и локальные переменные некорректно отображаются
luxin вне форума  
 

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

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

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


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