14.03.2011, 22:04
|
|
Частый гость
Регистрация: 10.12.2010
Сообщений: 42
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от qwerky
|
Где у STM8L151 вход внешнего такта для таймеров 1 и 2 ? В RM описано как-то невнятно.
|
Для таймера1 TIM1_ETR (см. стр.288 RM0031)
Для таймера2 TIM2_ETR
и т.д.
но при описании выводов конкретных чипов
наименование другое
TIM1_TRIG, TIM2_TRIG
вот я так понял по документации
но не проверял ещё
Последний раз редактировалось Falconist; 13.04.2011 в 23:51.
|
|
|
|
17.03.2011, 18:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Кто-то пробовал в своей программе использовать RC Touch Sensing Library for STM8S?
|
|
|
|
18.03.2011, 14:50
|
|
Временная регистрация
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Кто читал Unique ID у различных STM8?
Прочитал несколько штук STM8S105 и заметил, что значения всех 12 байтов лежат в диапазоне ASCII цифры+верхний регистр латиницы.
Вопрос - эти значения могут быть любыми в диапазоне от 00 до FF или все-таки они всегда отвечают вышеописанному условию?
В даташите на эту тему не нашел ничего.
|
|
|
|
18.03.2011, 19:01
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Нужны извращения ...
Компилятор Cosmic .
Как передать в инлайн асм переменную и константу из Сишного блока ?
Что то типа :
PHP код:
|
void send_sw_spi (uint8_t data)
{
uint8_t temp=8;
#asm
1$: SLA data
BCCM PORTC,#6
BSET PORTС,#5
BRES PORTC,#5
DEC temp
JREQ 1$
#endasm
}
|
__________________
Осторожно , злой кот
Последний раз редактировалось Falconist; 13.04.2011 в 23:50.
|
|
|
|
18.03.2011, 19:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Пример выше, в https://kazus.ru/forums/showpost.php...&postcount=968
Там пример задержки.
Переменную можно. А вот константу зачем передавать?
Я кстати тут ровно о том же размышляю. И тоже почти SPI, только посылка 9 бит. То, что космик натворил мне не понравилось. С переменными то получается, а вот аналогичное PORTC,#5 изменяемым из хидера сделать не выходит. А без этого что то совсем не в радость ускорение кода.
|
|
|
|
18.03.2011, 19:42
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Сообщение от kison
|
А вот константу зачем передавать?
|
Не правильно ляпнул , не константу а дефайн .
kison, А UART2 с 9 битами не подойдет с синхронизацией , правда передача только с младшего бита ?
Сообщение от kison
|
а вот аналогичное PORTC,#5 изменяемым из хидера сделать не выходит. А без этого что то совсем не в радость ускорение кода.
|
Это похоже возможно если подключать модуль на асме , дефайны в inc .
Но хотелось в вставке ...
__________________
Осторожно , злой кот
Последний раз редактировалось Falconist; 13.04.2011 в 23:50.
|
|
|
|
18.03.2011, 20:44
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сейчас рою чужие исходники , начинаю въезжать :
Код:
|
_lcd_gotoxy(0,0); // курсор в позицию 0,0
_lcd_putchar(':'); // Разделитель |
Вызов из сишного модуля функций на асме из асмовского модуля.
Параметры передаются в зависимости от типа и через A , и через Х Y.
Код:
|
// Вывод на индикатор символа
// с - Выводимый символ
// Курсор сдвигается влево, с переходом на другую строку,
// верхний левый угол при необходимости
extern void _lcd_putchar(unsigned char c);
// Вывод на индикатор строки
// str - указатель на строку символов, заканчивающуюся нулём
extern unsigned char * _lcd_putstr(unsigned char *str);
// Установка позиции курсора
// X - позиция ч строке (с нуля), Y - номер строки (0/1)
extern void _lcd_gotoxy(unsigned char X, unsigned char Y); |
Код:
|
#include "delay.inc"
#include "defines.inc"
switch .bsct
__LCD_X: ; позиция курсора дисплея в строке
ds.b 1
__LCD_Y: ; позиция курсора в столбце
ds.b 1
__LCD_X_MAX: ; ширина строки дисплея в символах
ds.b 1
switch .text
; в файле "defines.inc" определяются параметры подключения индикатора к портам
; пример:
; PORT_A3-6 - Data4-7
; PORT_E7 - RS
; PORT_E6 - Enable
; PORT_B7 - R/#W
;#define LCD_DATA_PORT PA_ODR
; здесь задается на сколько бит сдвинуто подключение
; линий данных индикатора по отношению к линиям порта
;#define LCD_DATA_SHIFT 1 ; сдвиг на 1 разряд (линии порта 3-6) |
Код:
|
; функция вывода на экран символа со смещением курсора в след. позицию
; параметры: выводимый символ (байт) - через A
; изменяет регистры A, CC
; void _lcd_putchar(unsigned char c)
xdef __lcd_putchar
__lcd_putchar:
call __lcd_write_data ; Записываем символ в память экрана
inc __LCD_X ; смещение курсора на след. позицию
ld A, __LCD_X ; читаем переменную LCD_X
cp A, __LCD_X_MAX ; дошел ли курсор до конца строки?
jrult _lcd_putchar_end ; не дошел - на выход
clr __LCD_X ; курсор в начало строки
inc __LCD_Y ; следующая строка
ld A, __LCD_Y ; читаем переменную
cp A, #2 ; дошел курсор до нижнего края экрана?
jrult _lcd_putchar_1 ; не дошел - на установку адреса DDRAM
clr A ; курсор "домой"
ld __LCD_Y, A ; записываем позицию Y
_lcd_putchar_1:
swap A ; вычисление адреса позиции в DDRAM
sll A ; умножение на 40h
sll A
or A, __LCD_X ; A=X+Y*40h
or A,#$80 ; команда установки адреса DDRAM
call __lcd_write_cmd ; устанавливаем адрес в DDRAM
_lcd_putchar_end:
ret ; выход из процедуры |
__________________
Осторожно , злой кот
Последний раз редактировалось Falconist; 13.04.2011 в 23:50.
|
|
|
|
18.03.2011, 20:50
|
|
Вид на жительство
Регистрация: 21.11.2009
Сообщений: 342
Сказал спасибо: 4
Сказали Спасибо 149 раз(а) в 66 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Цитата:
|
Как передать в инлайн асм переменную и константу из Сишного блока ?
|
вынести temp за пределы блока или объявить как static, в асме добавить подчеркивание _temp
http://www.cosmicsoftware.com/faq/faq6.php
Последний раз редактировалось Falconist; 13.04.2011 в 23:50.
|
|
|
|
18.03.2011, 20:54
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от qwerky
|
вынести temp за пределы блока или объявить как static, в асме добавить префикс с_
|
Мерси . Бум знать. Пойду штудировать хелп.
Хотя вообще то имелся ввиду параметр функции . Теперь ясно , что если параметр байт он передается через A .
__________________
Осторожно , злой кот
|
|
|
|
18.03.2011, 21:07
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
qwerky, Не компилит...
Код:
|
void send_sw_spi (uint8_t data)
{
uint8_t temp=8;
#asm
xref _temp
PORTC: equ $500A
1$: SLA A
BCCM PORTC,#6
BSET PORTC,#5
BRES PORTC,#5
DEC _temp
JREQ 1$
#endasm
} |
Цитата:
|
#error clnk Debug\sw_spi_ls020.lkf:1 symbol _temp not defined (Debug\sw_spi.o )
|
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 18.03.2011 в 21:21.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:23.
|
|