Чем программировать cpu122 1r

от admin

Программирование контроллеров OMRON для начинающих

По роду своей деятельности, а вернее, по какой-то прихоти судьбы, мне на объектах чаще всего попадаются в качестве «клиентов» контроллеры японской фирмы Omron. И, соответственно, чаще всего мне приходится заниматься программированием именно контроллеров Omron.

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

У Omron есть несколько линеек промышленных контроллеров.

Компактная серия CP, которая, в свою очередь, делится на 3 линейки:

CP1E – компактный экономичный контроллер, представленный двумя контроллерами: самый дешёвый CP1E-E и CP1E-N с чуть более широкими функциями. Один раз мне приходилось программировать такой. Возможности у него конечно здорово ограничены, но со своей задачей он справился хорошо.

CP1L – компактный контроллер с функциями модульного ПЛК. Здесь некоторые модели уже могут быть даже оснащены портом Ethernet. И, при необходимости, контроллер расширяется с помощью дополнительных модулей ввода/вывода (максимум до 180 входов/выходов), соединенных по последовательному порту.

CP1H – компактный высокоскоростной ПЛК. Поддерживает максимум 320 входов/выходов. Поддерживает коммуникационные модули (до 2-х штук), совместимые с популярными промышленными сетями (Ethernet, Modbus, Profibus).

Модульная серия CJ, имеющая в своем составе также 3 линейки: CJ1M – быстрый и гибкий контроллер для небольших прикладных задач и CJ2M и CJ2H – фактически, улучшенные и расширенные варианты CJ1M с поддержкой до 400К шагов.

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

Программируемый логический контроллер Omron CJ1M

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

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

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

Например, в резервированных контроллерах линейки CS1, как я уже писал, не поддерживаются функциональные блоки, а только язык LD. Хорошо, что поддерживаются подпрограммы. Хотя, в 2020 году появились в продаже процессорные модули этой серии, которые поддерживают функциональные блоки на языке LD и ST (структурированный текст).

А в линейке CJ2 появились, наконец-то, нормальные структуры данных, что ускоряет разработку в разы.

Все контроллеры Omron программируются с помощью единого пакета программного обеспечения CX-One. Это целый комбайн, который включает в себя средства для программирования контроллеров Omron, панелей оператора, частотных преобразователей, систем управления движением, регуляторов, промышленных сетей из различных устройств Omron и т.п.

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

За это в CX-One отвечает пакет CX-Programmer. Ну, и ещё, CX-Integrator для конфигурирования сетей.

Как устанавливается пакет CX-One я описывать не буду. Сложного ничего в этом нет. Можно все оставлять по умолчанию и в результате вы получите работоспособный комплект ПО.

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

Итак, наши исходные данные:

контроллер Omron CJ1M с процессором CPU12;

один модуль ввода дискретных сигналов и один модуль вывода дискретных сигналов;

один модуль аналогового ввода;

двигатель, включаемый и отключаемый через контактор;

состояние двигателя приходит 2-мя сигналами – Включён (адрес CIO 0.00) и Отключён (адрес CIO 0.01);

управление двигателем осуществляется одним дискретным выходом (адрес CIO 1.00). Пока выходной контакт замкнут – идет команда на включение контактора двигателя. Как только контакт разомкнулся – команда с контактора снимается, контактор отключается и, соответственно, должен отключить двигатель;

команды на включение/отключение двигателя поступают от панели оператора на адреса W0.00 и W0.01 соответственно;

ну, и давайте, раз у нас есть модуль аналогового ввода, обработаем сигнал «Ток двигателя» для приведения его в форму, понятную оператору. Пусть максимальный ток, выдаваемый измерительным прибором – 600А и получаем мы его как токовый сигнал 4-20мА.

Да, и для простоты понимания будем все делать на языке релейной логики LD. Итак, запускаем CX-Programmer и поехали.

Программируем контроллер Omron CJ1M в среде CX-One (CX-Programmer), на примере управления двигателем :

На этом пока все. Удачи!

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

Чем программировать cpu122 1r

Программирование контроллеров OMRON для начинающих

По роду своей деятельности, а вернее, по какой-то прихоти судьбы, мне на объектах чаще всего попадаются в качестве «клиентов» контроллеры японской фирмы Omron. И, соответственно, чаще всего мне приходится заниматься программированием именно контроллеров Omron.

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

У Omron есть несколько линеек промышленных контроллеров.

Компактная серия CP, которая, в свою очередь, делится на 3 линейки:

CP1E – компактный экономичный контроллер, представленный двумя контроллерами: самый дешёвый CP1E-E и CP1E-N с чуть более широкими функциями. Один раз мне приходилось программировать такой. Возможности у него конечно здорово ограничены, но со своей задачей он справился хорошо.

CP1L – компактный контроллер с функциями модульного ПЛК. Здесь некоторые модели уже могут быть даже оснащены портом Ethernet. И, при необходимости, контроллер расширяется с помощью дополнительных модулей ввода/вывода (максимум до 180 входов/выходов), соединенных по последовательному порту.

CP1H – компактный высокоскоростной ПЛК. Поддерживает максимум 320 входов/выходов. Поддерживает коммуникационные модули (до 2-х штук), совместимые с популярными промышленными сетями (Ethernet, Modbus, Profibus).

Модульная серия CJ, имеющая в своем составе также 3 линейки: CJ1M – быстрый и гибкий контроллер для небольших прикладных задач и CJ2M и CJ2H – фактически, улучшенные и расширенные варианты CJ1M с поддержкой до 400К шагов.

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

Программируемый логический контроллер Omron CJ1M

Программируемый логический контроллер Omron CJ1M

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

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

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

Например, в резервированных контроллерах линейки CS1, как я уже писал, не поддерживаются функциональные блоки, а только язык LD. Хорошо, что поддерживаются подпрограммы. Хотя, в 2020 году появились в продаже процессорные модули этой серии, которые поддерживают функциональные блоки на языке LD и ST (структурированный текст).

А в линейке CJ2 появились, наконец-то, нормальные структуры данных, что ускоряет разработку в разы.

Все контроллеры Omron программируются с помощью единого пакета программного обеспечения CX-One. Это целый комбайн, который включает в себя средства для программирования контроллеров Omron, панелей оператора, частотных преобразователей, систем управления движением, регуляторов, промышленных сетей из различных устройств Omron и т.п.

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

За это в CX-One отвечает пакет CX-Programmer. Ну, и ещё, CX-Integrator для конфигурирования сетей.

Как устанавливается пакет CX-One я описывать не буду. Сложного ничего в этом нет. Можно все оставлять по умолчанию и в результате вы получите работоспособный комплект ПО.

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

Итак, наши исходные данные:

контроллер Omron CJ1M с процессором CPU12;

один модуль ввода дискретных сигналов и один модуль вывода дискретных сигналов;

один модуль аналогового ввода;

двигатель, включаемый и отключаемый через контактор;

состояние двигателя приходит 2-мя сигналами – Включён (адрес CIO 0.00) и Отключён (адрес CIO 0.01);

управление двигателем осуществляется одним дискретным выходом (адрес CIO 1.00). Пока выходной контакт замкнут – идет команда на включение контактора двигателя. Как только контакт разомкнулся – команда с контактора снимается, контактор отключается и, соответственно, должен отключить двигатель;

команды на включение/отключение двигателя поступают от панели оператора на адреса W0.00 и W0.01 соответственно;

ну, и давайте, раз у нас есть модуль аналогового ввода, обработаем сигнал «Ток двигателя» для приведения его в форму, понятную оператору. Пусть максимальный ток, выдаваемый измерительным прибором – 600А и получаем мы его как токовый сигнал 4-20мА.

Да, и для простоты понимания будем все делать на языке релейной логики LD. Итак, запускаем CX-Programmer и поехали.

Программируем контроллер Omron CJ1M в среде CX-One (CX-Programmer), на примере управления двигателем :

Написание простого процессора и окружения для него

Здравствуйте! В этой статье я расскажу какие шаги нужно пройти для создания простого процессора и окружения для него.

Архитектура набора команд (ISA)

Для начала нужно определиться с тем, каким будет процессор. Важны такие параметры как:

  • Размер машинного слова и регистров(разрядность/»битность» процессора)
  • Машинные команды (инструкции) и их размер

Архитектуры процессоров можно разделить по размеру инструкций на 2 вида (на самом деле их больше, но другие варианты менее популярны):

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

Я решил сделать RISC процессор во многом похожий на MIPS.

Я это сделал по целому ряду причин:

  • Довольно просто создать прототип такого процессора.
  • Вся сложность такого вида процессоров перекладывается на такие программы как ассемблер и/или компилятор.

Вот основные характеристики моего процессора:

  • Машинное слово и размер регистров — 32 бита
  • 64 регистра (включая счетчик команд)
  • 2 типа инструкций

Register type(досл. Регистровый тип) выглядит вот так:

rtype

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

Immediate type(досл. Немедленный тип):

itype

Инструкции этого типа оперируют с двумя регистрами и числом.

OP — это номер инструкции, которую нужно выполнить (или же для указания, что эта инструкция Register type).

R0, R1, R2 — это номера регистров, которые служат операндами для инструкции.

Func — это дополнительное поле, которое служит для указания вида Register type инструкций.

Imm — это поле куда записывается то значение, которое мы хотим явно предоставить инструкции в качестве операнда.

  • Всего 28 инструкций

Полный список инструкций можно посмотреть в github репозитории.

Вот лишь пару из них:

NOR это Register type инструкция, которая делает логическое ИЛИ НЕ на регистрах r1 и r2, после записывает результат в регистр r0.

Для того, чтобы использовать эту инструкцию нужно изменить поле OP на 0000 и поле Func на 0000000111 в двоичной системе счисления.

LW это Immediate type инструкция, которая загружает значение памяти по адресу r1 + n в регистр r0.

Для того, чтобы использовать эту инструкцию в свою очередь нужно изменить поле OP на 0111, а в поле IMM записать число n.

Написание кода процессора

После создания ISA можно приступить к написанию процессора.

Для этого нам нужно знание какого нибудь языка описания оборудования. Вот некоторые из них:

  • Verilog
  • VHDL (не путать с предыдущим!)

Я выбрал Verilog, т.к. программирование на нем было частью моего учебного курса в университете.

Для написания процессора нужно понимать логику его работы:

  1. Получение инструкции по адресу Счетчика команд (PC) инструкции
  2. Выполнение инструкции
  3. Прибавление к Cчетчику команды размера выполненной инструкции

И так до бесконечности.

Получается нужно создать несколько модулей:

Разберем по отдельности каждый модуль.

Регистровый файл

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

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

Декодер

Декодер это тот блок, который отвечает за декодирование инструкций. Он указывает какие операции нужно выполнить АЛУ и другим блокам.

Например, инструкция addi должна сложить значение регистра $zero(Он всегда хранит 0) и 20 и положить результат в регистр $t0.

На этом этапе декодер определяет, что эта инструкция:

  • Immediate type
  • Должна записать результат в регистр

И передает эти сведения следующим блокам.

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

То есть, если рассмотреть ту же инструкцию addi, то на этом этапе происходит сложение 0 и 20.

Другие

По мимо вышеперечисленных блоков, процессор должен уметь:

  • Получать и изменять значения в памяти
  • Выполнять условные переходы

Тут и там можно увидеть как это выглядит в коде.

Ассемблер

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

Я решил реализовать его на языке программирования Си.

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

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

Обычная программа начинается с объявления сегмента.

Для нас достаточно двух сегментов .text — в котором будет храниться исходный код наших программ — и .data — в котором будет хранится наши данные и константы.

Инструкция может выглядеть вот так:

Сначала указывается название инструкции, потом операнды.

В .data же указываются объявления данных.

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

Удобно парсить (сканировать) ассемблер файл в таком виде:

  1. Сначала сканируем сегмент
  2. Если это .data сегмент, то мы парсим разные типы данных или .text сегмент
  3. Если это .text сегмент, то мы парсим команды или .data сегмент

Для работы ассемблеру нужно проходить исходный файл 2 раза. В первый раз он считает по каким смещениям находятся ссылки (они служат для), они обычно выглядят вот так:

А во второй проход можно уже и генерировать файл.

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

Также готовый ассемблер можно использовать в Си компиляторе. Но это уже позже.

Программирование микроконтроллеров. С чего начать?

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

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

Микроконтроллеры бывают разных фирм, которые делают одно и тоже дело, но разными методами. Сравнить это можно с человеческими расами: европейцы, китайцы и африканцы например. Я лично работаю с микроконтроллерами фирмы Атмел, про них и буду говорить. Ну уж пошло сравнение с расами, пускай это будут европейцы.) Программы для микроконтроллеров пишут на языках программирования. Я рекомендую начать с языка Си. Это древний и простой язык. Для написания текста програмы используют программы компиляторы. Они позволяют создавать, редактировать и переваривать написанный программистом текст программы в код (прошивку), который можно загрузить (прошить) в микроконтроллер. Таких программ есть множество. Пример для Атмел: Code VisionAVR, родная от Атмел AVR Studio, Bascom-avr и ещё.
Эти программы делают одно и тоже дело, но своими методами, особенностями достоинствами и недостатками. При это текст Си в тих программах компиляторах немного отличается, но в общем похож. Можно сравнить с различием украинского, русского и белорусского языка. Я использую Code VisionAVR, что и советую начинающим.

Далее я приведу простой текст программы, написанный на языке Си в компиляторе Code VisionAVR для микроконтроллера ATTiny13A. В конце темы есть проект, прошивка и проект для эмулятора протеуса. Микроконтроллер в этой программе умеет делать простую вещь: при помощи кнопки менять логическое состояние на двух выходах, при этом короткое нажатие меняет состояние первого выхода а длинное — второго. В автомобиле например эту схему можно применить для управления одной кнопкой обогревом заднего стекла (которая есть у многих штатно) и добавленным обогревом зеркал. Нажал коротко на кнопку — сработал обогрев стекла, нажал ещё — обогрев стекла выключился. Если нажать и удерживать кнопку, то через какое-то время включиться обогрев зеркал. Если нажать и удерживать кнопку повторно — обогрев зеркал отключится.

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

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
www.hpinfotech.com

Project :
Version :
Date : 28.01.2012
Author :
Company :
Comments:

Chip type : ATtiny13A
AVR Core Clock frequency: 9,600000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/

#include <tiny13a.h>
#include <delay.h>

unsigned char b, trig;

void main(void)
будет крутиться, команды выполняться по кругу от начал до конца. А у нас в нашем коде будет крутиться алгоритм опроса кнопки, подключенной к порту PB0, от состояния которой (нажата кнопка или нет) будет меняться состояние выходных портов PB1 и PB2

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

Теперь про сами основные команды, которые находятся внутри цикла. Все команды используют один оператор if Это условие ЕСЛИ.

Если в регистре PINB в бите, отвечающем за порт PB0 микроконтроллера.0 содержится значение равное нулю ==0, то выполняем кучку кода, которая находится далее в границах скобок
Короче, если нажата кнопка то выполняется следующий код в границах последующих скобок
Далее после кучки кода в скобках видим оператор else и ещё кучку кода за ним в скобках

Оператор else переводится не как ещё а как иначе

Оператор if и else всегда работают в паре, сначала идет if затем else. Оператор else можно не использовать совсем, если он не нужен.

В нашей ситуации алгоритм можно описать так:

если (нажата кнопка подключенная к порту PB0)

иначе (кнопка не нажата)

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

Теперь рассмотрим кучку кода, которая выполняется, если кнопка нажата:

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

Если переменное значение trig равняется нулю, то выполняем инкремент переменной b Инкремент — операция увеличения значения, хранящегося в переменной, на 1. То есть при проходе выполнения кода, если процессор натыкается на команду инкремента b++, то процессор прибавляет единичку в число, которое находится в переменной b
Так же здесь применяется упрощенная "орфография" написания условия и команды, без скобок :

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

Немного отвлеклись, возвращаемся:

if (trig==0) b++; — если значение переменной равно нулю (а оно у нас равно нулю) то выполняем инкремент переменной b — переменная в была равна нулю, теперь стало единице.

Если переменная b больше ста, то выполняем кучку кода внутри скобок.

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

Теперь рассмотрим что же там делается, если нажата кнопка, если прошло сто кругов цикла:

if (PINB.2==0)PORTB.2=1;
else PORTB.2=0;
trig=1;
b=0;

Здесь мы видим ещё одно условие (жирная такая матрешка получилась))

if (PINB.2==0)PORTB.2=1;
Если регистр состояния выходного порта PB, а точнее PB2 равен нулю, то меняем его состояние на единичку PORTB.2=1.
else PORTB.2=0;
Иначе пишем в регистр нолик. Или если по-другому: если регистр состояния выходного порта PB2 равен единице, то меняем его на ноль.

Короче если происходит выполнение этих условий и команд, то меняется логическое состояние выхода 2 (PB2) на схеме.

Если полностью описать: если нажата кнопка, если прошло сто кругов главного цикла, то меняем логическое состояние выхода 2 — PORTB.2 в коде он же порт PB2 на схеме.

Как уже стало понятно этот кусок кода отрабатывает длительное нажатие кнопки.
Но этого мало, дальше ещё есть две выполняемые команды присвоения:

trig=1; присвоение единице этой переменной необходимо, что бы описанное выше условие работы инкремента b++ перестало работать
b=0; обнуляем переменную b.

В итоге при длительном нажатии кнопки, условие при котором меняется состояние порта PB2 выполняется единожды, до тех пор, пока кнопка не будет отжата кнопка, ибо инкремент не будет работать и условие if (b>100) больше не сработает, если тупо нажать кнопку и не отпускать совсем.

Теперь вторая часть кучки кода, которая следует за первым условием:
else

b=0;
trig=0;
>

Если кнопка отжата:
Опишем её с конца:

trig=0; присваиваем переменной trig значение ноль. Необходимо, что бы после длительного нажатия, когда наступит последующее отжатие кнопки микроконтроллер снова был готов к нажатиям кнопки ( срабатывало условие инкремента if (trig==0) b++;)

b=0; При не нажатой кнопке значение переменной b равняется нулю.

if (b>4)

Подробнее:
if (b>4)
Если значение переменной b больше четырех, то выполняем следующий код:
if (PINB.1==0)PORTB.1=1;
else PORTB.1=0;

Если состояние порта BP1 равно нулю, то делаем единицу, если нет, то ноль.

Это условие и команда отрабатывает кроткое нажатие кнопки. Если нажата кнопка, то начинает работать инкремент b++; значение которого начинает увеличиваться. Если отжать кнопку и при этом значение переменной b будет больше четырех ( но меньше ста — а то сработает длинное нажатие) то состояние выходного порта PB1 (он же выход 1 на схеме, он же PORTB.1 в коде) поменяется, сработает алгоритм короткого нажатия кнопки.

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

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

В оконцовке главного цикла виднеется команда:

Это задержка в главном цикле. То есть, выполняется пошагово команды, затем процессор натыкается на команду delay_ms(10); и начинает её выполнять. В итоге процессор будет 10 миллисекунд ждать и ничего не делать в этой строчке, затем опять приступит к выполнению команд.
Находясь в одном общем цикле, скорость нарастания значения инкремента b++ зависит от времени задержки, указанной в delay_ms.

Команда delay_ms находится в библиотеке задержек #include <delay.h>, которую мы для этого и включили в начале кода.

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

Вообще выполняемая здесь последовательность: условие + инкремент достаточно часто используемая команда и в языке Си присутствует отдельный оператор для этого for

Чем программировать cpu122 1r

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

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

Микроконтроллеры бывают разных фирм, которые делают одно и тоже дело, но разными методами. Сравнить это можно с человеческими расами: европейцы, китайцы и африканцы например. Я лично работаю с микроконтроллерами фирмы Атмел, про них и буду говорить. Ну уж пошло сравнение с расами, пускай это будут европейцы.) Программы для микроконтроллеров пишут на языках программирования. Я рекомендую начать с языка Си. Это древний и простой язык. Для написания текста програмы используют программы компиляторы. Они позволяют создавать, редактировать и переваривать написанный программистом текст программы в код (прошивку), который можно загрузить (прошить) в микроконтроллер. Таких программ есть множество. Пример для Атмел: Code VisionAVR, родная от Атмел AVR Studio, Bascom-avr и ещё.
Эти программы делают одно и тоже дело, но своими методами, особенностями достоинствами и недостатками. При это текст Си в тих программах компиляторах немного отличается, но в общем похож. Можно сравнить с различием украинского, русского и белорусского языка. Я использую Code VisionAVR, что и советую начинающим.

Далее я приведу простой текст программы, написанный на языке Си в компиляторе Code VisionAVR для микроконтроллера ATTiny13A. В конце темы есть проект, прошивка и проект для эмулятора протеуса. Микроконтроллер в этой программе умеет делать простую вещь: при помощи кнопки менять логическое состояние на двух выходах, при этом короткое нажатие меняет состояние первого выхода а длинное — второго. В автомобиле например эту схему можно применить для управления одной кнопкой обогревом заднего стекла (которая есть у многих штатно) и добавленным обогревом зеркал. Нажал коротко на кнопку — сработал обогрев стекла, нажал ещё — обогрев стекла выключился. Если нажать и удерживать кнопку, то через какое-то время включиться обогрев зеркал. Если нажать и удерживать кнопку повторно — обогрев зеркал отключится.

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

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
www.hpinfotech.com

Project :
Version :
Date : 28.01.2012
Author :
Company :
Comments:

Chip type : ATtiny13A
AVR Core Clock frequency: 9,600000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/

#include <tiny13a.h>
#include <delay.h>

unsigned char b, trig;

void main(void)
будет крутиться, команды выполняться по кругу от начал до конца. А у нас в нашем коде будет крутиться алгоритм опроса кнопки, подключенной к порту PB0, от состояния которой (нажата кнопка или нет) будет меняться состояние выходных портов PB1 и PB2

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

Теперь про сами основные команды, которые находятся внутри цикла. Все команды используют один оператор if Это условие ЕСЛИ.

Если в регистре PINB в бите, отвечающем за порт PB0 микроконтроллера.0 содержится значение равное нулю ==0, то выполняем кучку кода, которая находится далее в границах скобок
Короче, если нажата кнопка то выполняется следующий код в границах последующих скобок
Далее после кучки кода в скобках видим оператор else и ещё кучку кода за ним в скобках

Оператор else переводится не как ещё а как иначе

Оператор if и else всегда работают в паре, сначала идет if затем else. Оператор else можно не использовать совсем, если он не нужен.

В нашей ситуации алгоритм можно описать так:

если (нажата кнопка подключенная к порту PB0)

иначе (кнопка не нажата)

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

Теперь рассмотрим кучку кода, которая выполняется, если кнопка нажата:

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

Если переменное значение trig равняется нулю, то выполняем инкремент переменной b Инкремент — операция увеличения значения, хранящегося в переменной, на 1. То есть при проходе выполнения кода, если процессор натыкается на команду инкремента b++, то процессор прибавляет единичку в число, которое находится в переменной b
Так же здесь применяется упрощенная "орфография" написания условия и команды, без скобок :

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

Немного отвлеклись, возвращаемся:

if (trig==0) b++; — если значение переменной равно нулю (а оно у нас равно нулю) то выполняем инкремент переменной b — переменная в была равна нулю, теперь стало единице.

Если переменная b больше ста, то выполняем кучку кода внутри скобок.

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

Теперь рассмотрим что же там делается, если нажата кнопка, если прошло сто кругов цикла:

if (PINB.2==0)PORTB.2=1;
else PORTB.2=0;
trig=1;
b=0;

Здесь мы видим ещё одно условие (жирная такая матрешка получилась))

if (PINB.2==0)PORTB.2=1;
Если регистр состояния выходного порта PB, а точнее PB2 равен нулю, то меняем его состояние на единичку PORTB.2=1.
else PORTB.2=0;
Иначе пишем в регистр нолик. Или если по-другому: если регистр состояния выходного порта PB2 равен единице, то меняем его на ноль.

Короче если происходит выполнение этих условий и команд, то меняется логическое состояние выхода 2 (PB2) на схеме.

Если полностью описать: если нажата кнопка, если прошло сто кругов главного цикла, то меняем логическое состояние выхода 2 — PORTB.2 в коде он же порт PB2 на схеме.

Как уже стало понятно этот кусок кода отрабатывает длительное нажатие кнопки.
Но этого мало, дальше ещё есть две выполняемые команды присвоения:

trig=1; присвоение единице этой переменной необходимо, что бы описанное выше условие работы инкремента b++ перестало работать
b=0; обнуляем переменную b.

В итоге при длительном нажатии кнопки, условие при котором меняется состояние порта PB2 выполняется единожды, до тех пор, пока кнопка не будет отжата кнопка, ибо инкремент не будет работать и условие if (b>100) больше не сработает, если тупо нажать кнопку и не отпускать совсем.

Теперь вторая часть кучки кода, которая следует за первым условием:
else

b=0;
trig=0;
>

Если кнопка отжата:
Опишем её с конца:

trig=0; присваиваем переменной trig значение ноль. Необходимо, что бы после длительного нажатия, когда наступит последующее отжатие кнопки микроконтроллер снова был готов к нажатиям кнопки ( срабатывало условие инкремента if (trig==0) b++;)

b=0; При не нажатой кнопке значение переменной b равняется нулю.

if (b>4)

Подробнее:
if (b>4)
Если значение переменной b больше четырех, то выполняем следующий код:
if (PINB.1==0)PORTB.1=1;
else PORTB.1=0;

Если состояние порта BP1 равно нулю, то делаем единицу, если нет, то ноль.

Это условие и команда отрабатывает кроткое нажатие кнопки. Если нажата кнопка, то начинает работать инкремент b++; значение которого начинает увеличиваться. Если отжать кнопку и при этом значение переменной b будет больше четырех ( но меньше ста — а то сработает длинное нажатие) то состояние выходного порта PB1 (он же выход 1 на схеме, он же PORTB.1 в коде) поменяется, сработает алгоритм короткого нажатия кнопки.

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

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

В оконцовке главного цикла виднеется команда:

Это задержка в главном цикле. То есть, выполняется пошагово команды, затем процессор натыкается на команду delay_ms(10); и начинает её выполнять. В итоге процессор будет 10 миллисекунд ждать и ничего не делать в этой строчке, затем опять приступит к выполнению команд.
Находясь в одном общем цикле, скорость нарастания значения инкремента b++ зависит от времени задержки, указанной в delay_ms.

Команда delay_ms находится в библиотеке задержек #include <delay.h>, которую мы для этого и включили в начале кода.

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

Вообще выполняемая здесь последовательность: условие + инкремент достаточно часто используемая команда и в языке Си присутствует отдельный оператор для этого for

Чем программировать cpu122 1r

Программирование контроллеров OMRON для начинающих

Программируемый логический контроллер Omron CJ1M

  • Размер машинного слова и регистров(разрядность/»битность» процессора)
  • Машинные команды (инструкции) и их размер
  • Довольно просто создать прототип такого процессора.
  • Вся сложность такого вида процессоров перекладывается на такие программы как ассемблер и/или компилятор.
  • Машинное слово и размер регистров — 32 бита
  • 64 регистра (включая счетчик команд)
  • 2 типа инструкций

rtype

itype

  • Всего 28 инструкций
  • Verilog
  • VHDL (не путать с предыдущим!)
  1. Получение инструкции по адресу Счетчика команд (PC) инструкции
  2. Выполнение инструкции
  3. Прибавление к Cчетчику команды размера выполненной инструкции
  • Immediate type
  • Должна записать результат в регистр
  • Получать и изменять значения в памяти
  • Выполнять условные переходы
  1. Сначала сканируем сегмент
  2. Если это .data сегмент, то мы парсим разные типы данных или .text сегмент
  3. Если это .text сегмент, то мы парсим команды или .data сегмент

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
www.hpinfotech.com

Project :
Version :
Date : 28.01.2012
Author :
Company :
Comments:

Chip type : ATtiny13A
AVR Core Clock frequency: 9,600000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/

#include <tiny13a.h>
#include <delay.h>

unsigned char b, trig;

void main(void)
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

PORTB=0x01;
DDRB=0x06;

TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

GIMSK=0x00;
MCUCR=0x00;

ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
www.hpinfotech.com

Project :
Version :
Date : 28.01.2012
Author :
Company :
Comments:

#include <tiny13a.h>
#include <delay.h>

unsigned char a, b, trig;

void main(void)
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

PORTB=0x01;
DDRB=0x06;

PORTB=0x01 PORTB=0b00000001
DDRB=0x06 DDRB=0b00000110

PORTB=0b1;
DDRB=0b110;

TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK0=0x00;
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;
ADCSRA=0x00;

Analog Comparator Control and Status Register – ACSR

• Bit 7 – ACD: Analog Comparator Disable
When this bit is written logic one, the power to the Analog Comparator is switched off.
This bit can be set at any time to turn off the Analog Comparator. This will reduce power
consumption in Active and Idle mode. When changing the ACD bit, the Analog Comparator
Interrupt must be disabled by clearing the ACIE bit in ACSR. Otherwise an interrupt
can occur when the bit is changed.

Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги

Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги

Если вы читаете эту статью, вероятно у вас возникло желание понять, как работают микроконтроллеры, и скорее всего появились вопросы:
1. Какой микроконтроллер выбрать для работы?
2. Какую среду разработки использовать для программирования выбранного микроконтроллера?
3. Как прошивать контроллер, и какие дополнительные приборы и акссесуары нужны для удобной работы с ними?
4. Какую литературу изучать?
5. Где в интернете можно задавать вопросы и получать конкретные ответы?

Попробуем ответить на эти вопросы.

↑ 1. Какой микроконтроллер выбрать для работы?

Большой популярностью у радиолюбителей пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM.

В промышленности, несколько иначе, первое место с большим отрывом занимает Renesas Electronics на втором Freescale, на третьем Samsung, затем идут Microchip и TI, далее все остальные.
Популярность определяется ценой и доступностью, немалую роль играют наличие технической информации и стоимость программного сопровождения.

Мы будем изучать 8-битные микроконтроллеры AVR, семейства ATMEGA 8 и 16 серии. Выбор определился, опять же доступностью, наличием множества любительских разработок, огромным количеством учебного материала. Наличием разнообразных встроенных компонентов и функциональностью этого семейства.

↑ 2. Какую среду разработки использовать для программирования выбранного микроконтроллера?

Для AVR созданы разные интегрированные среды разработки (IDE, Integrated development environment).
IDE – это система программных средств, используемая программистами для разработки программного обеспечения (ПО), в состав которой входят:
• текстовый редактор,
• компилятор и/или интерпретатор,
• средства автоматизации сборки,
• отладчик.

Наиболее распространенные из них AVRStudio, ATmelStudio, WINAVR, CodeVision, IAR Embedded Workbench.
Для того, чтобы писать программы, мы воспользуемся бесплатной IDE ATmelStudio версии 6 и выше.
Скачать Atmel Studio можно с официального сайта после регистрации (регистрация абсолютно бесплатная и ни к чему не обязывает!)

ATmelStudio позволяет создавать проекты, и писать программы как в ассемблере, так и на СИ.

Изначально всегда стоит вопрос: какой язык программирования выбрать, чтобы писать эффективные программы?

Отвечу просто: нужно уметь писать как минимум на двух языках ассемблере и СИ. Ассемблер просто необходим, когда нужно написать быстрые и компактные подпрограммы и макросы, различные драйверы устройств. Но, когда требуется создать объемный проект, построенный на сложных алгоритмах, без знания СИ может быть потрачено очень много времени, особенно в процессе отладки, а если возникнет желание перенести на другую платформу, например PIC18, или STM, может стать неразрешимой проблемой.
Кроме этого, сейчас появились аппаратные вычислительные платформы Arduino, работа с которыми требует знаний языка СИ++.
Поэтому будем писать программы как в ассемблере, так и на СИ.

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

↑ 3. Как прошивать контроллер, и какие дополнительные приборы и акссесуары нужны для удобной работы с ними?

Используем датагорский кит — программатор Project-005 «D-AVR910». Кроме этого, нужно будет приобрести макетные платы, блок питания с выходным напряжением 5 Вольт. Можно в качестве БП с малыми пульсациями использовать наш кит Project-006 «POWER FILTER», применив стабилитрон на 5 Вольт.
Возможно, со временем мы с Игорем предложим проект для сборки отладочной платы.

Программирование микроконтроллеров в AtmelStudio 6. Часть 1. Первые шаги

↑ 4. Какую литературу изучать?

А вот, например:
• Практическое программирование AVR на ассемблере. Ревич, 2011
• 1000 и одна микроконтроллерная схема Вып. 1-2. Рюмик, 2010-2011
• 10 практических устройств на МК AVR Книга 1-2. Кравченко, 2008-2009
• Самоучитель разработчика устройств на МК AVR. Белов, 2008
• МК AVR семейств Tiny и Atmega. Ефстифеев, 2008
• CodeVisionAVR. Пособие для начинающих. Лебедев, 2008
• Микропроцессорное управление устройствами, тиристоры, реле. Белов, 2008
• Аналоговые интерфейсы МК. Стюард, Болл, 2007
• Создаем устройства на МК AVR. Белов, 2007
• МК AVR в радиолюбительской практике. Полный разбор ATTINY2313. Белов, 2007
• Сетевой и межсетевой обмен данными с МК. Иди, 2007
• МК AVR. практикум для начинающих. Хартов, 2007
• Применение AVR Схемы, алгоритмы, программы. Баранов, 2006
• Микроконтроллеры AVR. Вводный курс. Мортон, 2006
• Измерение, управление и регулирование с помощью AVR. Трамперт, 2006
• Программирование на языке С для AVR и PIC МК. Шпак, 2006
• Конструирование устройств на МК. Белов, 2005
• МK — это же просто, тома 1-3. Фрунзе, 2002-2003
• Язык программирования Си, 2-е издание. Керниган, Ритчи, 2009
• Программирование микроконтроллеров ATMEL на языке С. Прокопенко, 2012

↑ 5. Где в интернете можно задавать вопросы и получать конкретные ответы?

Задавать вопросы вы можете на нашем или любом другом форуме, где так или иначе затронуты темы по микроконтроллерам. Главное на форумах правильно формулировать вопросы, чтобы четко получать ответы. Абстрактные вопросы не приветствуются, и скорее всего вместо ответа вы получите жесткую критику, или ваш вопрос останется без внимания!

↑ Теперь рассмотрим поближе нашего фаворита, микроконтроллер ATMEGA 8

• 8-разрядный высокопроизводительный AVR микроконтроллер с малым потреблением
• Прогрессивная RISC архитектура
130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл
32 8-разрядных рабочих регистра общего назначения
Полностью статическая работа
Приближающаяся к 16 MIPS (при тактовой частоте 16 МГц) производительность
Встроенный 2-цикловый перемножитель

• Энергонезависимая память программ и данных
8 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)
Обеспечивает 1000 циклов стирания/записи
Дополнительный сектор загрузочных кодов с независимыми битами блокировки
Обеспечен режим одновременного чтения/записи (Read-While-Write)
512 байт EEPROM
Обеспечивает 100000 циклов стирания/записи
1 Кбайт встроенной SRAM
Программируемая блокировка, обеспечивающая защиту программных средств пользователя

• Встроенная периферия
Два 8-разрядных таймера/счетчика с отдельным предварительным делителем, один с режимом сравнения
Один 16-разрядный таймер/счетчик с отдельным предварительным делителем и режимами захвата и сравнения
Счетчик реального времени с отдельным генератором
Три канала PWM
8-канальный аналого-цифровой преобразователь (в корпусах TQFP и MLF)
6 каналов с 10-разрядной точностью
2 канала с 8-разрядной точностью
6-канальный аналого-цифровой преобразователь (в корпусе PDIP)
4 канала с 10-разрядной точностью
2 канала с 8-разрядной точностью
Байт-ориентированный 2-проводный последовательный интерфейс
Программируемый последовательный USART
Последовательный интерфейс SPI (ведущий/ведомый)
Программируемый сторожевой таймер с отдельным встроенным генератором
Встроенный аналоговый компаратор

Читать:
Как удерживаются магниты на веге мп120

• Специальные микроконтроллерные функции
Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания
Встроенный калиброванный RC-генератор
Внутренние и внешние источники прерываний
Пять режимов пониженного потребления: Idle, Power-save, Power-down, Standby и снижения шумов ADC

• Выводы I/O и корпуса
23 программируемые линии ввода/вывода
28-выводной корпус PDIP, 32-выводной корпус TQFP и 32-выводной корпус MLF

• Рабочие напряжения
2,7 — 5,5 В (ATmega8L)
4,5 — 5,5 В (ATmega8)

• Рабочая частота
0 — 8 МГц (ATmega8L)
0 — 16 МГц (ATmega8)

отличия ATMEGA16 от 8
• 16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash)

• Интерфейс JTAG (совместимый с IEEE 1149.1)
Возможность сканирования периферии, соответствующая стандарту JTAG
Расширенная поддержка встроенной отладки
Программирование через JTAG интерфейс: Flash, EEPROM памяти, перемычек и битов блокировки

• Четыре канала PWM / ШИМ

• 8-канальный 10-разрядный аналого-цифровой преобразователь
8 несимметричных каналов
7 дифференциальных каналов (только в корпусе TQFP)
2 дифференциальных канала с программируемым усилением в 1, 10 или 200 крат (только в корпусе TQFP)

• Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

• 32 программируемые линии ввода/вывода

• 40-выводной корпус PDIP и 44-выводной корпус TQFP

↑ AtmelStudio

Если Вы только начинаете, то нужно скачать и установить программу AtmelStudio с официальной страницы atmel.com
После установки программы AtmelStudio можно приступить к созданию проекта.
Проект – это ваша программа, которую вы будете писать, отлаживать и прошивать, после компиляции, в память микроконтроллера.

Чтобы создать проект, надо открыть программу, появиться такая заставка,

и откроется страница создания проекта

Чтобы создать новый проект, нужно кликнуть по «New Project…»
В этом случае откроется новое окно, где можно выбрать язык программирования, название проекта, его месторасположение, название пакета с файлами проекта и возможность создания каталога для дальнейшего использования в других перекрестных проектах. Чтобы создать проект, где мы будем программировать в ассемблере, нужно выбрать — Assembler, после этого поменяем название проекта, его расположение, и выбираем ОК.

Появится следующее окно

Выбираем “megaAVR, 8-bit” и находим нужный нам микроконтроллер, мы выбрали ATmega8. В правой части заставки появляется список устройств, работающих с этим микроконтроллером, один из которых мы можем подключить. Выбираем ОК.

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

Выбираем семейство микроконтроллеров “megaAVR, 8-bit”

Далее, наименование микроконтроллера и выбираем ОК.

Появляется страница редактора текста. Здесь мы можем программировать в СИ.

У нас есть возможность загрузить демонстрационные проекты для работы с платами разработки, выпускаемыми корпорацией ATMEL.
Для этого нужно при создании проекта выбрать пункт “New Examle Project from ASF…”

Откроется окно следующего вида:

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

Так же есть возможность управлять проектом, для этого нужно выбрать название проекта под пунктом “Recent Projects” и кликнуть по правой клавише мыши. Появится меню из 3-х пунктов:

Open Project – запускает проект.
Open Containing Folder – просмотор содержимого папки проекта
Remove From List – удаление из списка проектов. Сам проект не удаляется, и попытка создать новый проект с таким же именем выдаст ошибку. Полностью удалить проект можно в папке, где он был создан.

Как создается новый проект и про перенос старых проектов, созданных в AVR Studio 4, можно посмотреть на видеоролике от Александра Писанца

Чем программировать cpu122 1r

Особенности разгона современных процессоров Intel для LGA1150

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

GECID Intel OC

Таким образом, чтобы там не говорили скептики, оверклокинг на сегодняшний день не является просто развлечением, а несет реальную практическую пользу. В этих словах мы уже неоднократно убеждались, тестируя процессоры разной производительности. Однако в рамках обычного обзора трудно рассказать обо всех нюансах, касающихся процесса оптимизации параметров. Поэтому данному вопросу мы решили посвятить отдельный материал, вернее сказать, цикл материалов. Первой его частью станет эта статья, где мы постараемся в полной мере раскрыть особенности разгона современных процессоров компании Intel. Речь пойдет о моделях, основанных на микроархитектуре Intel Haswell: семействах Intel Haswell, Intel Haswell Refresh, Intel Devil’s Canyon и Intel Haswell-E.

Способы разгона

Суть оптимизации параметров процессора в подавляющем большинстве случаев сводится к увеличению его тактовой частоты. В современных решениях от Intel она вычисляется по формуле:

CPU Freq = CPU Ratio × CPU Cores Base Freq

  • CPU Freq − частота процессора;
  • CPU Ratio − процессорный множитель;
  • CPU Cores Base Freq − базовая частота процессорных ядер.

В связи с этим можно выделить три основные способа их разгона:

  • путем изменения процессорного множителя;
  • путем изменения опорной частоты;
  • путем одновременного изменения процессорного множителя и опорной частоты.

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

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

GECID Intel OC

Как правило, они реализованы на уровне драйвера.

GECID Intel OC

. или же доступны в виде специального раздела в меню BIOS.

GECID Intel OC

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

Вроде бы, основная цель достигнута − производительность процессора увеличена, и на этом материал можно заканчивать. Но у автоматического способа разгона есть много недостатков, которые выявляются в процессе повседневной эксплуатации. Во-первых, он нередко завышает многие параметры для обеспечения стабильной работы системы, тем самым излишне нагружая другие компоненты ПК. В результате конфигурация потребляет больше энергии, требует лучшего охлаждения и издает дополнительный шум. Во-вторых, материнская плата содержит лишь несколько профилей оверклокинга. Поэтому разогнать процессор до той отметки, которая требуется именно вам, не всегда получится. Придется довольствоваться только значениями, предусмотренными производителем. Более того, в некоторых случаях у системы может попросту не получиться подобрать необходимые параметры (например, при использовании решения с заблокированным множителем) и никакого ощутимого прироста от процедуры оверклокинга вы не получите. В-третьих, использование определенных функций вместе с автоматическим разгоном может быть затруднено. Особенно это касается тонкой настройки режимов энергосбережения. В-четвертых, в автоматическом режиме вы никогда не сможете достичь тех показателей и результатов, которые будут продемонстрированы при ручной оптимизации параметров.

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

Особенности функционирования современных процессоров Intel. Анализ работы структурных элементов, задействованных во время процедуры разгона

Более детально об особенностях микроархитектуры Intel Haswell и Intel Haswell-E можно узнать, перейдя по соответствующим ссылкам. Здесь же внимание будет акцентировано на структурных элементах, касающихся разгона.

GECID Intel OC

Самым главным из них является базовая (или опорная) частота тактового генератора (BCLK), которая по умолчанию равна 100 МГц. Как видно из схемы, все узлы процессора (процессорные ядра, кэш-память последнего уровня, встроенное графическое ядро, кольцевая шина, контроллеры памяти, шин PCI Express и DMI) так или иначе с ней связаны. Поэтому любое изменение опорной частоты неминуемо отразится на их работе. Причем, если процессорные ядра без проблем переносят такую процедуру, то другие узлы процессора и компоненты ПК могут терять стабильность своего функционирования при значении базовой частоты, которое всего лишь на несколько мегагерц превышает отметку в 100 МГц. Иными словами, разгон процессора по базовой частоте, по сути, просто лимитируется остальными узлами системы.

Чтобы решить сложившуюся проблему, в микроархитектуру Intel Haswell было внедрено понятие CPU Strap − множитель опорной частоты процессорных ядер. Таким образом, имеем следующее:

CPU Cores Base Freq = CPU Strap × BCLK Freq

  • CPU Cores Base Freq − базовая частота процессорных ядер;
  • CPU Strap − множитель опорной частоты процессорных ядер;
  • BCLK Freq − опорная частота BCLK.

GECID Intel OC

Как правило, для параметра CPU Strap доступны четыре значения: 1,00; 1,25; 1,66 и 2,5. Но и их хватит с головой для максимального разгона процессора по опорной частоте. Поскольку при стандартном значении BCLK (100 МГц) базовая частота процессорных ядер может достигать 250 МГц при использовании максимального множителя CPU Strap. То есть теоретически скорость процессора можно увеличить в 2,5 раза, не меняя его множителя. Владельцы решений из серий Intel Sandy Bridge / Ivy Bridge о таком могли только мечтать.

Правда, потенциальным покупателям современных моделей на основе микроархитектуры Intel Haswell тоже не стоит сильно обольщаться. Параметр CPU Strap доступен только для процессоров с разблокированным множителем (с индексом «K» в конце названия). Иными словами, обычные решения в данном случае тоже не смогут похвастать большим оверклокерским потенциалом − максимум +5. +10 МГц к опорной частоте BCLK без потери стабильности работы всей системы, что даст прибавку в скорости в виде дополнительных 150 − 400 МГц в зависимости от процессорного множителя.

GECID Intel OC

Отметим, что параметр CPU Strap можно использовать двумя способами. В первом случае его значение фиксируется вручную, а во втором − подбирается автоматически материнской платой на основе желаемой базовой частоты опорных ядер процессора. Допустим, мы хотим, чтобы наша частота CPU Cores Base Freq была равна 150 МГц. На основе этого значения материнская плата сама определит, что параметр CPU Strap нужно зафиксировать на уровне 1,66, что даст нам скорость BCLK (BCLK Freq) на уровне 90,3 МГц (150 МГц / 1,66 = 90,3 МГц). Правда, стоит понимать, что стабильная работа системы при этом тоже не гарантируется. Зато так проще производить оптимизацию, поскольку фактически мы меняем только один параметр (скорость работы процессорных ядер). Тогда как в ручном режиме придется производить манипуляцию уже с двумя настройками (CPU Strap и базовая частота BCLK).

Теперь давайте вкратце пройдемся по узлам процессора и комплектующим ПК, скорость работы которых тактируется базовой частотой BCLK. Самыми чувствительными к изменению этого значения являются встроенные в процессор контроллеры памяти, линий PCI Express и шины DMI, служащие для «общения» с внешними компонентами системы (оперативной памятью, картами расширения и чипсетом соответственно). Поэтому очень важно позаботиться об их стабильной работе. Достигается это с помощью увеличения напряжения питания на конкретных узлах, а также путем отключения энергосберегающих технологий (более детально об этом читайте в следующих разделах).

GECID Intel OC

В современных процессорах часто на кристалле распаивается графическое ядро. Скорость его работы рассчитывается по формуле:

iGPU Freq = iGPU Ratio × BCLK Freq / 2

  • iGPU Freq − частота встроенного графического ядра;
  • iGPU Ratio − множитель встроенного графического ядра;
  • BCLK Freq − опорная частота BCLK.

Из-за архитектурных особенностей, встроенное графическое ядро чуть лучше «переваривает» повышенные значения базовой частоты BCLK, особенно при увеличении напряжения на нем. Однако в большинстве случаев в составе современных ПК используется дискретная видеокарта, в связи с чем встроенная графика автоматически деактивируется. Тем самым убирается один из компонентов, который может лимитировать разгон процессора. Еще одной положительной стороной отказа от использования iGPU является снижение нагрева процессора. К примеру, разгон встроенного графического ядра Intel HD Graphics 4600 с номинальных 1250 МГц до 1700 МГц приводит к росту энергопотребления модели Intel Core i7-4770K в среднем на 40 Вт.

GECID Intel OC

Для расчета скорости оперативной памяти используется следующая формула:

Memory Freq = Memory Ratio × BCLK Freq × Memory Strap

  • Memory Freq − частота оперативной памяти;
  • Memory Ratio − множитель оперативной памяти;
  • BCLK Freq − опорная частота BCLK;
  • Memory Strap − делитель между опорной частотой и скоростью работы оперативной памяти.

Как видим, в данном случае мы также имеем два множителя (или делителя, смотря относительно каких величин анализировать). Первый (Memory Ratio) задает непосредственно коэффициент умножения для скорости подсистемы оперативной памяти. Второй же (Memory Strap) указывает на соотношение опорной частоты BCLK к базовой частоте модулей оперативной памяти. По сути, этот параметр является аналогом CPU Strap, только для оперативной памяти. Правда, в данном случае доступно уже меньше значений (в основном только 1,00 и 1,33). Использование значения 1,33 позволяет устанавливать более низкий множитель (Memory Ratio) и запускать память с меньшими таймингами. Таким способом можно улучшить показатели при прохождении определенных синтетических тестов, критических к задержкам модулей. Но с другой стороны, от этого страдает стабильность работы всего ПК. Поэтому при разгоне процессора оптимальное соотношение опорной частоты BCLK к базовой скорости планок оперативной памяти все же будет 1,00.

GECID Intel OC

Последним важным структурным компонентом, напрямую зависящим от опорной частоты BCLK, является блок Uncore, объединяющий в себе кольцевую шину и кэш-память последнего уровня процессора. В микроархитектуре Intel Haswell их пропускная способность существенно увеличена (примерно в 2 раза), поэтому нет больше необходимости использовать модуль Uncore на высоких частотах. Кроме того, разработчики добавили возможность управлять его работой независимо от процессорных ядер. То есть эти два структурных блока (стек физических ядер и кэш-память) могут функционировать на разных частотах. Большинство оверклокеров сходятся во мнении, что при сильном разгоне процессора, скорость Uncore лучше устанавливать примерно на 300 − 500 МГц меньше частоты самого процессора. Хотя в некоторых синтетических бенчмарках синхронизация этих показателей, наоборот, позволяет добиться более высоких результатов. Как бы там ни было, нужно помнить, что оптимизация на уровне скорости блока Uncore осуществляется не для достижения стабильности работы системы после разгона процессора, а для увеличения показателей производительности.

Расчет частоты кольцевой шины и скорости кэш-памяти осуществляется по следующей формуле:

Uncore Freq = Uncore Ratio × BCLK Freq

  • Uncore Freq − скорость работы модуля Uncore;
  • Uncore Ratio − множитель частоты работы модуля Uncore;
  • BCLK Freq − опорная частота BCLK.

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

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

Поэтому рекомендуем запастись терпением и разобраться в электротехнической части процессоров, основанных на микроархитектуре Intel Haswell.

GECID Intel OC

Как видно из представленной выше схемы, их ключевой особенностью является отказ от полностью внешнего регулятора питания, ведь часть его перекочевала внутрь процессора (iVR). Теперь на входе процессора модуль VRM (расположен на материнской плате) формирует одно напряжение Vccin, которое в дальнейшем превращается в номиналы, необходимые для питания конкретных узлов. Такое техническое решение позволило увеличить качество выходных напряжений (в частности, уменьшить пульсации) и повысить эффективность самого преобразователя. С другой стороны, iVR занимает часть полезного пространства на кристалле и продуцирует дополнительное тепло. Но это уже особенности микроархитектуры Intel Haswell, которые не имеют прямого отношения к процедуре разгона процессора.

Итак, какие же нам напряжения пригодятся во время оптимизации параметров современных решений от Intel? Для лучшей наглядности приведем их в виде списка:

  • Vccin (VRIN) − входное напряжение питания процессора;
  • Vcore − напряжение питания на ядрах процессора;
  • Vring (Vuncore, Vcache) − напряжение питания на модуле Uncore (кольцевой шине и кэш-памяти последнего уровня);
  • Vigpu (Vgfx) − напряжение питания на встроенном в процессор графическом ядре;
  • Vsa (VCCSA) − напряжение питания на системном агенте, которое, по сути, является напряжением питания на контроллере памяти (используется при увеличении скорости работы подсистемы оперативной памяти);
  • Vioa / Viod − напряжения питания на узлах, связанных с работой встроенного контроллера памяти (используются при увеличении скорости работы подсистемы оперативной памяти);
  • Vddq (Vdram) − напряжение питания на модулях оперативной памяти.

Разбираемся с настройками меню BIOS

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

В данном разделе мы постараемся по максимуму осветить настройки BIOS, которые могут пригодиться во время оверклокинга, а также дать конкретные рекомендации по выбору значений для тех или иных параметров. Хотим обратить ваше внимание, что основной акцент сделан на разгоне процессора, а процедуре оптимизации параметров той же самой подсистемы оперативной памяти будет посвящена отдельная статья. Ну и напоследок хочется сказать, что приведенные ниже рекомендации в основном касаются неэкстремального оверклокинга с применением традиционных систем охлаждения (воздушный кулер, СВО).

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

Если после входа в BIOS загрузилось упрощенное меню, советуем сразу же переключиться в расширенный режим. Это сделает доступными все настройки, касающиеся разгона комплектующих и мониторинга основных показателей состояния системы. Как правило, интересующие нас опции группируются на отдельных вкладках, носящих характерные названия: «OC Tweaker» (ASRock), «Extreme Tweaker» (ASUS), «M.I.T.» (GIGABYTE), «OC» (MSI).

GECID Intel OC

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

Рекомендации по использованию

BCLK Frequency (ASUS), BCLK/PCIE Frequency (ASRock), Host/PCIe Clock Frequency (GIGABYTE), CPU Base Clock (MSI)

Задает базовую (опорную) частоту BCLK

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

CPU Core Ratio (ASUS / GIGABYTE), CPU Ratio (ASRock), Adjust CPU Ratio (MSI)

Задает процессорный множитель

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

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

CPU Strap (ASUS), Processor Base Clock / Gear Ratio (GIGABYTE), Adjust CPU Base Clock Strap

Задает делитель между опорной частотой BCLK и базовой частотой процессорных ядер

Для неэкстремального разгона, как правило, можно ограничиться значениями [1,00] и [1,25]. Поскольку, чем больше значение базовой частоты процессорных ядер, тем меньший процессорный множитель удастся выставить до появления проблем со стабильностью работы системы.

CPU Base Clock (GIGABYTE)

Изменяет опорную частоту процессорных ядер

Данная настройка доступна не на всех платах. Суть ее заключается в том, что вы изначально меняете только опорную частоту процессорных ядер, а такие параметры как скорость BCLK и делитель CPU Strap подбираются автоматически. Такой способ является более удобным и простым, поэтому если в меню BIOS присутствует соответствующая опция, рекомендуем ею воспользоваться.

Max. CPU Cache Ratio (ASUS), CPU Cache Ratio (ASRock), Uncore Ratio (GIGABYTE), Adjust Ring Ratio (MSI)

Устанавливает множитель частоты модуля Uncore (кольцевой шины и кэш-памяти последнего уровня)

Значение стоит подбирать так, чтобы в случае незначительного разгона процессора частота работы модуля Uncore была примерно на 0 − 300 МГц меньше скорости процессорных ядер, а при сильном разгоне − меньше на 300 − 500 МГц.

DRAM Frequency (ASRock / ASUS, MSI)

Задает скорость работы оперативной памяти

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

System Memory Multiplier (GIGABYTE)

Задает множитель базовой частоты оперативной памяти

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

BCLK Frequency: DRAM Frequency Ratio (ASUS), DRAM Reference Clock (MSI)

Задает делитель между опорной частотой BCLK и базовой частотой оперативной памяти

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

В обычной же ситуации рекомендуем использовать значение

Max. CPU Graphics Ratio (ASUS), Adjust GT Ratio (MSI)

Задает множитель базовой частоты встроенного графического ядра

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

GT Frequency (ASRock), Processor Graphics Clock (GIGABYTE)

Задает частоту встроенного графического ядра

Используется для тех же целей, что и опции Max. CPU Graphics Ratio (ASUS), Adjust GT Ratio (MSI). Разница кроется лишь в том, что здесь частота задается не через множитель, а явно.

Если использование встроенной графики не планируется, лучше оставить значение

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

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

  • В автоматическом режиме, когда значения устанавливаются по умолчанию.
  • В ручном режиме, когда точное значение напряжения питания вводится вручную.
  • В offset-режиме, когда точное значение напряжения питания задается вручную с помощью offset-параметра (величина, на которую будет увеличено/уменьшено номинальное напряжение питания).
  • В адаптивном режиме, когда напряжение питания задается вручную с помощью offset-параметра и/или специально отведенной для этих целей опции. При этом оно может динамически меняться в зависимости от частоты работы узла и характера текущей нагрузки на него для улучшения стабильности работы системы или уменьшения энергопотребления. Данный способ рекомендуем использовать для постоянной работы с разогнанным процессором, после того как в ручном режиме уже были подобраны оптимальные настройки.

GECID Intel OC

Для некоторых напряжений питания доступен только один способ их регулировки, для других − сразу все четыре. Какой из них использовать, зависит только от ваших личных предпочтений и возможностей материнской платы. Мы же для упрощения в таблице укажем названия лишь для ручного способа (исключением являются те опции, для которых предусмотрен только offset-режим) установки значений напряжения питания.

Рекомендации по использованию

CPU Input Voltage (ASRock / ASUS), CPU VRIN External Override (GIGABYTE), VCCIN Voltage (MSI)

Задает входное напряжение питание процессора (Vccin / VRIN)

Данное значение всегда должно быть выше остальных напряжений питания, использующихся узлами процессора. В большинстве случаев для неэкстремального оверклокинга достаточно значения, лежащего в пределах 1,7 − 2,0 В. Для использования разогнанного процессора на постоянной основе рекомендуем не превышать отметки 2,2 В.

CPU Core Voltage Override (ASUS), Vcore Override Voltage (ASRock), CPU Vcore Voltage (GIGABYTE), CPU Core Voltage (MSI)

Задает напряжение питания на процессорных ядрах (Vcore)

В большинстве случаев для неэкстремального оверклокинга достаточно значения, лежащего в пределах 1,10 − 1,35 В. Для использования разогнанного процессора на постоянной основе рекомендуем не превышать отметки 1,38 В.

CPU Cache Voltage Override (ASUS), CPU Cache Override Voltage (ASRock), CPU RING Voltage (GIGABYTE, MSI)

Задает напряжение питания на модуле Uncore: кольцевой шине и кэш-памяти последнего уровня (Vring / Vuncore / Vcache)

Поднятие этого напряжения питания даже без увеличения частоты Uncore часто помогает достигнуть стабильной работы процессора при разгоне. В большинстве случаев для неэкстремального оверклокинга достаточно значения, лежащего в пределах 1,10 − 1,25 В. Для использования разогнанного процессора на постоянной основе рекомендуем не превышать отметки 1,30 В.

CPU Graphics Voltage Override (ASUS), GT Voltage Offset (ASRock), CPU Graphics Voltage (GIGABYTE), CPU GT Voltage (MSI)

Задает напряжение питания на встроенном в процессор графическом ядре (Vigpu / Vgfx)

Следует изменять только в случае разгона встроенного в процессор графического ядра. Как правило, достаточно значения, лежащего в пределах 0,90 − 1,35 В. Дальнейшее увеличение напряжения не оправдано, поскольку практически не влияет на стабильность работы iGPU на высоких частотах.

CPU System Agent Voltage Offset (ASUS / GIGABYTE), System Agent Voltage Offset (ASRock), CPU SA Voltage Offset (MSI)

Задает напряжение питания на системном агенте, которое, по сути, является напряжением питания на контроллере памяти (Vsa / VCCSA)

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

CPU Analog I/O Voltage Offset (ASRock / ASUS / GIGABYTE / MSI)

Задает напряжения питания на узлах, связанных с работой встроенного контроллера памяти (Vioa / Viod)

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

CPU Digital I/O Voltage Offset (ASRock / ASUS / GIGABYTE / MSI)

DRAM Voltage (ASRock / ASUS / GIGABYTE / MSI)

Задает напряжение питания на модулях оперативной памяти

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

PCH Core Voltage (ASUS), PCH 1.05V Voltage (ASRock / MSI), PCH Core (GIGABYTE)

Задает напряжение питания на чипсете

Изменение этого напряжения питания позволяет улучшить стабильность работы системы при увеличении опорной частоты BCLK. Как правило, достаточно выставить значение в пределах 1,05 − 1,15 В.

PCH VLX Voltage (ASUS), PCH 1.5V Voltage (ASRock / MSI), PCH IO (GIGABYTE)

Задает напряжение питания на модуле в чипсете, отвечающего за обмен данными между процессором и чипсетом посредством шины DMI

С помощью данного параметра можно улучшить стабильность работы системы при изменении частоты шины DMI (а иногда и опорной частоты BCLK). Экспериментальным путем установлено, что чем выше ее скорость, тем ниже должно быть значение этого напряжения и наоборот. К примеру, для частоты DMI свыше 120 МГц нужно выставлять значение близкое к 1,05 В, а для частоты меньше 90 МГц − около 1,70 В.

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

Дополнительные настройки, позволяющие добиться стабильности работы процессора после его разгона

GECID Intel OC

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

Рекомендации по использованию

Load Line Calibration (ASUS), CPU Load Line Calibration (ASRock), CPU VRIN Loadline Calibration (GIGABYTE), CPU Vdroop Offset Control (MSI)

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

При стандартных параметрах или при их незначительной оптимизации стоит устанавливать значения [Medium], [Standart] или [High] (если значения в процентах, то [+25%] или [+50%]), а при экстремальном разгоне есть смысл использовать и более агрессивные настройки − [Ultra High] и [Extreme] (если значения в процентах, то [+75%] или [+100%]). Однако стоит учитывать тот факт, что чем выше значение, тем большим будет нагрев силовых элементов модуля VRM и самого процессора. К тому же выбор неправильного параметра может, наоборот, привести к слишком завышенному напряжению на процессоре, что, опять же, негативным образом скажется на его температуре. Корректность и точность работы технологии Load Line Calibration также зависит и от уровня материнской платы.

PLL Selection (ASUS), Filter PLL Frequency (ASRock), CPU PLL Selection (GIGABYTE), CPU PCIE PLL (MSI)

Отвечает за выбор метода фильтрации сигнала тактового генератора опорной частоты BCLK

При поднятии опорной частоты BCLK рекомендуется выбирать метод [SB PLL]

Filter PLL (ASUS / MSI), Filter PLL Level (GIGABYTE)

Позволяет активировать дополнительные методы фильтрации сигнала тактового генератора опорной частоты BCLK

При сильном поднятии опорной частоты BCLK (свыше 170 МГц) следует устанавливать параметр [High BCLK], в противном случае − оставлять значение по умолчанию (

BCLK Amplitude (ASUS / MSI)

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

Увеличение этого значения рекомендуется при сильном поднятии опорной частоты BCLK.

CPU Spread Spectrum (ASUS), Spread Spectrum (ASRock, MSI, GIGABYTE)

Изменяет форму сигнала на системной шине (BCLK), благодаря чему уменьшается уровень электромагнитного излучения и наводок от компонентов системы

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

EPU Power Saving Mode (ASUS), Power Saving Mode (ASRock), CPU Internal VR Efficiency Management, Intel Turbo Boost Technology, Intel SpeedStep Technology, EIST Technology (ASUS / ASRock / GIGABYTE / MSI) и другие

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

Для достижения максимальных результатов во время разгона комплектующих рекомендуется выключать все эти функции (значение [Disabled]).

CPU Integrated VR Current Limit (ASUS), Primary Plane Current Limit (ASRock), Core Current Limit (GIGABYTE), CPU Current Limit (MSI)

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

В зависимости от степени разгона, следует устанавливать более высокие значения, что отодвинет порог срабатывания «троттлинга» (пропуск тактов) при достижении максимальной величины тока, проходящего через встроенный регулятор питания.

Long Duration Package Power Limit (ASUS / ASRock / GIGABYTE / MSI)

Задает значение максимальной мощности, потребляемой процессором

В зависимости от степени разгона следует устанавливать более высокие значения, что отодвинет порог срабатывания «троттлинга» (пропуск тактов) при достижении максимальной мощности, потребляемой процессором. По умолчанию этот показатель равен TDP процессора.

Short Duration Package Power Limit (ASUS / ASRock / GIGABYTE / MSI)

Задает значение максимально возможного энергопотребления процессора при очень кратковременных нагрузках (не более 10 мс)

Следует устанавливать такое значение, которое не превышает показатель Long Duration Package Power Limit больше, чем на 25%.

CPU Current Capability (ASUS), Thermal Feedback (ASUS), CPU Integrated VR Fault Management (ASUS), CPU Over Voltage Protection (MSI), CPU Over Current Protection (MSI), CPU VRM Over Temperature Protection (MSI), CPU VRIN Current Protection (GIGABYTE), CPU VRIN Thermal Protection (GIGABYTE), CPU VRIN Protection (GIGABYTE) и другие

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

Данные опции фактически являются защитами от повреждения процессора и других компонентов системы из-за подачи высокого напряжения. Во время оверклокинга допустимые значения стоит увеличивать (либо вовсе отключать некоторые опции), чтобы избежать ситуации, когда материнская плата будет ограничивать возможности разгона.

Intel Adaptive Thermal Monitor (ASUS / ASRock / GIGABYTE / MSI)

Позволяет управлять механизмом защиты процессоров Intel от перегрева

Во время разгона процессора данную опцию лучше отключать (значение [Disabled]), а его нагрев мониторить вручную.

От теории к практике. Разгон процессоров, основанных на микроархитектуре Intel Haswell, на примере модели Intel Core i7-4770K

А теперь пришло время показать, как использовать полученные теоретические знания на практике. Для этого был выбран процессор Intel Core i7-4770K с разблокированным множителем. Остальная конфигурация тестового стенда приведена в таблице:

ASRock Fatal1ty Z97X Killer (версия BIOS 2.00)

Intel Core i7-4770K

SilverStone Heligon SST-HE01 (максимальная скорость вращения вентилятора)

2 x DDR3-2400 TwinMOS TwiSTER 9DHCGN4B-HAWP

AMD Radeon HD 6970

Seagate Barracuda 7200.12 ST3500418AS

Чтобы показать зависимость между параметрами системы во время разгона процессора, были проведены три серии тестов для разных значений опорной частоты процессорных ядер (100, 125 и 166 МГц). В каждом случае мы постепенно увеличивали их множитель и искали минимально возможные показатели напряжения входного питания (VRIN) и напряжения на процессорных ядрах (Vcore), при которых ПК еще сохранял стабильность своей работы (проверка осуществлялась путем прогона стресс-теста). Для комплексного анализа эффективности оптимизации параметров параллельно осуществлялась фиксация нагрева процессора (выбиралась температура самого горячего ядра) и уровень входного энергопотребления (всей конфигурации от розетки). Естественно, все показания снимались под максимальной нагрузкой на CPU.

Опорная частота процессорных ядер − 100 МГц

CPU122-1R AC/DC/RLY

ПЛК серии CPU122 унаследовали экономические характеристики серии UN120. Он может соответствовать промышленным или гражданским приложениям (таким как здания и противопожарная защита) в пределах 14 баллов и является идеальным выбором для модернизации и преобразования традиционных систем управления реле времени.

· В корпус CPU122 встроены 8-канальный цифровой вход/6-канальный (транзисторный/релейный) выход.

· Пространство программы составляет 6 КБ, а пространство данных — 2 КБ. Поддержка программирования и отладки MicroWIN.

1 стандартный порт связи PPI, свободный порт хоста и протокол связи MODBUS-RTU

Программатор CH341A. Как пользоваться и поддерживаемые чипы


Программатор микросхем BIOS 24 и 25 серии CH341A Pro

Программатор CH341A Pro используется для программирования микросхем BIOS компьютеров, ноутбуков, видеокарт, мультимедийных плееров, памяти телевизоров, ЖК-дисплеев, маршрутизаторов, игровых приставок, спутниковых ресиверов и др.

Купить можно по этой ссылке

Как пользоваться программатором CH341A Pro:

Для начала использования программатора необходимо установить драйвер и программное обеспечение:

Скачайте ПО (CH341A Programmer версии 1.3) и драйвер по ссылке

Системные требования ПО:
OC: Win98, WinME, WIN2K, WinXP, Vista, Win7, Win8, Win10 (32-64 bit)

Распакуйте скачанный архив и запустите программу CH341A_130.exe

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

Драйвер к программатору может установится автоматически. Если Windows не удалось установить драйвер, найдите в скаченном архиве папку CH341Parallel_driver_support WIN7 и установите драйвер из нее.

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

Чтобы запрограммировать необходимую микросхему на ZIF панели устройства, нужно открыть пазы для её установки, подняв фиксаторную ручку. Установить микросхему согласно ключу нарисованному на программаторе. Зажать фиксаторной ручкой микросхему в пазах. Cм. рисунок 1.1 (правильная установка микросхемы BIOS 25 серии)

Рис. 1.1 (правильная установка микросхемы BIOS 25 серии)

Если нужно прошить микросхемы 25-й серии, в корпусе SOP8 или SOP16, на плате программатора предусмотрены контактные площадки для микросхем в таких корпусах. Можно припаять микросхему к контактной площадке (см рисунок 1.2.) или просто прижать прищепкой к контактам. Так же можно воспользоваться дополнительной платой (идет в комплекте с программатором) и устанавливать/припаять микросхему на нее (см. рисунок. 1.3.)

Рис. 1.2. Рис. 1.3

Запрограммировать микросхему 25-й серии, в корпусе SOP8 можно прямо на материнской плате без выпаивания. Для этого можно воспользоваться прищепкой-переходником (в комплекте не идет. приобретается отдельно) (см. рисунок 1.4.) Красный провод на шлейфе прищепки — контакт который должен соответствовать первой ножке микросхемы (на самой микросхеме обычно обозначена точкой). При таком способе прошивки, плату нужно обязательно обесточить и вынуть батарейку BIOS.

В программаторе есть возможность внутрисхемного программирования с помощью ISP интерфейса (этот метод программирования описываться здесь не будет, информацию можно найти на форумах в интернете)

Перемычку для переключения режимов программирования не трогаем! Даже когда программируем без выпаивания через прищепку. Она должна соединять 1 и 2 контакты. Убираем перемычку только в случае если используем ISP интерфейс.

Итак приступаем непосредственно к программированию:

ПОСЛЕ. установки/подключения микросхемы — подключите программатор к USB порту (возможно при подключении потребуется подождать пока Windows установит драйвер на устройство) и запустите программу CH341A Programmer. Интерфейс программы можно переключить на русский язык.

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

Далее нужно будет выбрать название микросхемы, для чего можно нажать кнопку «ДЕТЕКТ» (программа сама предложит наиболее подходящие микросхемы) или выполнить поиск вручную через кнопку «ПОИСК».

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

Интерфейс программы интуитивно понятен и прост:

Поддерживаемые программатором CH341A Pro микросхемы 25 серии

AMIC
A25L512 A25L05P A25L10P A25L010 A25L020 A25L20P A25L40P A25L040 A25L080 A25L80P A25L016 A25L16P A25L032

ATMEL
AT25F512 AT25F512B AT25F512A AT25FS010 AT25F1024 AT25F1024A AT25F2048 AT25DF021 AT25F4096 AT25FS040 AT25DF041A AT25DF321A AT26DF321 AT25DF321 AT25DF641

COMMON
25X005 25X05 25X10 25X20 25X40 25X80 25X16 25X32 25X64 25X128 25X256 25X512 25X1024 25X2048

EON
EN25F05 EN25P05 EN25LF05 EN25F10 EN25LF10 EN25D10 EN25P10 EN25F20 EN25D20 EN25LF20 EN25F40 EN25D40 EN25LF40 EN25Q80 EN25D80 EN25F80 EN25P80 EN25T80 EN25B16T EN25T16 EN25B16 EN25D16 EN25F16 EN25Q16 EN25P32 EN25Q32 EN25F32 EN25B32 EN25B32T EN25Q64 EN25B64 EN25F64 EN25B64T EN25F128 EN25Q128

ES
ES25P10 ES25P20 ES25M40A ES25M40 ES25P40 ES25M80 ES25P16 ES25M80A ES25P32 ES25P80 ES25M16 ES25M16A

ESMT (только чтение)
F25L04UA F25L16PA F25L004A F25L32QA F25L08PA F25L32PA F25L008A F25L016A

GIGADEVICE
GD25Q512 GD25Q10 GD25Q20 GD25F40 GD25D40 GD25Q80 GD25D80 GD25T80 GD25F80 GD25Q16 GD25Q32 GD25Q64 GD25Q128

KH
25L8036D

MXIC
MX25V512 MX25L4005A MX25L1635D MX25L3237D MX25L6455E MX25L12845E MX25L512 MX25V4035 MX25L1605D MX25L3225D MX25L6408D MX25L1005 MX25V4005 MX25L1608D MX25L3205D MX25L6406E MX25L2005 MX25V8005 MX25L3235D MX25L3206E MX25L6445E MX25L8035 MX25L8005 MX25L3208D MX25L6405D MX25L12805D

NEXFLASH
NX25P10 NX25P20 NX25P40 NX25P80 NX25P16 NX25P32

NSHINE
MS25X05 MS25X16 MS25X10 MS25X32 NS25X20 MS25X64 NS25X40 MS25X128 MS25X80

PMC
PM25LV512A PM25LV016B PM25LV010A PM25LV020 PM25LV040 PM25LV080B

SAIFUN
SA25F005 SA25F160 SA25F010 SA25F320 SA25F020 SA25F040 SA25F080

SPANSION
S25FL004A S25FL032A S25FL040A S25FL064A S25FL008A S25FL128P S25FL160 S25FL129P S25FL016A S25FL128A

SST (только чтение)
SST25VF512A SST25VF512 SST25VF010 SST25VF010A SST25 SST25VF020 SST25VF040B SST25VF040A SST25VF040 SST25′ SST25VF016B SST25VF032B SST25VF064C

ST
M25P05A M25PE10 M25P10A M25P20 M25PE20 M25PE40 M25P40 M25PE80 M25P80 M25PX80 M25PX16 M25P16 M25PE16 M25P32 M25PE32 M25PX32 M25PX64 M25P64 M25PE64 M25P128

WINBOND
W25X10 W25X10L W25P10 W25X10AL W25X10A W25P20 W25X20AL W25X20A W25X20 W25X20L W25X40A W25P40 W25Q40BV W25X40L W25X40 W25X40AL W25Q80BV W25Q80V W25X80 W25P80 W25X80A W25X80L W25X80AL W25P16 W25Q16BV W25Q16V W25X16 W25Q32BV W25Q32V W25X32 W25P32 W25Q64BV W25X64 W25Q128BV

Поддерживаемые программатором CH341A Pro микросхемы 24 серии

ATMEL
AT24C01B AT24C01 AT24C01A AT24C02 AT24C02A AT24C02B AT24C04B AT24C04 AT24C04A AT24C08A AT24C08B AT24C08 AT24C16 AT24C16A AT24C16B AT24C32B AT24C32A AT24C32 AT24C64 AT24C64A AT24C64B AT24C128 AT24C128A AT24C128B AT24C256B AT24C256 AT24C256A AT24C512B AT24C512A AT24C512 AT24C1024 AT24C1024A AT24C1024B

CATALYST
CAT24C01 CAT24WC01 CAT24WC02 CAT24C02 CAT24C04 CAT24WC04 CAT24WC08 CAT24C08 CAT24WC16 CAT24C16 CAT24WC32 CAT24C32 CAT24WC64 CAT24C64 CAT24WC128 CAT24C128 CAT24WC256 CAT24C256 CAT24C512 CAT24WC512 CAT24C1024 CAT24WC1024

COMMON
24C01 3V 24C01 5V 24C02 3V 24C02 5V 24C04 5V 24C04 3V 24C08 3V 24C08 5V 24C16 5V 2406 3V 24C32 5V 24C32 3V 24C64 5V 24C64 3V 24028 5V 24C128 3V 24C256 5V 24C256 3V 24C512 5V 24C512 3V 240024 3V 24C1024 5V 24C2048 5V 24C2048 3V 24C4096 5V 24C4096 3V

FAIRCHILD
FM24C01L FM24C02L FM24C03L FM24C04L FM24C05L FM24C08L FM24C09L FM24C17L FM24C16L FM24C32L FM24C64L FM24C128L FM24C256L FM24C512L FM

HOLTEK
HT24C01 HT24LC01 HT24CD2 HT24LC02 HT24C04 HT24LC04 HT24C08 HT24LC08 HT24C16 HT24LC16 HT24LC32 HT24C32 HT24LC64 HT24C64 HT24C128 HT24LC128 HT24C256 HT24LC256 HT24LC512 HT24C512 HT24C1024 HT24LC1024

ISSI
IS24O01 IS24C02 IS24C04 IS24C08 IS24C16 IS24C32 IS24C64 IS24C128 IS24C256 IS24C512 IS24C1024

MICROCHIP
MIC24LC014 MIC24AA01 MIC24AA014 MIC24LC01B MIC24LC02B MIC24AA02 MIC24C02C MIC24AA025 MIC24AA04 MIC24LC04B MIC24LC024 MIC24AA024 MIC24LC025 MIC24LC08B MIC24AA08 MIC24LC16B MIC24AA16 MIC24LC32 MIC24AA32 MIC24LC64 MIC24FC64 MIC24AA64 MIC24FC128 MIC24AA128 MIC24LC128 MIC24AA256 MIC24LC256 MIC24FC256 MIC24AA512 MIC24LC512 MIC24FC512 MIC24AA1024

NSC
NSC24C02L NSC24C02 N5C24C64

RAMTRON
FM24CL04 FM24C04A FM24CL16 FM24C16A FM24CL64 FM24C64 FM24C256 FM24CL256 FM24C512

ROHM
BR24L01 BR24C01 BR24L02 BR24C02 BR24L04 BR24C04 BR24L08 BR24C08 BR24L16 BR24C16 BR24L32 BR24C32 BR24C64 BR24L64

ST
ST24C01 ST24C32 ST24C02 ST24C64 ST24C04 ST24C08 ST24C16

XICOR
X24O01 X24C02 X24C04 X24C08 X24C16

Подключение CH341A Pro к микросхеме в корпусе SOP8 без выпаивания через прищепку — переходник.

Прищепка — переходник для программатора CH341A Pro позволяет программировать микросхемы в корпусе SOP8 8pin без выпаивания.

1. Подсоедините переходник к программатору, согласно ключу нарисованному на программаторе. Первая ножка микросхемы обозначена на рисунке (на программаторе) точкой. На переходнике от прищепки к программатору ножки пронумерованы. См. рисунок 2.1 (правильное подключение переходника прищепки для программирования микросхемы 25 серии)

Рис. 2.1. Правильное подключение переходника прищепки для программирования микросхемы 25 серии

2. Подключите шлейф прищепки к переходнику. Красный провод должен соответствовать 1 ножке переходника.

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

3. Подсоедините прищепку к микросхеме так, чтобы красный провод был на первой ножке микросхемы. см рисунок 2.2. На самой микросхеме первая ножка обычно обозначена точкой.

ТОЛЬКО ПОСЛЕ. подсоединения к микросхеме и убедившись, что все соединено правильно, подключите программатор к USB порту компьютера.

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

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

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

Похожие публикации