Например TDA7294

Форум РадиоКот • Просмотр темы - Программирование STM8
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс апр 30, 2017 19:42:10



Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 1423 ]  На страницу Пред.  1 ... 67, 68, 69, 70, 71, 72  След.
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс дек 11, 2016 21:47:56 
Друг Кота

Карма: 34
Зарегистрирован: Пт сен 13, 2013 14:11:31
Сообщений: 5595
Рейтинг сообщения: 0
Так RM0016 же. Кой-какие нюансы по регистрам еще в даташите на сам камень могут быть.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс дек 11, 2016 22:14:12 
Друг Кота
Аватар пользователя

Карма: 37
Зарегистрирован: Вс июл 26, 2009 12:27:59
Сообщений: 4253
Рейтинг сообщения: 0
Там что то совсем не густо, думал что где то есть подробнее, с примерами.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс дек 11, 2016 22:24:42 
Мучитель микросхем
Аватар пользователя

Карма: 6
Зарегистрирован: Вс ноя 01, 2015 14:13:49
Сообщений: 433
Рейтинг сообщения: 1
После кодинга СТМ32 это, как минимум, звучит странно. При полном непонимании можно брать сниппетсы от СТМ32Ф0, для понимания логики работы периферии, с учётом различия регистров конечно.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс дек 11, 2016 22:35:57 
Друг Кота

Карма: 34
Зарегистрирован: Пт сен 13, 2013 14:11:31
Сообщений: 5595
Рейтинг сообщения: 0
Некий набор примеров можно найти в "STM8S optimized examples package". Они, правда, уже довольно древние и могут иметь проблемы с компиляцией IAR-ом, но в целом по ним можно посмотреть, как управляться с периферией без SPL.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс дек 11, 2016 23:55:48 
Вымогатель припоя
Аватар пользователя

Карма: 22
Зарегистрирован: Чт окт 06, 2016 22:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 3
Chettuser писал(а):
Ткните носом в документ с описанием регистров STM8?

Если без примеров, то только в Reference Manual (RM0016). Но без примеров очень тяжело, почему я и использую SPL в качестве документации, о чем и писал выше.

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн дек 12, 2016 09:44:47 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 25
Зарегистрирован: Сб сен 10, 2011 18:46:25
Сообщений: 2214
Рейтинг сообщения: 1
ptr128 писал(а):
Есть еще кто, столь же уверенный, что это не бага в SPL? :)))

на всякий проверил на большом брате (TDM-GCC-32):
Код:
#include <stdio.h>
#include <iostream>
#include <conio.h>

uint8_t tim2sr2;

/** TIM2 Flags */
typedef enum
{
    TIM2_FLAG_UPDATE                   = ((uint16_t)0x0001),
    TIM2_FLAG_CC1                      = ((uint16_t)0x0002),
    TIM2_FLAG_CC2                      = ((uint16_t)0x0004),
    TIM2_FLAG_CC3                      = ((uint16_t)0x0008),
    TIM2_FLAG_CC1OF                    = ((uint16_t)0x0200),
    TIM2_FLAG_CC2OF                    = ((uint16_t)0x0400),
    TIM2_FLAG_CC3OF                    = ((uint16_t)0x0800)
} TIM2_FLAG_TypeDef;

void TIM2_ClearFlag(TIM2_FLAG_TypeDef TIM2_FLAG)
{
    tim2sr2 = (uint8_t)(~((uint8_t)((uint8_t)TIM2_FLAG >> 8)));
    printf("TIM2->SR2 = 0x%X \n", tim2sr2);
    tim2sr2  = (uint8_t)(~((uint8_t)(TIM2_FLAG >> 8)));
    printf("TIM2->SR2 = 0x%X", tim2sr2);      
}

int main(void)
{
    TIM2_ClearFlag(TIM2_FLAG_CC2OF);
    getch();
    return 0;
}

результат:
TIM2->SR2 = 0xFF
TIM2->SR2 = 0xFB


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пн дек 12, 2016 23:16:26 
Друг Кота

Карма: 34
Зарегистрирован: Пт сен 13, 2013 14:11:31
Сообщений: 5595
Рейтинг сообщения: 4
Сравнение компиляторов для STM8: A comparison of C compilers targeting the STM8.

Скорость выполнения (больше лучше):

Изображение

Размер кода (меньше лучше):

Изображение


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт дек 13, 2016 00:17:44 
Вымогатель припоя
Аватар пользователя

Карма: 22
Зарегистрирован: Чт окт 06, 2016 22:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 3
Все течет, все изменяется:
Изображение
https://community.st.com/thread/8847

_________________
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вт дек 13, 2016 00:47:36 
Мучитель микросхем
Аватар пользователя

Карма: 6
Зарегистрирован: Вс ноя 01, 2015 14:13:49
Сообщений: 433
Рейтинг сообщения: 0
То что ИАР один из лучших для СТМ8 почему-то и не удивляет. Об этом уже писано переписано. Тем более что у иаровцев еще есть над чем работать в плане оптимизации.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Вс янв 08, 2017 14:34:55 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 7
Зарегистрирован: Пн июл 28, 2008 23:12:01
Сообщений: 2419
Рейтинг сообщения: 0
scorpi_0n писал(а):
Тем более что у иаровцев еще есть над чем работать в плане оптимизации.

А так же любителям асма будет интересно знать ,что инлайн асм у IAR никакой...


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Ср янв 11, 2017 14:27:44 
Родился

Зарегистрирован: Ср окт 14, 2015 13:16:40
Сообщений: 10
Рейтинг сообщения: 0
Вчера решил попробовать программный USB на stm8s103f3p примеры нашел самодвигающейся мыши. сколько не пытался девайс прошитый даже не опознается сниффером. pc6 D-/pc7 D+. Кто-нибудь пробовал эти примеры какие выложены в сети товарища Железнякова?


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Ср фев 01, 2017 13:39:03 
Родился

Зарегистрирован: Пн июл 20, 2015 11:40:55
Сообщений: 1
Рейтинг сообщения: 0
Всем доброго времени суток. Вот начал постигать тайны микроконтроллеров. Приобрел себе STM8S-DISCOVERY. По интернет урокам, статейкам, гайдам сумел засветить светодиод и заставить его мигать. Дальше захотел сделать, что бы он светился при нажатии кнопки. И тут я застрял. Она сенсорная и никак не могу понять, как она общается с МК. Уже 4й день роюсь в инетах в поисках решения. Пролистал ПДФки с оф. сайта, форумы, но без примера не пойму. Работаю в IAR, язык С. Прошу помочь в этом деле. Было бы хорошо увидеть пример кода с комментариями :)


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт фев 02, 2017 00:33:39 
Опытный кот
Аватар пользователя

Карма: 7
Зарегистрирован: Ср фев 22, 2012 02:25:21
Сообщений: 871
Рейтинг сообщения: 0
Привет.
Написал свой нехилый криптозагрузчик, потратил кучу времени, и в конце с ужасом обнаружил, что таблица прерываний не передвигается..... я то думал что с помощью служебных регистров она как то привязывается, т.е. работает загрузчик - работает основная таблица, загрузилась прошивка - активировал работу с другой таблицей... Оказалось нет, она всегда расположена в начале FLASH...
Даже не знаю теперь что делать...

1 - если бы в моем буте прерываний не использовалось, можно было бы сразу там указать адреса нового места... Но у меня загрузчик использует несколько прерываний, т.е просто так туда не впишешь перенаправления на таблицу прерываний пользовательской прошивки...

2 - переносить загрузчик вверх тоже не хочу, т.к. хочу использовать защиту от записи загрузочной области...

3 - Как думаете, как быть???


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Сб фев 04, 2017 15:59:20 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пт окт 03, 2014 15:50:06
Сообщений: 97
Рейтинг сообщения: 0
aerokostia писал(а):
И тут я застрял. Она сенсорная и никак не могу понять, как она общается с МК.
Она работает так же, как и любая другая кнопка. Меняет логический уровень на пине - высокий (лог.1) или низкий (лог.0). Нужно просто считать уровень на пине микроконтроллера.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт фев 16, 2017 12:25:38 
Говорящий с текстолитом
Аватар пользователя

Карма: 21
Зарегистрирован: Сб май 14, 2011 22:16:04
Сообщений: 1639
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
МК ST8S103F3.

Пробую запустить какой-нибудь PWM на таймере 1, канал 4. Или хотя бы вообще что-нибудь запустить на Т1.

Вот один из вариантов кода. Среда IAR для STM8. То что строки закомментированы, не обращайте внимание. Просто пробовал разные варианты и с копипастил из кода текущую.
Код:
//Настройка таймера 1
       //настройка порта
        PC_DDR=MASK_PC_DDR_DDR4; //Pc4 выход
        PC_CR1=MASK_PC_CR1_C14;  //пушпул
        PC_CR2=MASK_PC_CR2_C24;  //10MHz
        //PC_ODR^=MASK_PC_ODR_ODR4;
     
       
       CLK_PCKENR1|=1<<7; //включение тактирования таймера 1       
       
       //TIM1_PSCRL=(160-1)&0x00FF;       //предделитель так что таймер досчитает до 1000 за 10мс
       //TIM1_PSCRH=(160-1)>>8;
       
       //TIM1_ARRL=(255)&0x00FF;          //считать будем максимум до тысячи
       //TIM1_ARRH=(255)>>8;
       
       //TIM1_CCR4L=(128)&0x00FF;          //Регистр сравнения
       //TIM1_CCR4H=(128)>>8;
       
       TIM1_CCER2=MASK_TIM1_CCER2_CC4E | MASK_TIM1_CCER2_CC4P;// CH4 таймера 1 как выход и полярность
       
       TIM1_CCMR4=( 0x6<<4) | MASK_TIM1_CCMR4_OC4PE;//PWM моде и буферное обновление регистра сравнения.
       
       //TIM1_CR1=//MASK_TIM1_CR1_ARPE;// | MASK_TIM1_CR1_DIR;// | MASK_TIM1_CR1_OPM;      //буферное обновление максимума счета и однократный счет
       TIM1_CR2=1;//Bit 0CCPC: Capture/compare preloaded control
       
       //TIM1_BKR =0x80; // OC and OCN outputs are enabled if their respective enable bits are set (CC/E in Tim1_CCERi)
       
       //TIM1_RCR=0xFF;
       
       TIM1_IER=1;
       
       TIM1_CR1|=MASK_TIM1_CR1_CEN; //запускаем таймер


ШИМ не работает. Больше всего смущает что не только ШИМ не работает, а что не меняется коэффициенты деления и счетчик считает всегда до "верха" (хотя в регистры PSCR и ARR все пишется) . Специально включил прерывание по переполнению чтобы там дергать ногой, чтобы отследить изменения частоты. Все время частота одна, не важно какой предделитель и какой ARR.

С таймером 2 ШИМ не пробовал, но предделитель работает и ARR тоже. Что-то у меня похоже лыжи не едут с TIM1.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт фев 16, 2017 13:38:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 25
Зарегистрирован: Сб сен 10, 2011 18:46:25
Сообщений: 2214
Рейтинг сообщения: 0
Цитата:
//TIM1_ARRL=(255)&0x00FF; //считать будем максимум до тысячи
//TIM1_ARRH=(255)>>8;
....

Регистры вроде 8-мибитные?
Может пригодится настройка шим для 1 канала для S003, там еще альтернативную функцию надо было включить для PC3 в OPTION BYTE
Код:
void TIM1_init(void) // Настройка таймера 1
{
//PWM output signal frequency = TIM1 counter clock/(TIM1_ARR + 1)
//Channel x duty cycle = [TIM1_CCRxx/(TIM1_ARR + 1)] * 100 
    TIM1->PSCRH = 0x00;
    TIM1->PSCRL = 0x00;
    TIM1->ARRH = 0x0F;
    TIM1->ARRL = 0x9F;
    TIM1->CCMR1 |= (uint8_t)0x60; //110: PWM mode 1 - In up-counting, channel 1 is active as long as TIM1_CNT < TIM1_CCR1,
    TIM1->CCER1 |= TIM1_CCER1_CC1E; //CH1 compare Enable
    TIM1->CCR1H = 0x07;
    TIM1->CCR1L = 0xD0;
    TIM1->CR1 |= TIM1_CR1_CEN; 
    TIM1->BKR |= TIM1_BKR_MOE; // OC and OCN outputs are enabled if their respective enable bits are set (CC/E in Tim1_CCERi)   
}


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт фев 16, 2017 15:35:00 
Говорящий с текстолитом
Аватар пользователя

Карма: 21
Зарегистрирован: Сб май 14, 2011 22:16:04
Сообщений: 1639
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
oleg110592 писал(а):
Регистры вроде 8-мибитные?
Да там раньше другие числа стояли, значительно больше 255, расчетные. Это сейчас всякие пробыне варианты, не думал что застряну в лыжах на асфальте на таком вопросе.

В оптион байтах вроде только ремапятся альтернативные функции. Да бог с ними, сам таймер то как то криво работает, частота не делится не растет кокос и не ограничивается верх счета. И другого МК нет затестить.

Добавлено after 1 hour 25 minutes 18 seconds:
Завел я и таймер 1 и PWM. Глючил и я и IAR. Ошибка была в том, что я записывал "16 битные" регистры ногами младшим вперед. А IAR скотина такая, почему то в железной отладке отображал значения регистров верно . Кроме того, поменяв местами старший со младшим байты при записи эффекта никакого не давало. Ладно поглядел дизассемблер, компилятор насрал на то что я поменял местами регистры, и записывал в том же неправильном порядке, пока я проект не очистил. Видать такая оптимизация.

В общем как всегда, затык из-за какой-то "мелочи".

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт фев 16, 2017 15:46:30 
При использовании таймеров в режиме PWM в STM8 порты не нужно настраивать. В примерах STDPL есть.



в регистры можно хоть 32 битные значения указывать, просто младшие разряды возьмутся.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Чт фев 16, 2017 16:43:26 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 25
Зарегистрирован: Сб сен 10, 2011 18:46:25
Сообщений: 2214
Рейтинг сообщения: 0
в примерах паранойя приведения типов, может не зря:
Код:
...
      /* Set the Prescaler value */
    TIM2->PSCR = (uint8_t)(0);
    /* Set the Autoreload value */
    TIM2->ARRH = (uint8_t)(0);
    TIM2->ARRL = (uint8_t)(0xFF);
    /* Reset the Output Compare Bits  & Set the Ouput Compare Mode */
    TIM2->CCMR1 = (uint8_t)((uint8_t)(TIM2->CCMR1 & (uint8_t)(~TIM2_CCMR_OCM)) |
                            (uint8_t)TIM2_OCMODE_PWM1);
...


Вернуться наверх
 Профиль  
 
Не в сети
 Заголовок сообщения: Re: Программирование STM8
СообщениеДобавлено: Пт фев 17, 2017 21:53:05 
Родился

Карма: 1
Зарегистрирован: Вт ноя 02, 2010 21:21:53
Сообщений: 18
Рейтинг сообщения: 0
Немогу найти примеров перевода МК в режим сна(halt mode). МК - stm8s103. Может кто подскажет?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 1423 ]  На страницу Пред.  1 ... 67, 68, 69, 70, 71, 72  След.



Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y