Генерирование сигнала с частотой 1Мгц
- Войдите на сайт для отправки комментариев
Пнд, 26/09/2011 - 11:24
Требуется на ноге сделать частоту 1Мгц. Как это реализовать?
При таком раскладе получается толкьо 118кГц:
void setup() { pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); digitalWrite(4, LOW); }
Вот этот код генерирует 8MHz на порту 3
Частоту можно уменьшить, я так понимаю, изменив OCR2A. Отношение частоты выхода к частоте процессора
f = F_CPU / (OCR2A + 1) / 2
Вот это почитать можно http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
Функция digitalWrite выполняет запись указанного бита в один из выводов портов ввода/вывода микроконтроллера.
Функция удобная, но очень тяжелая - если память мне не изменяет, она весит около полутора сотен инструкций ассемблера. Так что в Вашем случае это тупик.
digitalWrite(4, HIGH);
digitalWrite(4, LOW);
Поменяйте эти строки на
PORTD != (1<<4); // устанавливает единицу на вывод 4 порта D
PORTD &= ~(1<<4); // устанавливает 0 на вывод 4 порта D
PORTD.4 - четвертый бит порта D - соответствует Arduino DIO4. Так что получится тот же результат, что и с DigitalWrite, но раз в 50 побыстрее.