реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> STM8L - DISCOVERY, работа с прерываниями
Kalyan
сообщение Mar 12 2011, 22:29
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Добрый вечер! Вот суть проблемы...... Работаю в компиляторе IAR Embedded Workbench for STMicroelectronics STM8 1.20 Evaluation. Пытаюсь получить прерывание от таймера 4. В файлике iostm8.h нашел таблицу прерываний, но при подключении этого файлика возникают ошибки. Я вырезал оттуда табличку и создал новый заголовочный файлик - interrupt.h. Пишу следующий код:

#include <iostm8l152c6.h>
#include "interrupt.h"
#include "stm8l15x.h"

#pragma vector=TIM4_OVR_UIF_vector
__interrupt __root void tim4_Handler(void)
{
PC_ODR^=0x80;
TIM4_SR1=0x00;
}
int main( void )
{
PC_CR1=0x80; //0b10000000
PC_CR2=0x00;
PC_DDR=0x80; //0b10000000

PC_ODR=0x80; // засветил диод 0b10000000

CLK_CKDIVR=0x00; //поделю системную частоту на 1 тоесть частота будет 8 мегов.
CLK_PCKENR1=0x04; //включаем тактирование таймера 4 0в00000100
//TIM4_PSCR=0x00; //делим частоту
TIM4_IER=0x01; // использую прерывания
TIM4_CR1=0x81; // включаем таймер 0в10000001
enableInterrupts();
while (1)
{
};
}

Все компилируется без ошибок, но в обработчик прерывания не заходит! Что я неправильно делаю??? Помогите пожалуйста!!!
Go to the top of the page
 
+Quote Post
Transcend
сообщение Mar 13 2011, 10:20
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 5-03-11
Пользователь №: 63 418



А у меня тоже есть такая платочка.
Купил вчера к ней шнурок мини-USB, воткнул в комп, питание появилось, светодиодики заморгали, на индикаторе пишет не русским текстом, короче - все работает.
Теперь надо бы и мне на ИАРе тоже какой-нибудь "Демо_проектик" откомпилировать и запустить. biggrin.gif


--------------------
Шел я лесом, песню пел (С)
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Mar 13 2011, 23:18
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Проблему решил, все работает!!! Не досмотрел файлик iostm8l152c6.h до конца - там есть таблица номеров векторов прерываний. Работающий код если кому интересно:

#include <iostm8l152c6.h>

#pragma vector=TIM4_UIF_vector
__interrupt void tim4_Handler(void)
{
PC_ODR^=0x80;
TIM4_SR1=0x00;
}

int main( void )
{
PC_CR1=0x80; //0b10000000
PC_CR2=0x00;
PC_DDR=0x80; //0b10000000
PC_ODR=0x80; // засветил диод 0b10000000
CLK_CKDIVR=0x00; //поделю системную частоту на 1 тоесть частота будет 8 мегов.
CLK_PCKENR1=0x04; //включаем тактирование таймера 4 0в00000100
TIM4_PSCR=0xFF; //делим частоту
TIM4_IER=0x01; // использую прерывания
TIM4_CR1=0x81; // включаем таймер 0в10000001
asm("rim"); // Enable interrupt

while (1)
{
};
}
Go to the top of the page
 
+Quote Post
_Bill
сообщение Mar 14 2011, 17:00
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Kalyan @ Mar 14 2011, 03:18) *
asm("rim"); // Enable interrupt

Вместо этого лучше использовать "встроенную" функцию __enable_interrupt. Или нет?
Go to the top of the page
 
+Quote Post
Kalyan
сообщение Mar 14 2011, 21:09
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 4-11-10
Пользователь №: 60 656



Цитата(_Bill @ Mar 14 2011, 20:00) *
Вместо этого лучше использовать "встроенную" функцию __enable_interrupt. Или нет?

Лучше или нет - не знаю. Я новичок в микроконтроллерах.. ))) Начал с mcs-51 на асемблере пол года назад. Теперь вот пытаюсь перейти на што-то посовременней и на С...

Сообщение отредактировал Kalyan - Mar 14 2011, 21:10
Go to the top of the page
 
+Quote Post
Transcend
сообщение Mar 15 2011, 06:42
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 5-03-11
Пользователь №: 63 418



Цитата(Kalyan @ Mar 15 2011, 00:09) *
Лучше или нет - не знаю. Я новичок в микроконтроллерах.. ))) Начал с mcs-51 на асемблере пол года назад. Теперь вот пытаюсь перейти на што-то посовременней и на С...

Это вы зря про mcs-51 так сказали. Не понимают многие эмбеддеры как можно использовать 51 ядро. Ну да это оффтоп конечно.
STM8L против современного МК с ядром 8052 - как запорожец против порше, хотя габариты близки, теже четыре колеса и движок ТОЖЕ сзади.... laugh.gif
Ну сразу пример захотите ведь, я вот на ЛЮБОМ МК серии 8052 смогу 2 мегабайта (и более) памяти програм и ОЗУ получить, в адресном пространстве МК - а кто сможет на любом другом восьмиразрядном МК так сделать? rolleyes.gif И есть 8052 у которых был 400 MIPS и более, не помню марку.
Смешным мне кажется четыре генератора тактовых сигналов - легко ведь сделать PLL от часового кварцевого генератора. А конденсаторы вокруг резонаторов - уже ни одна приличная фирма не ставит.
Вобщем STM8L это набор для того что бы я получал удовольствие по мере моего освоения "этого комплекта" - как много узнаю "нового" каждый день.
biggrin.gif
И особенно радует наличие ЦЕЛОГО программатора со SWIM технологией, хотя этот проц ВРОДЕБЫ штатно может грузится по UART.
И выпускают ТОЛЬКО в корпусах которые практически очень трудно запаять вручную.
Кстати, можно наладить производство переходника - печатной платы с выводами под DIP40 (или квадратную), на которую будет распаен STM8 пятивольтовой серии. Для школяров-студиусов с их утюжной технологией изготовления печатных плат + шнурок USB-UART + программа загрузчик по СОМ порту (эмулированного через USB), это просто клондайк будет.

Сообщение отредактировал Transcend - Mar 15 2011, 07:03


--------------------
Шел я лесом, песню пел (С)
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Mar 16 2011, 06:26
Сообщение #7


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



2 мегабайта на 8052 - это очень здорово надо поизвращаться при ширине адресной шины в 16 разрядов... sm.gif К тому же не "на ЛЮБОМ" - у мелких 51 внешних шин вообще нет.
STM8 имеют адресное пространство 1 МБ (20 разрядов) на всё про всё, как для 8-битника - вполне нормально.
Корпусировка, да, неудобная. SSOP-20 слишком большой sm.gif, а в 14...16-выводных выпустить не удосужились. Придётся, наверное, к QFN привыкать.
Цитата
ВРОДЕБЫ штатно может грузится по UART.

Может, но не всякий. И программа-загрузчик на сайте есть. Flash_Loader_Demonstrator_v2.2.0. Если "flash is virgin", как в UM0560 выразились, прошьёт. Один раз. sad.gif
Что озадачило, так то, что для всякого периферийного узла тактирование нужно включать отдельно, помимо активации самого узла. И в RM эти моменты находятся очень далеко друг от друга.
Из плюсов - дешевизна и небольшое потребление.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
Transcend
сообщение Mar 16 2011, 07:49
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 5-03-11
Пользователь №: 63 418



Цитата(Harbinger @ Mar 16 2011, 09:26) *
2 мегабайта на 8052 - это очень здорово надо поизвращаться при ширине адресной шины в 16 разрядов... sm.gif К тому же не "на ЛЮБОМ" - у мелких 51 внешних шин вообще нет.

Так то да...
НО, 8051 от 8052 должен же чем то отличаться, кроме номера.
Я так думаю, что в стандартном исполнении у 8052 должны быть в наличии 4 порта по 8 разрядов - если их ампутировали, то это уже даже не 8051, а 8051'
А то, что адресное пространство недостаточное, дык придумали банки адресов (страницы) там по 64К адресов может быть - от 16 (до 256 теоретически - а это 16 Мбайт). Я этим пользовался еще когда ДОС был в ходу (страшно сказать как давно это было). Были компиляторы языка Си фирмы ИАР под досом (где то уже говорил про это rolleyes.gif ). Там использование памяти на "Банках" было широко, через функцию - монитор. Операционные системы CP/M требовали память.
Но архитектура 8052 не устарела, (потому как даже сейчас многие не понимают всего там заложенного, пмсм). Если бы сейчас сделали внутреннюю память МК 8052 мегабайт в 16 и ОЗУ хотябы половину (фирма ADI, например), производительность 400 Mips давно уже не новость, с аналоговой переферией на борту - и цену в 3 бакса, я бы посмеялся тогда. rolleyes.gif Технологии то есть у них, думаю еще увидим падение некоторых "брендов".
Первый ПиСюк был 8-разрядный. Первый жесткий диск был 5 Мегабайт. Память была "полметра" роскошь. И как все там программное "летало"! rolleyes.gif
У меня на столе сейчас лежит SD карта - 32 гига. Скорость записи в нее 50 МГц что ли? Или даже выше? Ужас...

Цитата(Harbinger @ Mar 16 2011, 09:26) *
STM8 имеют адресное пространство 1 МБ (20 разрядов)


Это просто ТОЖЕ ампутированный вариант архитектуры. Типа 8051'
Использовать эти адреса вряд ли где можно будет.

Цитата(Harbinger @ Mar 16 2011, 09:26) *
Придётся, наверное, к QFN привыкать.


Корпуса типа UFQFPN32 паяются в ручную легко, кстати. Обычным китайским паяльником за 5 тыр.
А вот те что на плате стоят - типа LQFP32, вообще очень гемморойно. Даже под микроскопом. Только если трафаретом наносить паяльную пасту и феном припаивать. Тогда нужен станок для позицирования трафаретов и вообще это только в условиях производства оправдано.
Помните, я описание модуля блютуз выкладывал? Там контактные площадки формируются по периметру, путем фрезерования. На такую плату распаять этот МК, платочку стандартизовать - любой школьник сможет использовать.
В STM что ли письмо написать? Дык дебилом обзовут опять... Оне ж там типа умные все... biggrin.gif
Если бы денег заплатили - написал бы, а так пофиг.

Цитата(Harbinger @ Mar 16 2011, 09:26) *
Может, но не всякий. И программа-загрузчик на сайте есть.


Вот этого я не понимаю. В чем тут засада. Какой в этом умысел заложен? Думаете диверсия?
Надо бы разобраться с этим.
(Вчера платы мыл в кювете, полдня - спирта было 0.2 литра. Приходили мысли о странности проффессии ымбеддер. rolleyes.gif )



--------------------
Шел я лесом, песню пел (С)
Go to the top of the page
 
+Quote Post
topkin
сообщение Mar 16 2011, 10:47
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476



Не знаю в чем проблема, LQFP паяется на ура, во всяком случае у меня никогда проблем не было.
Go to the top of the page
 
+Quote Post
Transcend
сообщение Mar 16 2011, 12:22
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 5-03-11
Пользователь №: 63 418



Цитата(topkin @ Mar 16 2011, 13:47) *
Не знаю в чем проблема, LQFP паяется на ура, во всяком случае у меня никогда проблем не было.

А UFQFPN пробовали паять? rolleyes.gif

Цитата(Harbinger @ Mar 16 2011, 09:26) *
И программа-загрузчик на сайте есть. Flash_Loader_Demonstrator_v2.2.0. Если "flash is virgin", как в UM0560 выразились, прошьёт. Один раз.

Их поисковик не отдает этот докуиент. От какого это МК?



--------------------
Шел я лесом, песню пел (С)
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Mar 16 2011, 12:34
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
Если бы сейчас сделали внутреннюю память МК 8052 мегабайт в 16 и ОЗУ хотябы половину (фирма ADI, например), производительность 400 Mips давно уже не новость, с аналоговой переферией на борту - и цену в 3 бакса, я бы посмеялся тогда.
нет смысла - где-то читал что ядро CortexM0/M3 чуть ли не проще чем 8051. Смысла в мегабайтах памяти на восьмибитнике нет - узкая шина данных съест всю производительность, для большинства задач 4..8Кб хватает с запасом
Цитата
И особенно радует наличие ЦЕЛОГО программатора со SWIM технологией, хотя этот проц ВРОДЕБЫ штатно может грузится по UART.
SWIM в первую очередь для отладки, никто не мешает вам грузиться по UART. И 7..10$ для полноценного отладчика - сущие копейки.

Сообщение отредактировал ukpyr - Mar 16 2011, 12:36
Go to the top of the page
 
+Quote Post
Transcend
сообщение Mar 16 2011, 13:13
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 5-03-11
Пользователь №: 63 418



Цитата(ukpyr @ Mar 16 2011, 15:34) *
нет смысла - где-то читал что ядро CortexM0/M3 чуть ли не проще чем 8051. Смысла в мегабайтах памяти на восьмибитнике нет - узкая шина данных съест всю производительность, для большинства задач 4..8Кб хватает с запасом


Ну как же нет, я вот ставил Windows 64 вместо 32 разрядной - кроме увеличения почти в 2 раза обьема всех программ занимаемых на жестком диске других особенностей не заметил.
А тут какой выигрышь? Команды для 8 битника ведь тоже короче. АЦП и ЦАП больше 16 бит - редкость. Переферия у МК тоже в основном 8 разрядов.
Разрядность реально нужна для обработки графики и для работы с плавающей точкой в реальном времени. Вот там где этого нет - 8 разрядные вполне еще поживут.
Да и наращивать производительность дешевле, чем разрядность, пмсм.
Насчет простоты CortexM0/M3 - не пробовал. Надо будет тоже купить стартовый набор и попробовать... rolleyes.gif

Цитата(ukpyr @ Mar 16 2011, 15:34) *
SWIM в первую очередь для отладки, никто не мешает вам грузиться по UART. И 7..10$ для полноценного отладчика - сущие копейки.

Не знаю почему, но никогда не пользовался отладчиками.
Возможно потому что не пишу на ассемблере?
Хотя дело не в этом.
Для загрузки программы удобнее использовать UART.
А в том, что они используют специальный программатор, меркантильный подход фирмы виден, однако.
Имеют право конечно, но желание держать всех на крючке - заметно невооруженным глазом.


--------------------
Шел я лесом, песню пел (С)
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Mar 16 2011, 14:13
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



Цитата
АЦП и ЦАП больше 16 бит - редкость.
ну вот сами назвали случай где 8 бит не хватает. А пересчитать АЦП в реальную величину, вывести на индикацию - там и 16 бит мало.
Цитата
Да и наращивать производительность дешевле, чем разрядность, пмсм.
сейчас вряд ли, 8-битники уперлись в потолок производительности с выходом 1-тактных 8051 и АВР.
Цитата
Не знаю почему, но никогда не пользовался отладчиками.
если архитектура знакомая и все глюки известны (8051,АВР) - да, с новой и сложной типа СТМ8 (руки бы поотрывать писателям документации) удобнее один раз пройтись отладчиком чем пол-дня тыкаться вслепую.
Цитата
А в том, что они используют специальный программатор, меркантильный подход фирмы виден
протокол открыт, появление еще более дешевых программаторов - вопрос времени. С заливкой по UART и сейчас проблем нет.
Go to the top of the page
 
+Quote Post
topkin
сообщение Mar 16 2011, 14:52
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476



Цитата(Transcend @ Mar 16 2011, 15:22) *
А UFQFPN пробовали паять? rolleyes.gif


Их поисковик не отдает этот докуиент. От какого это МК?

Нет, не пробывал sm.gif

Ну а так, полностью подпишусь под словами товарища ukpyr
Go to the top of the page
 
+Quote Post
Transcend
сообщение Mar 16 2011, 17:35
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 5-03-11
Пользователь №: 63 418



Купил сегодня дисплей Nokia 6100 - решил глянуть цоколевку на разьем, а там чудеса какие то...
У всех "источников" разная цоколевка. biggrin.gif
Как то нужно выбрать правильную и подать напругу.

Сообщение отредактировал Transcend - Mar 16 2011, 17:36
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  F1.bmp ( 489.9 килобайт ) Кол-во скачиваний: 10
Прикрепленный файл  F1.bmp ( 489.9 килобайт ) Кол-во скачиваний: 11
 


--------------------
Шел я лесом, песню пел (С)
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 19:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01519 секунд с 7
ELECTRONIX ©2004-2016