Вам не хватает фришной версии с ограничением в 32кБ? по моему более чем достаточно :)
мне не хватает адекватности французов, которые высылают ключ, привязанный ко всему, к чему можно (даже венду не переставить), и делают это своими медлееенными лягушачьими лапками) а райсонанс, вроде, код похуже генерит. тащем-та, если правила форума запрещают, то есть же личка.
_________________ don't believe what u see,
don't believe what u read
Зарегистрирован: Чт сен 15, 2011 09:52:09 Сообщений: 2
Рейтинг сообщения:0
qwerky писал(а):
Получилось записать, непонятно в чем была проблема. Плюс отладчик задолбал - при перепрограммировании полностью стирает EEPROM, приходится каждый раз редактировать настройки. Теперь непонятки с watchdog. Настроил на 1 сек:
исправить запись в 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
если файл линкера пишите сами то прописать либу в него
Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.
исправить запись в 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
О, спасибо, оказывется ключевым моментом является прописать библиотеу libl0.sm8. Я смотрю, она там есть, оказывается еще там надо прописать. Спасибо, заработало. Еще, что бы запретить запись, надо сбросить флаг DUL в регистре FLASH_IAPSR.
Зарегистрирован: Вт мар 18, 2008 10:29:04 Сообщений: 43
Рейтинг сообщения:0
Я извеняюсь, что лезу с тупыми вопросами - прошу сильно не пинать. Написал свою первую программу для ST8S207K6 в среде ST Visual Develop с компиляцией из STM8Cosmic. Использовал только одну библиотеку STM8S207K.h Итог программы:
#include "STM8S207K.h"; //#include "stm8_interrupt_vector.c"; void CLK_Init (void) //Функция инициализации тактового генератора { CLK_ECKR|=(1<<0); //Разрешаем работу от внешнего кварца CLK_SWR = 0xB4; //Выбираем основное тактирование от внешенго кварца CLK_SWCR |= (1<<1); //Разрешаем переключение на основное тактирование CLK_CKDIVR = 0; //Делители частоты =1 CLK_PCKENR1 |= (1<<3); //Подключаем тактовый генератор к таймеру 4 } void GPIO_Init (void) //Функция настройки портов ввода вывода { PD_DDR |= (1<<0); //PD0 на выход PD_CR1 |= (1<<0); //PD0 Push pull PC_DDR = 0x0E; } void TIM1_Init (void) { TIM1_CR1=0x90;//предзагрузка, счет вниз, без остановки без прерываний 0X90 TIM1_CR2=0x00; TIM1_PSCRH=0X00; TIM1_PSCRL=0X00; TIM1_CCMR1=0x70; TIM1_CCMR2=0x70; TIM1_CCMR3=0x70; TIM1_CCER1=0x11; TIM1_CCER2=0x01; TIM1_ARRH=0X3E; TIM1_ARRL=0X80; TIM1_CCR1H=0X00; TIM1_CCR1L=0X0A; TIM1_CCR2H=0X00; TIM1_CCR2L=0X0A; TIM1_CCR3H=0X00; TIM1_CCR3L=0X0A; TIM1_CR1=0x91; //Разрешаем счет } main() { CLK_Init(); GPIO_Init(); TIM1_Init(); while(1) ; }
Проблемма в том, что запускаю програмую симуляцию - все без ошибок компелируется, программа начинает работать, но таймер просто тупа стоит - даже не знаю - может это глюк симулятора в программе.
Пробывал простейшую программу: #include "STM8S207K.h"; //#include "stm8_interrupt_vector.c"; void CLK_Init (void) //Функция инициализации тактового генератора { CLK_ECKR|=(1<<0); //Разрешаем работу от внешнего кварца CLK_SWR = 0xB4; //Выбираем основное тактирование от внешенго кварца CLK_SWCR |= (1<<1); //Разрешаем переключение на основное тактирование CLK_CKDIVR = 0; //Делители частоты =1 CLK_PCKENR1 |= (1<<3); //Подключаем тактовый генератор к таймеру 4 } void TIM4_Init (void) { TIM4_PSCR = 0x00; //Максимальный коэффициент деления 128 частота 125кГц TIM4_ARR = 0xD0; //Значение перезагрузки 125000/208 = 601 Гц TIM4_CR1 |= (1<<0); //Запускаем счет } //Прописываем обработчик прерываний для таймера 4
main() { CLK_Init(); TIM4_Init(); while(1) ; }
Таймер 4 стоит и все тут!. Подскажите в чем косяк?
enableInterrupts(); спасёт отца русской демократии) может, ещё и в регистры таймеров что-то не то кладёте, но нет сил рассматривать ваши магические числа. надо юзать константы.
и не "Я извеняюсь", а "Извините")
_________________ don't believe what u see,
don't believe what u read
Зарегистрирован: Вт мар 18, 2008 10:29:04 Сообщений: 43
Рейтинг сообщения:0
berrymorr писал(а):
jtlex писал(а):
Подскажите в чем косяк?
enableInterrupts(); спасёт отца русской демократии) может, ещё и в регистры таймеров что-то не то кладёте, но нет сил рассматривать ваши магические числа. надо юзать константы.
Может тогда подсткажите как просто запустить таймер - любой. Можно даже не в програмном коде а по порядку что зачем делать.
если раскоментировать #include "stm8_interrupt_vector.c, то ругается "#error clnk Debug\l-bio.lkf:67 Debug\stm8_interrupt_vector.o: symbol __vectab multiply defined (Debug\main.o)" - это второй вопрос. первый - запустить для меня таймер.
Возможно в программной симуляции нет внешнего кварца, либо просто не настроена. Попробуй убрать CLK_Init(). И процедура переключения тактирования какая-то странная (см. даташит RM0016). А вот это:
Цитата:
CLK_PCKENR1 |= (1<<3); //Подключаем тактовый генератор к таймеру 4
вообще подает тактирование на UART Да и излишне это, так как в STM8S после сброса все биты в регистрах CLK_PCKENRx установлены в 1.
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Зарегистрирован: Вт мар 18, 2008 10:29:04 Сообщений: 43
Рейтинг сообщения:0
Цитата:
Возможно в программной симуляции нет внешнего кварца, либо просто не настроена
как тогда программа выполняется? она же проходит все настройки - или от внутреннего RC таймер просто не работает?
Цитата:
Попробуй убрать CLK_Init()
я ее ввел, чтоб заведомо быть уверенным, что регистры сброшены на значения по умолчанию - с ней или без нее таймер не работает
Цитата:
CLK_PCKENR1 |= (1<<3); //Подключаем тактовый генератор к таймеру 4
убрал - результат тот же
Взял программу в начале форума запустил ее - откомпелировалась. догнал эмулятором до таймера - инициализации, а потом ео запуска - таймер стоит. Походу программа. А Вообще инициализация в правельном порядке? И от внутреннего RC таймер работает?
А вообще есть программы типа протэуса (В протэусе таких микроконтроллеров нет), где можно НЕХ файлик зашить и проэмулировать
В программном эмуляторе может быть все что угодно. В железе и ядро и периферия тактируются все вместе от любого из источников (HSE, HSI, LSI), только предделители раздельные на ядро и периферию. Вообще в пошаговом режиме таймер тоже работает пошагово. поэтому для проверки нужно проследить, чтобы предделитель был равен единице (0 в регистре TIM4_PSCR), в НЕпошаговом режиме отображение регистров в отладчике не обновляется.
Вышесказанное справедливо для "железного" отладчика, программным эмулятором мне пользоваться не приходилось.
У меня переключение на кварц реализовано так (т.н. "ручное" переключение):
Код:
CLK_SWR=0xB4; while(i++) if(CLK_SWCR&(1<<3)) { CLK_SWCR&=~(1<<3); // Сброс флага SWIF CLK_SWCR|=(1<<1); // Выполняем переключение на кварцевый генератор i=1; while(CLK_SWCR&1) if(!(i++)) {CLK_SWCR&=0xFE; break;} //По таймауту очищаем флаг SWBSY (отмена переключения) if(!(CLK_SWCR&1)) CLK_CKDIVR=0; // тактовая CPU и периферии 8МГц от кварца break; }
А для инициализации таймера достаточно записать значение в регистр перезагрузки TIMx_ARR и установить в единицу бит CEN в TIMx_CR
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Может тогда подсткажите как просто запустить таймер - любой. Можно даже не в програмном коде а по порядку что зачем делать.
если раскоментировать #include "stm8_interrupt_vector.c, то ругается "#error clnk Debug\l-bio.lkf:67 Debug\stm8_interrupt_vector.o: symbol __vectab multiply defined (Debug\main.o)" - это второй вопрос. первый - запустить для меня таймер.
return(0) космику не нужен, насколько я знаю - это чисто райзонансовская придурь) clk_init и port_init вы сами напишете. TIM1 работает в полностью автоматическом режиме с автозагрузкой без прерываний - дрыгает ногой TIM1_CH1, TIM2 - в полностью ручном одноимпульсном режиме с прерыванием (запустили, прервался и тут же заглох).
чтобы разрешить TIM1 дрыгать ногами: TIM1_BKR|=TIM1_BKR_MOE; //enable pwmoutputs чтобы запретить: TIM1_BKR&=(uint8_t)(~TIM1_BKR_MOE); //disable pwmoutputs чтобы переключить: TIM1_BKR^=TIM1_BKR_MOE; //toggle pwmoutputs
по второму вопросу могу, во-первых, выразить своё невыразимое удивление по поводу того, что вы директивы с комментариями путаете, во-вторых, посоветовать почитать, наконец, книжку по C. для вот самых-самых начинающих, разделы про синтаксис. конкретно по данному случаю - символ "sharp" (#) используется в C не для комментариев, а для таких хитрых слов как define, include и пр. т.е., если вы хотите сделать дефайн или подключить файл, то вы обязаны поставить этот символ перед соответствующим словом. однострочные комментарии (до конца строки) в C оформляются двойным бэкслешем (//), многострочные так: /*текст комментария*/.
но только не надо считать меня красноглазым насильником - я вообще-то с пасквиля начинал, и больше всего его люблю)
вдогонку вам инициализация TIM4 на 1 миллисекунду (@16MHz) с прерываниями и авторелоадом:
Зарегистрирован: Вт мар 18, 2008 10:29:04 Сообщений: 43
Рейтинг сообщения:0
Спасибо Всем откликнувшимся - буду пока игнорировать "сон" таймера - буду писать дальше и ждать когда придет USB отладчик berrymorr по поводу я имел в виду:
команда #include "stm8_interrupt_vector.c" закоментирована, то есть не выполняется - компилятор не ругается , а если убрать // - разрешаем выполнение этой строки -подключение модуля "stm8_interrupt_vector.c" : #include "STM8S207K.h"; #include "stm8_interrupt_vector.c"; void CLK_Init (void) //Функция инициализации тактового генератора
Компилятор ругается: "#error clnk Debug\l-bio.lkf:67 Debug\stm8_interrupt_vector.o: symbol __vectab multiply defined (Debug\main.o)" Может кто подскажет чего ему нехватает - непойму почему он ругается вообще на main.o? Там и ругаться то не на что. Вообще я, честно говоря первый раз работаю с STM - до этого я сидел на Пиках и Атмелах - там иначе все реализовывал.
листинг stm8_interrupt_vector.c, где смущает, что 0x82 везде: /* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices * Copyright (c) 2007 STMicroelectronics */
@far @interrupt void NonHandledInterrupt (void) { /* in order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction */ return; }
Зарегистрирован: Вт мар 18, 2008 10:29:04 Сообщений: 43
Рейтинг сообщения:0
Цитата:
чтобы разрешить TIM1 дрыгать ногами: TIM1_BKR|=TIM1_BKR_MOE; //enable pwmoutputs чтобы запретить: TIM1_BKR&=(uint8_t)(~TIM1_BKR_MOE); //disable pwmoutputs чтобы переключить: TIM1_BKR^=TIM1_BKR_MOE; //toggle pwmoutputs
Вопрос такой: если я хочу использовать выходы порта PC1...PC3 как выход ШИМ каналов таймера 1 для одновременного использования настройки такие?: TIM1_BKR|=TIM1_BKR_MOE | TIM1_BKR_AOE; //enable pwmoutputs TIM1_CCER1|=TIM1_CCER1_CC2E | TIM1_CCER1_CC1E; TIM1_CCER2|=TIM1_CCER2_CC3E; TIM1_CCMR1=0x60; TIM1_CCMR2=0x60; TIM1_CCMR3=0x60;
Зарегистрирован: Вт сен 20, 2011 14:51:26 Сообщений: 21
Рейтинг сообщения:0
Добрый день.
Имею платку stm8s-discovery, поставил IAR 1.3. Столкнулся со странной проблемой. Пункт меню "Project-Downoad and Debug" работает, а просто залить прошивку без дебага не получается, т.к. Project-Downoad-Download Active Application не активен
Об ассемблере STM8 написано в руководстве пользователя UM0144 с сайта www.st.com Описанные там директивы ассемблера справедливы для STVD. У Космика и Резонанса они немного отличаются. Транслятор Ассемблера у st несколько убогий. У космика удобнее и понятнее (лично для меня).
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения