Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Разгон ATmega328 (30 МГц)

DSCN1086.jpg

Этот проект больше ориентирован на получение удовольствия, чем на что то полезное, так как ATmega328 не предназначен для тактовой частоты выше 20 МГц (см. даташит).

В этом «эксперименте», вместо кварца 16МГц (как в Arduino), был использован 29.491MHz, подключений к 100nF конденсатору для фильтрации уровней постоянного тока. Сигнал с конденсатора идет на вывод XTAL1 ATmega. Вывод XTAL2 не подключен.

На рисунке ниже показан сигнал c генератора после конденсатора:

DSCN1088.jpg

Для проверки разницы в скорости до и после разгона, я использовал следующий код с Arduino IDE (UNO/Optiboot загрузчик). Код простейший, он просто дает на контакты регистра B высокий и низкий уровень.

PS: Чтобы загрузить программу, был использован кварц 16 Мгц вместо генератора 30 МГц. Я еще не знаю, почему это необходимо, так как генератор не работает во время загрузки. Возможно, нужно настроить AVRDUDE (с помощью IDE?), чтобы скорость загрузки была такой же. Любая помощь будут оценена.

void setup() {                
    DDRB = 0xFF;
}

void loop() {
  while(1){
    PORTB = 0x00;
    PORTB = 0xFF;
  }
}

Во всяком случае, взгляните на результаты обеих скоростей:

Кварц 16 МГц:

DSCN1089.jpg

Генератор 29.491 МГц:

DSCN1087.jpg

Частота идет от 4 МГц до почти 6 МГц. Очень интересный прирост. Но нормально ли работает микроконтроллер?

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

Последовательная связь

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

Так как для кодинга и загрузки был использован Arduino IDE, файл boards.txt, в папке Hardware должен быть изменен, определяющий новую тактовую частоту. В этом «эксперименте», была создана новая плата в списке плат, но было бы достаточно просто изменение частоты UNO платы (ATmega328 была использована с UNO загрузчиком).

ScreenShot20121222at10_32_54PM.png

Обратите внимание на 35 строку.

Перед загрузкой кода, была выбрана новая плата, так что МК может "знать", с какой частотой он работает. Таким образом, возможно рассчитать время для правильной скорости передачи данных. В данном случае: 9600.

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()>0){
    Serial.write(Serial.read());
  }
}

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

Это работает! Символы повторяются в Serial Monitor просто отлично!

Насколько полезен разгон?

Вероятно, это больше для обучения и удовольствия, но лично я думаю, что это может улучшить проект Генерация цветного VGA сигнала на Arduino, опубликованный здесь, в GL:
DSCN1666.jpg
При более высокой частоте можно будет иметь больше пикселей в созданном изображении. Но это в следующем хаке! :)

Теги:

Опубликована: 30.12.2012 0 0
Я собрал 0 3
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4 Проголосовало: 3 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
jeeno77 #
Отлично! Спасибо за эксперимент, очень наглядно, доходчиво и главное - без бульона, всё по делу. Как раз изучаю вопрос создания графического адаптера на ATmega для 8-битного CPU. А вообще есть идея: всю часть ввода/вывода собрать тоже на ATmega, только нужно учитывать тайминги и количество командных циклов. Буду учить матчасть
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Pickit 2 - USB-программатор PIC-микроконтроллеров Тестер ESR, полупроводников, резисторов, индуктивностей
вверх