Частотомер на stm8

ZiB

Продолжаем описание программного USB на базе микроконтроллеров STM8 (первая часть читать).

Сегодня расскажу о коде приемника и о первом включении устройства:

Передача данных

В процессе “подключения” устройства к ПК пришлось поправить код передатчика, теперь в подпрограмму передается адрес (указатель) на массив данных.

Прием данных

К сожалению на текущий момент не удалось на лету и вырезать незначащие биты, реализовано только декодирование NRZI.

При приеме так же используются обе линии, это позволяет декодировать NRZI буквально двумя командами.

Вот краткий алгоритм работы приемника (декодера):

Использование тестового сигнала избыточно, да и проверку можно делать по другому, например декодирование и проверка конца пакета, может быть выполнено вот так:

srl a
xor a,(y)
tnz (y)
jreq L_End_Rx

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

Важная часть в декодировании захват сигналов всегда в одно и тоже время.

К сожалению у STM8 команды могут выполнятся длительное время от 1 до 6 тактов, для устранения этого недостатка пришлось использовать один таймер.

По первому фронту сигнала запускается таймер 1, после вхождения в обработчик прерывания считывается счетный регистр и выполняется переход в перед на кол-во циклов (комманд nop).

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

Данный подход позволяет “удерживать” точку захвата в пределах одного такта микроконтроллера.

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

Вот как это выглядит на ассемблере:

_usb_rx: ldw x, #L_Delay_Begin ; адрес начала таблицы задержек addw x, 21086 ; + смещение (значение таймера) cpw x, #L_Delay_End ; проверка выхода за границу таблицы (защита!) jruge L_Error jp (x) ; переход по таблице задержек L_Error: iret ; аврийный выход L_Delay_Begin: nop nop nop nop nop nop

Прошу извинить за столь сумбурное описание реализации.

Из протокола я реализовал чтение дескриптора и то, не полностью.

Описывать его не буду, так как сам плохо понимаю, что там происходит

Записал небольшой видеоролик с подключением тестового устройства к ПК:

Исходный код

Скачать [2014-02-STM8S-USB.zip]

Внимание!!! Код СЫРОЙ, без оформления и тщательной проверки.

Код собран компилятором Cosmic версии 4.3.7, к сожалению IAR-ом не пользуюсь.

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

Будут вопросы пишите, форма обратной связи в меню сайта (см. выше).

Источник: http://ziblog.ru/2014/02/22/programmnyiy-usb-na-stm8-chast-2.html

STM8S + SDCC: Программирование БЕЗ SPL, система тактирования

разделы: STM8 , дата: 11 апреля 2018г

Систему тактирования я уже бегло рассматривал в случае использования SPL.

Стандартная периферийная библиотека, на мой взгляд, предлагается фирмой STM в качестве инструмента для быстрого освоения семейства микроконтроллеров STM8, программистами ранее не работавшими с ними.

Сейчас я считаю, что она совершенно лишняя. Хотя, в примерах я использую именованные константы взятые из заголовочных файлов SPL.

Документация которая понадобится для прочтения статьи: Reference Manual STM8S – RM0016, глава 9. В качестве целевого микроконтроллера я буду использовать 20-пиновый STM8S103F3P6.

Скачать полные исходники со сборочными файлам и скомпилированными прошивками, можно по ссылке в конце статьи.

1. Система тактирования STM8S, ключевые особенности

Система тактирования микроконтроллеров STM8S представлена на следующей картинке:

    Особенности системы тактирования микроконтроллеров STM8S:
  1. В системе имеется два тактовых генератора, высокочастотный и низкочастотный.
  2. Внутренний низкочастотный генератор – LSI, работает на частоте 128 кГц, и имеет погрешность ±12%. Сторожевой таймер и система автопробуждения тактируется только от него.
  3. В случае AWU – системы автопробуждения, через параметр Option Bytes – CKAWUSEL, возможно назначить внешний источник тактового сигнала HSE с предделителем в качестве источника тактирования AWU.
  4. В роли высокочастотного генератора могут выступать: а) внутренний генератор – HSI работающий на частоте 16 МГц и имеющий предделитель на 1, 2, 4, 8; б) внешний генератор с частотой до 24 МГц для stm8s2xx серии и до 16 МГц для чипов stm8s1xx серии; в) внутренний генератор работающий от внешнего кварца на частотах 1-24(16 для stm8s1xx) МГц.
  5. Система тактирования имеет модуль безопасности CSS которая может отслеживать работу внешнего генератора или кварца и в случае неисправности оных, переключить микроконтроллер на работу от внутреннего генератора с предделителем равным 8, т.е. на частоту 2 МГц.
  6. Все тактовые генераторы могут включаться и отключаться.
  7. Все периферия при старте микроконтроллера, по умолчанию находится в включенном состоянии. Она может быть отключена через регистры CLK_PCKENR1 и CLK_PCKENR2.
  8. Микроконтроллер может подать тактовый сигнал на выход CCO.

Регистры отвечающие из систему тактирования и их значения по умолчанию представлены на следующей таблице:

Дефолтные настройки системы тактирования можно изменять через Options Bytes. Они разные для различных серий STM8S. В случае STM8S103 они выглядят так:

2. Подключение и отключение периферии к шинам тактирования. Регистры CLK_ICKR, CLK_PCKENR1 и CLK_PCKENR2

Начнем с простого. В качестве шаблонного проекта возьмем Blink на таймере TIM4 из предыдущей статьи.

В главной функции main() заменим строки:

CLK_CKDIVR=0;

на вызов функции следующего содержания:

static inline void clk_setup() { CLK_CKDIVR=0;
}

С этой функцией и будем в дальнейшем работать.

За подключение периферии к шине тактирования отвечают два регистра: CLK_PCKENR1 и CLK_PCKENR2

Т.к. в программе из периферии используется лишь таймер TIM4, в функцию clk_setup() следует добавить строки:

CLK_PCKENR1=CLK_PCKENR1_TIM4; CLK_PCKENR2=0;

Внутренними генераторам HSI и LSI управляет регистр CLK_ICKR:

В установках по умолчанию для этого регистра, низкочастотный LSI – генератор выключен, а высокочастотный HSI генератор включен. Это установки полностью соответствуют нашим запросам и регистр CLK_ICKR пока можно не трогать.

3. Внутренний высокочастотный генератор HSI. Регистр CLK_CKDIVR

Чип STM8S после включения питания стартует с внутренним 16 МГц генератором тактового сигнала HSI. Выход частоты с него можно менять установкой предделителя fHSI равному 1, 2, 4, или 8. По умолчанию применяется предделитель равный 8.

Частотой процессора можно управлять с помощью предделителя fCPU. По умолчанию он равен 1.

Предделители fHSI и fCPU устанавливаются через регистр CLK_CKDIVR:

Если записать в регистр значение CLK_PRESCALER_HSIDIV1, т.е. ноль, т.о. микроконтроллер будет работать на частоте 16 МГц. Светодиод при этом будет мигать с полупериодом в 1 секунду. Однако если понизить частоту процессора до 1 МГц командой:

CLK_CKDIVR=CLK_PRESCALER_HSIDIV1|CLK_PRESCALER_CPUDIV16;

то светодиод все-равно будет мигать с полупериодом в 1 секунду. Почему? Т.к. задержка формируется через таймер, и если посмотреть на схему тактирования:

то видно, что предделитель fCPU никак на периферию не влияет. Он влияет только на частоту процессора. Если вместо задержки на таймере и использовать задержку на счетчике, например из примера предыдущей статьи: Передача параметров из Си в ассемблерную функцию, то она уже будет работать должным образом.

4. Подключение внешнего кварца к HSE генератору тактовой частоты. Регистры CLK_ECKR, CLK_CMSR, CLK_SWR и CLK_SWCR

При подключении внешнего кварца, генератору HSE требуется некоторое время для стабилизации частоты. По умолчанию, это время равно 2048 тактам. Это значение можно менять через параметр Option Bytes – HSECNT.

В связи с этим, существует два варианта переключения на HSE: автоматический и ручной.

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

Далее микроконтроллер все сделает сам. Он включит генератор HSE, дождется его стабилизации, и после автоматически переключится на него.

Пользовательская программа при этом не ждет переключения, она занимается своими делами.

Блок-схема алгоритма представлена на картинке ниже:

Пример программы с реализацией такого алгоритма у меня получился таким:

#include
#include “stm8s103f.h”
#include “stm8s_tim4.h”
#include “stm8s_clk.h” #define CFG_GCR_AL ((uint8_t)0x02)
#define LED 5 extern void delay(void) __interrupt(23);
volatile uint16_t count;
static inline void clk_setup();
static void switch_to_hse_auto(); void delay_ms(uint16_t ms)
{ count = ms; CFG_GCR = CFG_GCR_AL; 2 TIM4_SR = 0x0; TIM4_PSCR = TIM4_PRESCALER_128; 7128
124 TIM4_ARR = 16; TIM4_IER = (uint8_t)TIM4_IT_UPDATE; 1 TIM4_CR1 = TIM4_CR1_CEN; 1 wfi(); TIM4_CR1 = 0x0; } int main(void) { clk_setup(); PB_DDR=(1

Источник: http://www.count-zero.ru/2018/stm8_clock/

Stm8 182

STM8/128-SK/RAIS5 днейПр-во: ST Microelectronics 5 дней 7 560 руб. ×
STM8/128-EVAL5 днейПр-во: ST Microelectronics 5 дней 11 400 руб. ×
Со склада 1 190 руб. ×от 3 шт. — 1 090 руб.от 30 шт. — 1 050 руб.
Со склада 930 руб. ×от 3 шт. — 919 руб.от 30 шт. — 893 руб.
Со склада 860 руб. ×от 3 шт. — 782 руб.от 30 шт. — 760 руб.
1 день 160 руб. ×от 10 шт. — 148 руб.от 100 шт. — 147 руб.
Со склада 75 руб. ×от 15 шт. — 65 руб.от 150 шт. — 62 руб.
Со склада 74 руб. ×от 15 шт. — 67 руб.от 150 шт. — 66 руб.
Со склада 75 руб. ×от 15 шт. — 65 руб.от 150 шт. — 62 руб.
2-3 недели 87 руб. ×от 25 шт. — 83 руб.от 50 шт. — 79 руб.
Со склада 3 000 руб. ×от 3 шт. — 2 800 руб.от 30 шт. — 2 750 руб.
Со склада 2 300 руб. ×от 3 шт. — 2 100 руб.от 30 шт. — 2 050 руб.
Со склада 8 000 руб. ×от 3 шт. — 7 950 руб.от 30 шт. — 7 900 руб.
Со склада 10 750 руб. ×от 2 шт. — 10 210 руб.от 8 шт. — 9 904 руб.
Со склада 620 руб. ×от 5 шт. — 570 руб.от 50 шт. — 548 руб.
5 дней 57 руб. ×от 23 шт. — 35 руб.от 46 шт. — 31 руб.
STM8405 5 дней 80 руб. ×от 18 шт. — 50 руб.от 36 шт. — 44 руб.
STM8306 5 дней 46 руб. ×от 30 шт. — 29 руб.от 59 шт. — 25 руб.
Читайте также:  Функциональный генератор звукового диапазона

Страницы Ctrl ← предыдущая Ctrl → следующая

Источник: https://www.chipdip.ru/catalog/popular/stm8

Страничка эмбеддера » Обзор stm8

Когда я выбирал контроллер для очередной поделки, я наткнулся на резкий дефицит разного рода AVR’ок. Я начал искать, чем их заменить, и нашел stm8.

stm8 – это относительно новое семейство микроконтроллеров от компании STMicroelectronics. В нем воплощено чуть ли не все, чего можно ожидать от 8 битных чипов. Конечно-же, у каждого контроллера есть свои плюсы и свои минусы.

Плюсы и минусы

Естественно, плюсы и минусы я оцениваю по применимости в моих проектах, для вас они могут отличаться в ту или иную сторону. Я буду сравнивать с AVR, потому, как на них многие уже скушали небольшую собачку.

Плюсы:

  1. Цена. Не смотря на мало распространенность, stm8 стоит по три копейки за ведро.

  2. Еще одна цена. Отладочные платы и отладчики стоят копейки. Можно забыть про всю ту ораву самопальных программаторов, что расплодились для AVR’ов. Также, можно забыть про программаторы без отладчиков – за минимальные деньги все включено.

  3. У stm8 в отличии от AVR нет фьюзов. И это меня очень радует. Теперь вся программа действительно содержится в одном hex файле. Ну согласитесь, фьюзы в AVR– чистейшее зло!

  4. Есть очень дешевые контроллеры с 12-битными АЦП и ЦАПами, и это – очень хорошо!

  5. Классный отладочный интерфейс. Задумка об отладке по одному проводу у AVR была хороша, но чтобы ее включить, приходилось подключать еще три. В итоге, JTAG был не намного хуже пресловутого debugWire. ST довела идею до логического завершения. Отладка по двум проводам. Супер!

  6. Работает от пяти вольт. Не знаю, можно ли это назвать достоинством в нынешнем мире, но олдфагам это точно понравится.

  7. Встроенный bootloader. Умеет загружать программы по uart, spi, can, i2c.

  8. На халяву дается библиотека драйверов периферии.

Недостатки:

  1. Нет контроллеров в маловыводных корпусах (типа so8).

  2. Нет контроллеров с USB. ST предлагает пересаживаться на ее кортексы, если нужен USB.

  3. Не слишком пока распространены. Соответственно, и доставать сложно, и цены выше, чем могли бы быть.

Семейства

Существует 3 семейства stm8.

  1. stm8s – “стандартные” контроллеры общего применения, обычно 10 битная аналоговая периферия, среднее по современным стандартам энергопотребление. Диапазон питания – 2.95 – 5.5в

  2. stm8l – “low-power” контроллеры с низким потреблением, 12 битный аналог, улученная электромагнитная совместимость. Диапазон питания – 1.8-3.6в. По сравнению со стандартными контроллерами, тут добавляется небольшая кучка периферии, в частности, DMA.

  3. stm8a – “автомобильные” – все сосредоточено на безопасности и CAN’е. Котроллеры выдерживают больше издевательств над ножками, чем обычные, работают при 145 градусах,   Диапазон питания – 2.95 – 5.5в

Названия

Без лишних слов:

Структура документации

В принципе, всего кроме этого раздела можно было и не писать. Документация у ST довольно неплохая. Главное знать, что и где искать. (Примеры будут для контроллера, который валяется у меня прямо сейчас на столе — stm8l152c4)

Заходим на страничку интересующего вас контроллера. (вот тут http://www.st.com/mcu/ выбираем нужное семейство и контроллер, к примеру, stm8l152c4).

В отличии от Atmel’a, дядьки из ST поступили умнее, и разбили документацию на несколько частей. В даташите они приводят только отличие конкретного контроллера от всей остальной линейки. В даташите нужно искать электрические параметры, размер памяти, список периферии.

Немного ниже есть reference manual – это документация на всю линейку. Тут описывается переферия и регистры. Вообщем то, что нужно нормальному сишнику для программирования.

Если полистать ниже, то можно наткнуться на Errata sheet. Ошибок много, но серьезных практически нет.

Если ты – сумасшедший ассемблерщик (С), и этого тебе не хватило, то, в разделе Programming Manual, можно найти документ STM8 CPU programming manual. Это — описание самого ядра, набора инструкций, их таймингов, итп.

Библиотека

ST сделала такую штуку, которая называется STM8x Firmware library. Это – суть фрэймворк для микроконтроллеров.

Давайте, к примеру, запустим АЦП

1#include «stm8a_lib.h»

2

3void main(void)

4{

5 ADC_DeInit();

6 enableInterrupts();

7

8 /* Init ADC peripheral */

9 ADC_Init(ADC_CONVERSIONMODE_CONTINUOUS, ADC_CHANNEL_9,

10 ADC_PRESSEL_FCPU_D2, ADC_EXTTRIG_TIM, DISABLE,

11 ADC_ALIGN_RIGHT, ADC_SCHMITTTRIG_CHANNEL9, DISABLE);

12

13 /* Enable EOC interrupt */

14 ADC_ITConfig(ENABLE);

15

16 /*Start Conversion */

17 ADC_StartConversion();

18

19 while(1) { /* wait for interrupts */ }

20}

Красиво, не правда ли? Конечно, скорость работы с использованием такого “фрэймворка” будет ниже, чем без, но, как завещал Кнут – “premature optimization is the root of all evil”. Если будет совсем медленно, функции библиотеки всегда можно подменить своими.

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

Документация на библиотеку, хоть и doxygen’овская, но довольно хороша!

Средства отладки

Как я и обещал, тут все очень хорошо. Есть два основных средства

  • stm8s-discovery. Стоит 10$ + жадность продавца. Включает в себя полноценный программатор и небольшую отладочную плату. Стоимость деталей программатора в Киеве намного больше 10$, поэтому разнообразные самопальные программаторы сразу отпадают. Я купил себе такую и не жалею. Намного более стоящее приобретение, чем тот-же avr dragon. Кстати! Отладчик построен на контроллере STM32F103C8T6. На отладочной плате разведен JTAG, и, поэтому, ее можно использовать как отладочную для stm32. Прошивка потеряется, но, учитывая, что весь discovery стоит как один STM32F103C8T6, можно на это забить. Зато есть USB, внешние проводки, светодиоды. Вообщем, discovery — мегавещь.
  • st-link стоит побольше, чем stm8-discovery, зато программирует все, что выпускает stm, включая stm32. St-link может стать очень хорошей покупкой, если у вас нет arm-программатора.

Компиляторы

  1. Первое, и главное для меня, IAR выпускает компилятор для stm8. Бесплатный умеет до 8 кбайт или до 30 дней. Ходят слухи, что плохие люди его взламывают. Наверняка, это только слухи

    Источник: http://bsvi.ru/obzor-stm8/

    Вибрационные(язычковые)частотомеры

    Источник: https://infopedia.su/5x9bb3.html

    Ссылка на основную публикацию
    Adblock
    detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

ПредставляетсобойприборсподвижнойчастьюввиденабораупругихЭлементов(пластинок,язычков),приводимыхврезонансныеколебанияпривоздействиипеременногомагнитногоилиэлектрическогополя.

Рис.1Язычковыечастотомеры

Назначение:контрольсетиэлектропитания

Аналоговыестрелочныечастотомеры

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

Измерительныммеханизмом,какправило,являетсялогометр,наодноплечокоторогоподаетсяизмеряемыйсигналчерезчастотнезависимуюцепь,анадругое—черезчастотзависимую,роторлогометрасострелкойврезультатевзаимодействиямагнитныхпотоковустанавливаетсявположение,зависящееотсоотношенийтоковвобмотках.

Бываютаналоговыечастотомерыработающиеподругимпринципам.

Рис.2стрелочныечастотомеры

Назначение:контрольсетиэлектропитания.

ЧастотомернамикроконтроллереSTM8LF3P6

Рис.3Частотомер на микроконтроллере STM8LF3P6

Правильнееегоназватьсчётчикчастоты:егопринципработызаключаетсявтом,втечениеоднойсекунды(интервалотмеряетсяпотаймеру)происходитподсчетколичестваимпульсов.Затемэтозначениеотправляетсянаиндикатор,асчётчиксбрасывается.Каждыйразприсрабатываниитаймераинвертируетсяпинсветодиода,светодиодмигает.

Рис.4Принципиальнаясхемачастотомера

Рис.5Печатнаяплатадлячастотомера

Сосхемойвсепросто.ЦепочкаR2-C3отсекаетпостояннуюсоставляющуюсигнала,послечегоимпульсыидутнаконтроллер.R1подтягиваетпинсбросамккпитанию.

Светодиодпозволяетконтролироватьработуприбора,ондолженмигатьспериодомгде-то2,5секунды;отсутствиемиганияговоритотом,чтонезапущентактирующийкварц.

Миганиесветодиодаприотсутствиииндикацииговоритопроблемахсиндикаторомилиегоподключением.Крометого,попитаниюпоставленстабилизаторнапряженияна3,3В.

Входеизготовленияплатыястолкнулсяспроблемойнанесениярисункатонкихдорожек.Последесятканеудачныхпопытоксразнымиматериаламиярешилизменитьтактику.Опытпоказывает,чтомелкиеплатыпрощеделать.Поэтомуярешилсделатьустройствонадвухплатах-одначистоподмикроконтроллер,другаяподвсеостальное.

Рис.6Платамикроконтроллера

Рис.7Основнаяплата

Обозначение Тип Номинал Количество
IC1 МКSTM8 STM8L051F3
U1 Микросхема KIA1117BP
C1,C2 Конденсатор 33пФ
C3 Конденсатор 10мкФ
R1 Резистор 1кОм
R2 Резистор 30кОм
HL1 Светодиод
Display1 Дисплей TIC-33
XTAL1 Кварц 12МГц

Табл.1Списокрадиоэлементов

Послеизготовленияплатсоединяемихспомощьюразъема-гребенки.ИсходныйкодпрошивкидляIARестьвприкрепленномпроекте.Висходномкодедостаточнокомментариевдляегопонимания.Дополнительнохотелосьбыпояснитьследующиемоменты.Во-первых,остановкатаймеранавремявыполненияпрерывания.Этосделанодлятого,чтобытаймернесчиталвпустую,таккаквовремяпрерываниятаймерапрерыванияотпинанеучитываются.

Рис.8Проектчастотометра

Еслижеизменитьприоритетыпрерываний,существуетрисксбояприотправкеданныхнадисплей.Во-вторых,пояснюпринципработыдисплеяTIC33.унегоесть6выводов-2напитание,выводDIN,скоторогосчитываются,биты(каждыйбитсоответствуетсегментудисплея),DCLK-пофронтунаэтомпинеданныесDINпропихиваютсявпамятьдисплея,LOAD-пофронтуэтогопинапроисходитобновлениеданныхнаэкранеиLCLK-тактирование.

Кварц

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

Первым их значительным применением было изготовление генераторов радиочастоты со стабилизацией кварцевыми кристаллами.

Заставив кварцевую пластинку вибрировать в электрическом поле радиочастотного колебательного контура, можно тем самым стабилизировать частоту приема или передачи.

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

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

Полупроводники широко применяются также в преобразователях переменного тока в постоянный.

Кристаллы используются также в некоторых мазерах для усиления волн СВЧ – диапазона и в лазерах для усиления световых волн.

Кристаллы, обладающие пьезоэлектрическими свойствами, применяются в радиоприемниках и радиопередатчиках, в головках звукоснимателей и в гидролокаторах.

Некоторые кристаллы модулируют световые пучки, а другие генерируют свет под действием приложенного напряжения. Перечень видов применения кристаллов уже достаточно длинен и непрерывно растет.

Кабельный тестер STM-8

Это экономичный и универсальный карманный тестер предназначенный для проверки UTP, экранированного (ScTP), и полностью экранированного (SSTP) кабеля на обрыв, короткое замыкание, реверсированные пары, и расщепление пары*.

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

Рис.1Кабельный тестер

Характеристики:

Тестирует соединения T568A, T568B, USOC, 10BASE-T, Token Ring, и TP-PMD

В режиме FIND, STM-8 может протестировать и определить, в какой схеме соединений используется проверяемый кабель.

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

Тестирует кабели до 900м (2950 ft.)

Присутствие напряжения в линии указывается на дисплее, что помогает предотвратить случайное повреждение устройства

Во время тестирования мигает индикатор LED, а по окончании останется гореть

Индикация для 6-ти и 8-ми контактных джеков

STM-8 состоит из основного карманного устройства и дистанционного устройства. Комплект поставляется упакованным в нейлоновую сумку и включает также два модульных шнура, Руководство The Siemon Company's, инструкции и 9V щелочная батарею. Каждое из четырех дистанционных устройств индивидуально идентифицируется основным устройством.

Модульные шнуры UTP оснащаются запатентованными “универсальными” разъемами, которые подключаются к любым стандартным 6-ти или 8-ми контактным модульным джекам.

Для простоты использования имеется только один порт для тестов

Индикация разряда батареи, а также автоматическое выключение, позволяют продлить ресурс батареи

Дополнительные дистанционные устройства могут быть куплены отдельно или в комплекте

Дополнительно может измерять длину кабеля