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

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

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

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

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

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


 
Опции темы
Непрочитано 15.09.2011, 11:05  
zheleznjakov
Прописка
 
Аватар для zheleznjakov
 
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
zheleznjakov на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от nagano Посмотреть сообщение
вот эт не работает
PHP код:
FLASH_DUKR 0xAE//разрешаем запись в EEPROM
FLASH_DUKR 0x56
вроде должно быть так
Код:
FLASH-›DUKR = FLASH_RASS_KEY2;
FLASH-›DUKR = FLASH_RASS_KEY1;
у меня было вот так (могу ошибаться)
Код:
void mcu_eeprom_unlock(void)
{
	if ((FLASH-›IAPSR & FLASH_FLAG_DUL) != FLASH_FLAG_DUL)
	{
		FLASH-›DUKR = FLASH_RASS_KEY2;
		FLASH-›DUKR = FLASH_RASS_KEY1;

		while ((FLASH-›IAPSR & FLASH_FLAG_DUL) != FLASH_FLAG_DUL)
		{
		}
	}
}

// снимаем защиту от записи EEPROM
mcu_eeprom_unlock();

e1=j; //пишем в EEPROM
плюс ещё нужно было определить адреса регистров
+def _FLASH_IAPSR=0x5054
+def _FLASH_CR2=0x5052
но вот уже не помню для какого случая
почитайте доку на comis там все есть
Реклама:
__________________
ziblog.ru

Последний раз редактировалось zheleznjakov; 15.09.2011 в 11:13.
zheleznjakov вне форума  
Сказали "Спасибо" zheleznjakov
nagano (15.09.2011)
Непрочитано 15.09.2011, 12:48  
zheleznjakov
Прописка
 
Аватар для zheleznjakov
 
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
zheleznjakov на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Вот тут шаблон
http://ziblog.ru/2011/04/24/stm8l-di...m8s-discovery/

исправить запись в main.h
#define LED_GREEN E, 7, LOW, OUTPUT_PUSH_PULL_SPEED_LIMIT_10MHZ
на
#define LED_GREEN E, 7, HIGH, OUTPUT_PUSH_PULL_SPEED_LIMIT_10MHZ

в опциях проекта на вкладке linker
в ячейку Objects
прописать либу libl0.sm8

если файл линкера пишите сами то прописать либу в него

простой пример для stm8l

Код:
#include "main.h"

@eeprom uint8_t test;

volatile char FLASH_IAPSR @0x5054;
volatile char FLASH_CR2 @0x5051;

//------------------------------------------------------------------------------
void mcu_eeprom_unlock(void)
{
	if ((FLASH-›IAPSR & FLASH_FLAG_DUL) != FLASH_FLAG_DUL)
	{
		FLASH-›DUKR = FLASH_RASS_KEY2;
		FLASH-›DUKR = FLASH_RASS_KEY1;

		while ((FLASH-›IAPSR & FLASH_FLAG_DUL) != FLASH_FLAG_DUL)
		{
		}
	}
}

//------------------------------------------------------------------------------
int main(void)
{
	PIN_CONFIGURATION(LED_GREEN);
	
	mcu_eeprom_unlock();
	
	test = 1;
	
	if(test == 1)
	{
		PIN_ON(LED_GREEN);
	}
	else
	{
		PIN_OFF(LED_GREEN);
	}

	while (1)
	{
	}

	return 0;
}
__________________
ziblog.ru

Последний раз редактировалось zheleznjakov; 15.09.2011 в 12:58.
zheleznjakov вне форума  
Сказали "Спасибо" zheleznjakov
nagano (15.09.2011)
Непрочитано 18.09.2011, 21:37  
kazusdoc
Частый гость
 
Регистрация: 23.05.2009
Сообщений: 46
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
kazusdoc на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Попробовал написать чего-нибудь в STVD - дерьмо редкостное, такое ощущение что ST взяло всех в халявные бэта-тестеры ..... эти уроды даже ассемблер сделать не могут нормально
kazusdoc вне форума  
Непрочитано 27.09.2011, 13:33  
nagano
Прописка
 
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
nagano на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Как описать функцию прерывания в Cosmic без
библиотеки от ST? Кто-то пробовал? Поделитесь.
nagano вне форума  
Непрочитано 27.09.2011, 22:17  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Подключается в проект файл stm8_interrupt_vector.c со всеми векторами.
Пишется в любом си файле включенном в проект обычная функция. Она должна не возвращать значений и не принимать параметров. К примеру void TIM3_UPD(void), добавляя вначале @far @interrupt . То есть функция выглядит так:
Код:
@far @interrupt void TIM3_UPD(void)
{
.......
}
Дальше в файл с векторами перед описанием векторов добавляется ее прототип:
Код:
extern @far @interrupt void TIM3_UPD(void);
На место нужного вектора вписывается имя функции:
Код:
....
	{0x82, NonHandledInterrupt}, /* irq14 */
	{0x82, (interrupt_handler_t)TIM3_UPD}, /* irq15 */
	{0x82, NonHandledInterrupt}, /* irq16 */
....
все.

Последний раз редактировалось kison; 27.09.2011 в 22:51.
kison вне форума  
Эти 4 пользователя(ей) сказали Спасибо kison за это сообщение:
andries5 (27.09.2011), dosikus (27.09.2011), nagano (28.09.2011), serj_neo (28.09.2011)
Непрочитано 28.09.2011, 09:22  
nagano
Прописка
 
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
nagano на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Спасибо, заработало. Прием по USART в прерывании сделал.
nagano вне форума  
Непрочитано 30.09.2011, 12:11  
picmail
Прохожий
 
Регистрация: 15.10.2010
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
picmail на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Коллеги, подскажите где косяк.
Использую ST visual develop + raisonance
Обнаружил странную вещь с использованием sprintf
Простой код:
Код:
#include ‹stdio.h›

void main(){
char str[20];

sprintf (str,"test %d",123);
 while (1);
}
Когда делаю компиляцию (compile)- все ок
Когда делаю сборку (build) - ошибка:

Код:
***ERROR 100 : UNRESOLVED EXTERNAL
		SYMBOL : ?putchar(WRITECHAR)

LINK/LOCATE RUN COMPLETE, 1 ERROR  FOUND.
 The command: "rlstm8 -P "Debug\main.o" TO(Debug\counter.aof) LIBPATH("C:\Program Files\Raisonance\Ride\Lib\ST7")  DEBUGLINES DEBUGPUBLICS DEBUGSYMBOLS PR(Debug\counter.map)  DATASTART(0x0) RAMSIZE(0x800) CODESTART(0x8000) CODESIZE(0x8000) STACKTOP(0x800) STACKSIZE(0x201) EEPROMSTART(0x1000) EEPROMSIZE(0x400) " has failed, the returned value is: 1
exit code=1.

counter.elf - 2 error(s), 0 warning(s)
Причем в самом ride7 все нормально.
Что не так?
picmail вне форума  
Непрочитано 30.09.2011, 14:09  
_nebula_
Прохожий
 
Регистрация: 05.11.2006
Сообщений: 6
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
_nebula_ на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от picmail Посмотреть сообщение
Коллеги, подскажите где косяк.
Использую ST visual develop + raisonance
Обнаружил странную вещь с использованием sprintf
Простой код:
Код:
#include ‹stdio.h›

void main(){
char str[20];

sprintf (str,"test %d",123);
 while (1);
}
Когда делаю компиляцию (compile)- все ок
Когда делаю сборку (build) - ошибка:

Код:
***ERROR 100 : UNRESOLVED EXTERNAL
		SYMBOL : ?putchar(WRITECHAR)

LINK/LOCATE RUN COMPLETE, 1 ERROR  FOUND.
 The command: "rlstm8 -P "Debug\main.o" TO(Debug\counter.aof) LIBPATH("C:\Program Files\Raisonance\Ride\Lib\ST7")  DEBUGLINES DEBUGPUBLICS DEBUGSYMBOLS PR(Debug\counter.map)  DATASTART(0x0) RAMSIZE(0x800) CODESTART(0x8000) CODESIZE(0x8000) STACKTOP(0x800) STACKSIZE(0x201) EEPROMSTART(0x1000) EEPROMSIZE(0x400) " has failed, the returned value is: 1
exit code=1.

counter.elf - 2 error(s), 0 warning(s)
Причем в самом ride7 все нормально.
Что не так?
Попробуй прописать в коде ф-цию:
void putchar ( uint8_t ch )
{
//здесь вывод в какой либо из UART..
}
_nebula_ вне форума  
Непрочитано 30.09.2011, 14:45  
picmail
Прохожий
 
Регистрация: 15.10.2010
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
picmail на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Это к чему?
Мне надо сформировать строку и записать ее в переменную str.
В этом и есть идея sprinf.
Причем тут УАРТ?
picmail вне форума  
Непрочитано 04.10.2011, 18:45  
evil_laugh
Прохожий
 
Регистрация: 04.10.2011
Сообщений: 7
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
evil_laugh на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Здравствуйте!

Прошу помощи гуру, имеющих или имевшим дело с контроллерами STM8. Решил попробовать освоить их как предварительную "ступень" перед переходом на STM32. Заказал себе плату STM8 Discovery, жду, пока приедет. Пока решил почитать даташит и попробовать что-нибудь написать+отладить в симуляторе.

Среда разработки - STVD, язык - ассемблер, компилятор встроенный в среду, другого не скачивал.

Почитал ту скудную информацию, которую удалось добыть в сети по началу работы с STM8 на ассемблере. Прочитал даташит. Решил попробовать по аналогии с найденным в интернете включением диода на ножке сделать переключение источника тактирования на внешний кварц.

Вот такой код. Вместо бесконечного цикла, сгенерированного программой, вставил кусочек кода, составленный прямо по даташиту.


Код:
stm8/

	#include "mapping.inc"
	#include "STM8S105C6.inc"

	segment 'rom'
main.l
; initialize SP
	ldw X,#stack_end
	ldw SP,X

	#ifdef RAM0	
; clear RAM0
ram0_start.b EQU $ram0_segment_start
ram0_end.b EQU $ram0_segment_end
	ldw X,#ram0_start
clear_ram0.l
	clr (X)
	incw X
	cpw X,#ram0_end	
	jrule clear_ram0
	#endif

	#ifdef RAM1
; clear RAM1
ram1_start.w EQU $ram1_segment_start
ram1_end.w EQU $ram1_segment_end	
	ldw X,#ram1_start
clear_ram1.l
	clr (X)
	incw X
	cpw X,#ram1_end	
	jrule clear_ram1
	#endif

; clear stack
stack_start.w EQU $stack_segment_start
stack_end.w EQU $stack_segment_end
	ldw X,#stack_start
clear_stack.l
	clr (X)
	incw X
	cpw X,#stack_end	
	jrule clear_stack

;	Здесь начинается мой код.

start.l

	BSET	CLK_SWCR,#1		
	BRES	CLK_SWCR,#2	;выкл. прерывание
	LD		A,#$B4			;значение для внешнего кварца
	LD		CLK_SWR,A		;загружаем
	
loop.l		;бесконечный цикл

	jra	loop


	

	interrupt NonHandledInterrupt
NonHandledInterrupt.l
	iret

	segment 'vectit'
	dc.l {$82000000+main}								; reset
	dc.l {$82000000+NonHandledInterrupt}; trap
	dc.l {$82000000+NonHandledInterrupt}; irq0
	dc.l {$82000000+NonHandledInterrupt}; irq1
	dc.l {$82000000+NonHandledInterrupt}; irq2
	dc.l {$82000000+NonHandledInterrupt}; irq3
	dc.l {$82000000+NonHandledInterrupt}; irq4
	dc.l {$82000000+NonHandledInterrupt}; irq5
	dc.l {$82000000+NonHandledInterrupt}; irq6
	dc.l {$82000000+NonHandledInterrupt}; irq7
	dc.l {$82000000+NonHandledInterrupt}; irq8
	dc.l {$82000000+NonHandledInterrupt}; irq9
	dc.l {$82000000+NonHandledInterrupt}; irq10
	dc.l {$82000000+NonHandledInterrupt}; irq11
	dc.l {$82000000+NonHandledInterrupt}; irq12
	dc.l {$82000000+NonHandledInterrupt}; irq13
	dc.l {$82000000+NonHandledInterrupt}; irq14
	dc.l {$82000000+NonHandledInterrupt}; irq15
	dc.l {$82000000+NonHandledInterrupt}; irq16
	dc.l {$82000000+NonHandledInterrupt}; irq17
	dc.l {$82000000+NonHandledInterrupt}; irq18
	dc.l {$82000000+NonHandledInterrupt}; irq19
	dc.l {$82000000+NonHandledInterrupt}; irq20
	dc.l {$82000000+NonHandledInterrupt}; irq21
	dc.l {$82000000+NonHandledInterrupt}; irq22
	dc.l {$82000000+NonHandledInterrupt}; irq23
	dc.l {$82000000+NonHandledInterrupt}; irq24
	dc.l {$82000000+NonHandledInterrupt}; irq25
	dc.l {$82000000+NonHandledInterrupt}; irq26
	dc.l {$82000000+NonHandledInterrupt}; irq27
	dc.l {$82000000+NonHandledInterrupt}; irq28
	dc.l {$82000000+NonHandledInterrupt}; irq29

	end
Собственно, решил просмотреть всё это дело во встроенном симуляторе. Всё компилится, всё замечательно.

Первый вопрос: где можно посмотреть значения контроллерных спецрегистров? Наблюдать их в окне Memory, которое сплошняком показывает всю память контроллера, как-то не очень наглядно.

Второй вопрос: у многих регистров есть так называемое Reset Value. Почему в окне Memory все регистры, кроме очищенных в начале кода, равны 0xFF?

Третий вопрос: почему приведённый выше код, хоть и изменяет значения регистров (от 0xFF) согласно данным командам, ни к чему не приводит? Как вообще правильно инициализировать контроллер? В примерах из сети якобы всё прекрасно работает, хотя там всего одна строчка (выдача 1цы на ножку) добавляется вместо бесконечного цикла, который с самого начала в программе стоит.

И, наконец, четвёртый вопрос - есть ли что-то ... ну, поприличнее, что ли, этой среды разработки, где можно нормально писать на ассемблере под STM8? После MPLAB этот STVD поначалу кажется неудобным, да ещё и симулятор как-то странно работает.
evil_laugh вне форума  
 

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

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

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


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