Главная » Микроконтроллеры » Калибратор OSC генератора и устройство восстановления фьюзов AVR микроконтроллеров

Калибратор OSC генератора и устройство восстановления фьюзов AVR микроконтроллеров

Поскольку 8-контактные ATtiny имеют малое количество выводов GPIO, то они обычно работают без внешнего генератора. Их внутренний генератор хорошо справляется со своей задачей в большинстве случаев. Но когда дело доходит до точной синхронизации, то его точность +/- 10% часто бывает недостаточной.

К счастью, OSC генератор можно откалибровать, увеличив его точность до +/- 2% или еще лучше. Есть несколько способов выполнить эту ручную калибровку и при этом необходимо выполнить несколько шагов.

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

Аппаратное обеспечение

На устройство подается напряжение 5 В через разъем MicroUSB. Поскольку частота генератора зависит от напряжения питания ATtiny, в схему интегрирован стабилизатор напряжения HT7333. Затем с помощью переключателя можно выбрать, следует ли калибровать генератор на 3,3 В или 5 В.

Калибратор OSC генератора и устройство восстановления фьюзов AVR микроконтроллеров

В качестве микроконтроллера для этого калибратора был выбран ATtiny84, поскольку он имеет необходимое количество GPIO контактов. Для точного измерения частоты, работа ATtiny84 организована от внешнего кварца на 12 МГц. Поскольку для текущей версии программного обеспечения требуется примерно 3,7 Кбайт, то в качестве замены ATtiny84 можно также использовать ATtiny44.

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

Напряжение 12 В управляется полевым MOSFET-транзистором и при необходимости подается на вывод RESET целевого ATtiny. Пользовательский интерфейс состоит из трех кнопок и OLED-дисплея 128×64.

Программное обеспечение

Основной принцип

Для выполнения калибровки программа сначала загружается в целевой ATtiny с помощью встроенного последовательного программатора высокого напряжения. Кроме того, заводское значение калибровки генератора (OSCCAL) записывается в EEPROM.

Программа на целевой ATtiny читает EEPROM и записывает значение в регистр OSCCAL. Затем подается сигнал с половиной тактовой частоты на вывод PB0. Поскольку фьюзы ранее были установлены так, что целевой ATtiny работает с предварительным делителем 8, на PB0 подается сигнал с 1/16 частоты генератора.

#include <avr/io.h>
#include <avr/eeprom.h>

int main(void) {
  OSCCAL = eeprom_read_byte(0);
  DDRB   = 0b00000001;
  TCCR0A = 0b01000010;
  TCCR0B = 0b00000001;
  while(1);
}

Эта частота измеряется калибратором и сравнивается с целевым значением. Затем значение калибровки генератора (OSCCAL) корректируется соответствующим образом и записывается в EEPROM целевой ATtiny. Этот процесс повторяется до тех пор, пока не будет найдено значение OSCCAL, которое приводит к наименьшему отклонению частоты.

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

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

Измерение частоты

Таймеры/счетчики ATtiny84 используются для измерения частоты. PB0 целевого ATtiny, который выводит сигнал с частотой 1/16 собственного генератора, подключен к входу T0 ATtiny84. Timer0 считает импульсы на T0, а timer1 останавливает измерение через 32 миллисекунды. Исходя из этого, можно рассчитать частоту генератора целевого ATtiny.

Компиляция и загрузка

  1. Убедитесь, что вы установили ATtinyCore .
  2. Перейдите в Инструменты -> Плата -> ATtinyCore и выберите ATtiny24/44/84 (a) (без загрузчика) .
  3. Перейдите в Инструменты и выберите следующие параметры платы:
    • Chip: ATtiny84(a)
    • Clock: 12 MHz (external)
    • Millis/Micros: disabled
    • Остальное оставьте по умолчанию.
  4. Подключите программатор к компьютеру и к разъему ICSP устройства.
  5. Перейдите в Инструменты -> Программатор и выберите свой ISP-программатор (например, USBasp ).
  6. Перейдите в Инструменты -> Записать загрузчик.
  7. Откройте скетч Calibrator и нажмите Загрузить.

Инструкция по эксплуатации

  1. Выберите желаемое напряжение питания (3,3 В или 5 В) с помощью переключателя.
  2. Подключите источник питания 5 В от порта micro USB.
  3. Вставьте целевую ATtiny13/25/45/85 в гнездо и нажмите любую клавишу. Используйте SOP-адаптер для микроконтроллеров в корпусе SMD .
  4. Выберите нужную функцию и следуйте инструкциям на экране.

Инструкция по эксплуатации

Калибровка Attiny13A, внутренний генератор 9,6 МГц

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

#include <avr/eeprom.h>
void readOSCCAL(void) {
  uint8_t value = eeprom_read_byte(0);
  if (value < 0xFF) OSCCAL = value;
}

Конечно, значение OSCCAL также можно установить напрямую без EEPROM. Помните, что значение OSCCAL отображается в шестнадцатеричном формате:

OSCCAL = 0x66;

Скачать файлы проекта (91,1 KiB, скачано: 349)




Добавить комментарий


.