Перейти к содержанию
    

Добрый вечер! Вот суть проблемы...... Работаю в компиляторе 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)

{

};

}

 

Все компилируется без ошибок, но в обработчик прерывания не заходит! Что я неправильно делаю??? Помогите пожалуйста!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у меня тоже есть такая платочка.

Купил вчера к ней шнурок мини-USB, воткнул в комп, питание появилось, светодиодики заморгали, на индикаторе пишет не русским текстом, короче - все работает.

Теперь надо бы и мне на ИАРе тоже какой-нибудь "Демо_проектик" откомпилировать и запустить. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблему решил, все работает!!! Не досмотрел файлик 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)

{

};

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

asm("rim"); // Enable interrupt

Вместо этого лучше использовать "встроенную" функцию __enable_interrupt. Или нет?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вместо этого лучше использовать "встроенную" функцию __enable_interrupt. Или нет?

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

Изменено пользователем Kalyan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Это вы зря про mcs-51 так сказали. Не понимают многие эмбеддеры как можно использовать 51 ядро. Ну да это оффтоп конечно.

STM8L против современного МК с ядром 8052 - как запорожец против порше, хотя габариты близки, теже четыре колеса и движок ТОЖЕ сзади.... :laugh:

Ну сразу пример захотите ведь, я вот на ЛЮБОМ МК серии 8052 смогу 2 мегабайта (и более) памяти програм и ОЗУ получить, в адресном пространстве МК - а кто сможет на любом другом восьмиразрядном МК так сделать? :rolleyes: И есть 8052 у которых был 400 MIPS и более, не помню марку.

Смешным мне кажется четыре генератора тактовых сигналов - легко ведь сделать PLL от часового кварцевого генератора. А конденсаторы вокруг резонаторов - уже ни одна приличная фирма не ставит.

Вобщем STM8L это набор для того что бы я получал удовольствие по мере моего освоения "этого комплекта" - как много узнаю "нового" каждый день.

:biggrin:

И особенно радует наличие ЦЕЛОГО программатора со SWIM технологией, хотя этот проц ВРОДЕБЫ штатно может грузится по UART.

И выпускают ТОЛЬКО в корпусах которые практически очень трудно запаять вручную.

Кстати, можно наладить производство переходника - печатной платы с выводами под DIP40 (или квадратную), на которую будет распаен STM8 пятивольтовой серии. Для школяров-студиусов с их утюжной технологией изготовления печатных плат + шнурок USB-UART + программа загрузчик по СОМ порту (эмулированного через USB), это просто клондайк будет.

Изменено пользователем Transcend

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 мегабайта на 8052 - это очень здорово надо поизвращаться при ширине адресной шины в 16 разрядов... :) К тому же не "на ЛЮБОМ" - у мелких 51 внешних шин вообще нет.

STM8 имеют адресное пространство 1 МБ (20 разрядов) на всё про всё, как для 8-битника - вполне нормально.

Корпусировка, да, неудобная. SSOP-20 слишком большой :), а в 14...16-выводных выпустить не удосужились. Придётся, наверное, к QFN привыкать.

ВРОДЕБЫ штатно может грузится по UART.

Может, но не всякий. И программа-загрузчик на сайте есть. Flash_Loader_Demonstrator_v2.2.0. Если "flash is virgin", как в UM0560 выразились, прошьёт. Один раз. :(

Что озадачило, так то, что для всякого периферийного узла тактирование нужно включать отдельно, помимо активации самого узла. И в RM эти моменты находятся очень далеко друг от друга.

Из плюсов - дешевизна и небольшое потребление.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 мегабайта на 8052 - это очень здорово надо поизвращаться при ширине адресной шины в 16 разрядов... :) К тому же не "на ЛЮБОМ" - у мелких 51 внешних шин вообще нет.

Так то да...

НО, 8051 от 8052 должен же чем то отличаться, кроме номера.

Я так думаю, что в стандартном исполнении у 8052 должны быть в наличии 4 порта по 8 разрядов - если их ампутировали, то это уже даже не 8051, а 8051'

А то, что адресное пространство недостаточное, дык придумали банки адресов (страницы) там по 64К адресов может быть - от 16 (до 256 теоретически - а это 16 Мбайт). Я этим пользовался еще когда ДОС был в ходу (страшно сказать как давно это было). Были компиляторы языка Си фирмы ИАР под досом (где то уже говорил про это :rolleyes: ). Там использование памяти на "Банках" было широко, через функцию - монитор. Операционные системы CP/M требовали память.

Но архитектура 8052 не устарела, (потому как даже сейчас многие не понимают всего там заложенного, пмсм). Если бы сейчас сделали внутреннюю память МК 8052 мегабайт в 16 и ОЗУ хотябы половину (фирма ADI, например), производительность 400 Mips давно уже не новость, с аналоговой переферией на борту - и цену в 3 бакса, я бы посмеялся тогда. :rolleyes: Технологии то есть у них, думаю еще увидим падение некоторых "брендов".

Первый ПиСюк был 8-разрядный. Первый жесткий диск был 5 Мегабайт. Память была "полметра" роскошь. И как все там программное "летало"! :rolleyes:

У меня на столе сейчас лежит SD карта - 32 гига. Скорость записи в нее 50 МГц что ли? Или даже выше? Ужас...

 

STM8 имеют адресное пространство 1 МБ (20 разрядов)

 

Это просто ТОЖЕ ампутированный вариант архитектуры. Типа 8051'

Использовать эти адреса вряд ли где можно будет.

 

Придётся, наверное, к QFN привыкать.

 

Корпуса типа UFQFPN32 паяются в ручную легко, кстати. Обычным китайским паяльником за 5 тыр.

А вот те что на плате стоят - типа LQFP32, вообще очень гемморойно. Даже под микроскопом. Только если трафаретом наносить паяльную пасту и феном припаивать. Тогда нужен станок для позицирования трафаретов и вообще это только в условиях производства оправдано.

Помните, я описание модуля блютуз выкладывал? Там контактные площадки формируются по периметру, путем фрезерования. На такую плату распаять этот МК, платочку стандартизовать - любой школьник сможет использовать.

В STM что ли письмо написать? Дык дебилом обзовут опять... Оне ж там типа умные все... :biggrin:

Если бы денег заплатили - написал бы, а так пофиг.

 

Может, но не всякий. И программа-загрузчик на сайте есть.

 

Вот этого я не понимаю. В чем тут засада. Какой в этом умысел заложен? Думаете диверсия?

Надо бы разобраться с этим.

(Вчера платы мыл в кювете, полдня - спирта было 0.2 литра. Приходили мысли о странности проффессии ымбеддер. :rolleyes: )

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю в чем проблема, LQFP паяется на ура, во всяком случае у меня никогда проблем не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю в чем проблема, LQFP паяется на ура, во всяком случае у меня никогда проблем не было.

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

 

И программа-загрузчик на сайте есть. Flash_Loader_Demonstrator_v2.2.0. Если "flash is virgin", как в UM0560 выразились, прошьёт. Один раз.

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нет смысла - где-то читал что ядро CortexM0/M3 чуть ли не проще чем 8051. Смысла в мегабайтах памяти на восьмибитнике нет - узкая шина данных съест всю производительность, для большинства задач 4..8Кб хватает с запасом

 

Ну как же нет, я вот ставил Windows 64 вместо 32 разрядной - кроме увеличения почти в 2 раза обьема всех программ занимаемых на жестком диске других особенностей не заметил.

А тут какой выигрышь? Команды для 8 битника ведь тоже короче. АЦП и ЦАП больше 16 бит - редкость. Переферия у МК тоже в основном 8 разрядов.

Разрядность реально нужна для обработки графики и для работы с плавающей точкой в реальном времени. Вот там где этого нет - 8 разрядные вполне еще поживут.

Да и наращивать производительность дешевле, чем разрядность, пмсм.

Насчет простоты CortexM0/M3 - не пробовал. Надо будет тоже купить стартовый набор и попробовать... :rolleyes:

 

SWIM в первую очередь для отладки, никто не мешает вам грузиться по UART. И 7..10$ для полноценного отладчика - сущие копейки.

Не знаю почему, но никогда не пользовался отладчиками.

Возможно потому что не пишу на ассемблере?

Хотя дело не в этом.

Для загрузки программы удобнее использовать UART.

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

Имеют право конечно, но желание держать всех на крючке - заметно невооруженным глазом.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

АЦП и ЦАП больше 16 бит - редкость.
ну вот сами назвали случай где 8 бит не хватает. А пересчитать АЦП в реальную величину, вывести на индикацию - там и 16 бит мало.
Да и наращивать производительность дешевле, чем разрядность, пмсм.
сейчас вряд ли, 8-битники уперлись в потолок производительности с выходом 1-тактных 8051 и АВР.
Не знаю почему, но никогда не пользовался отладчиками.
если архитектура знакомая и все глюки известны (8051,АВР) - да, с новой и сложной типа СТМ8 (руки бы поотрывать писателям документации) удобнее один раз пройтись отладчиком чем пол-дня тыкаться вслепую.
А в том, что они используют специальный программатор, меркантильный подход фирмы виден
протокол открыт, появление еще более дешевых программаторов - вопрос времени. С заливкой по UART и сейчас проблем нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

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

Нет, не пробывал :)

 

Ну а так, полностью подпишусь под словами товарища ukpyr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Купил сегодня дисплей Nokia 6100 - решил глянуть цоколевку на разьем, а там чудеса какие то...

У всех "источников" разная цоколевка. :biggrin:

Как то нужно выбрать правильную и подать напругу.

F1.bmp

post-63418-1300296869_thumb.png

F1.bmp

Изменено пользователем Transcend

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...