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

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

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

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

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

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


 
Опции темы
Непрочитано 25.04.2013, 10:34  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: FAQ по STM8

Да есть тут один хедер под задержки. Правда, при 16МГц реальных пришлось выставить 22МГц. Иначе врет прилично. Но вот как-то так оно и работает:
Код:
#ifndef DELAY_H
    #define DELAY_H
    #define F_CPU 22000000

    #include "stm8s.h"
    #ifndef F_CPU
        #error "F_CPU not defined!"
    #endif
    
    
    #define US(x) \
    (unsigned int)((((x*(F_CPU/1000000.0))‹=6)*6 + ((x*(F_CPU/1000000.0))›6)*(x*(F_CPU/1000000.0)) - 2)/4)
    
    #define MS_SHORT_MAX  ((262140000UL/F_CPU))
    
 #pragma inline //=forced
 void delay(uint16_t __cycle_count)
    {
        __asm("loop:  \n"
              "decw x \n"
              "jrne loop \n"
               " nop \n");
    }
    
    #define delay_us(x) delay(US(x))
    
     #pragma inline =forced
 void delay_ms(uint16_t ms)
    {
        if(ms ‹ MS_SHORT_MAX)
            {
                delay(US((uint16_t)ms*1000));
            }
            else
            {
                while(ms--) delay(US(999));
            }
    }


#endif  // #ifndef DELAY_H
Реклама:
Easyrider83 вне форума  
Непрочитано 25.04.2013, 10:43  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FAQ по STM8

На коротких и "точных" задержках nop'ами, хорошо бы еще прерывания запрещать, или они будут, ну, оочень разными, от случая к случаю.
Кстати - может потому и пришлось писать 22МГц вместо 16-ти?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 25.04.2013, 11:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: FAQ по STM8

При разрешенных прерываниях 1-Wire не работает вообще.
Easyrider83 вне форума  
Непрочитано 25.04.2013, 11:22  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: FAQ по STM8

Я не про 1W, а про всё вообще, или речь только о 22МГц-ах?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 25.04.2013, 11:24  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: FAQ по STM8

Не могу сказать. Запускал 1-Wire, отлаживал по USBee. В других случаях мне что 10мкс, что 15 разницы не было.
Easyrider83 вне форума  
Непрочитано 25.04.2013, 11:55  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от Easyrider83 Посмотреть сообщение
Да есть тут один хедер под задержки.
Ну давай теперь один и тот хэдер а все страницы копипастить ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 25.04.2013, 12:12  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: FAQ по STM8

По таймеру немного лучшее получается:
Код:
    // Настройка 
    TIM4_PSCR=0x04; // Пределитель на 2^4=16,  16000000/16 = 1000000 Hz
    TIM4_CR1_bit.OPM=1; // Остановка счетчика по переполнению
......
    // Код
    TIM4_CNTR=256-90; // 90 us
    TIM4_CR1_bit.CEN=1; // Разрешение счета
    while(TIM4_CR1_bit.CEN); // Ожидание остановки счетчика
oleg110592 вне форума  
Непрочитано 26.04.2013, 14:46  
stmfaq
Прописка
 
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
stmfaq на пути к лучшему
По умолчанию Re: FAQ по STM8

Новая проблема . Для отладки работы программы нужно вывести в UART значение переменных выводить нужно в таком формате
printf("type =%.2X%.2X\r\n",buf[12],buf[13]);
у меня самописная функция printf
Код:
void printf(char *str)
  {
 char *si = str;
 while (*si)
  {
  UART2_DR = (unsigned char) *si;   
  while (UART2_SR_TXE == 0);         
  ch++;                         
  }
  }
Приведенную вверху строку мой printf отправить не может, как быть? Где взять функцию printf чтобы она могла обрабатывать строку приведенную выше и отправлять в UART ? Может у кого есть исходник?
stmfaq вне форума  
Непрочитано 26.04.2013, 15:30  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: FAQ по STM8

Написать свой аналог ITOA с основанием 16 .
Заполнять строку буфер и ее уже выплевывать.
Только не понятно про спецификатор точность , если я правильно понял
uint8_t buf[] ?
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 26.04.2013, 15:43  
stmfaq
Прописка
 
Регистрация: 31.03.2013
Сообщений: 146
Сказал спасибо: 50
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
stmfaq на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от dosikus Посмотреть сообщение
Написать свой аналог ITOA с основанием 16 .
Жаль , я думал что уже есть готовое решение.
Мне нужно передавать в UART переменную типа int . С одно байтовой я бы не парился.
Интересно а есть исходник на функцию printf которая из библиотеки stdio ?На базе её сделать только в качестве потока указать UART.
И ещё вопрос но уже по SPI в STM8S, я уже спрашивал, но никто не ответил, пины для SPI нужно конфигурировать на вход и выход или они уже по умолчанию сконфигурированы как нужно при запуске SPI?
stmfaq вне форума  
 

Закладки

Метки
arm, cortex, stm32, stm8
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
STM8(S/L), первые впечатления kison STM8 1423 19.05.2018 19:23
Вопросы и замечания по топику - FAQ по PROTEUS avr123-nm-ru Proteus 291 05.06.2015 20:49
FAQ Импульсный трансформатор alberio Источники питания и свет 87 13.11.2012 18:07


Часовой пояс GMT +4, время: 16:45.


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