Частота портов
- Войдите на сайт для отправки комментариев
Чт, 13/06/2013 - 19:52
Можно ли генерировать сигнал частотой 2MHz на портах у ArduinoUno/Mega/Mini/Pro/Duemil/Free? Знаю, что есть какой-то коэффициент соотношения рабочей частоты и частоты портов.
01
#define OUT 9 // вывод выходного сигнала
02
03
uint32_t frequency = 2000000;
// частота в Гц
04
05
void
setup
()
06
{
07
pinMode(OUT, OUTPUT);
08
cli();
09
uint16_t ocr = 8000000/frequency - 1;
10
TCCR1A = 0b01000000;
11
TCCR1B = 0b00001001;
12
OCR1AH = highByte(ocr);
13
OCR1AL = lowByte(ocr);
14
TIMSK1 = 0b00000010;
15
sei();
16
}
17
18
ISR(TIMER1_COMPA_vect){}
19
20
void
loop
(){}
Спасибо. Про таймер понял. А если напрямую в порт контроллера? Мне нужно байт(8 пинов задействовать) отправлять с частотой 2MHz.
ну дык мигайте в обработчике таймера хоть всеми ножками
а если без таймера, открываете даташиту и смотрите сколько тактов приходится на команды, которые будете использовать для вывода, суммируете и получаете период вывода на ножку(и)
вам надо определиться с задачей, не понятно что хотите - уж наверняка не светодиодом моргать на такой частоте))
есть SPI - он работает на частоте до 8мгц (половина частоты МК)
01
#define OUT 9 // вывод выходного сигнала
02
03
uint32_t frequency = 2000000
// частота в Гц
04
05
void
setup
()
06
{
07
pinMode(OUT, OUTPUT);
08
cli();
09
uint16_t ocr = 8000000/frequency - 1;
10
TCCR1A = 0b01000000;
11
TCCR1B = 0b00001001;
12
OCR1AH = highByte(ocr);
13
OCR1AL = lowByte(ocr);
14
TIMSK1 = 0b00000010;
15
sei();
16
}
17
18
ISR(TIMER1_COMPA_vect){}
19
20
void
loop
(){}
ВАХ! зачэм 4 байта растеряли?)))
лучше так:
01
#define OUT 9 // вывод выходного сигнала
02
03
#define frequency 2000000UL; // частота в Гц
04
05
void
setup
()
06
{
07
pinMode(OUT, OUTPUT);
08
cli();
09
uint16_t ocr = 8000000/frequency - 1;
10
TCCR1A = 0b01000000;
11
TCCR1B = 0b00001001;
12
OCR1AH = highByte(ocr);
13
OCR1AL = lowByte(ocr);
14
TIMSK1 = 0b00000010;
15
sei();
16
}
17
18
ISR(TIMER1_COMPA_vect){}
19
20
void
loop
(){}
в таком варианте "8000000/frequency - 1" будет вычисляться не каждый раз, а только в момент компиляции и переменная не будет занимать 4 байта памяти
вам надо определиться с задачей, не понятно что хотите - уж наверняка не светодиодом моргать на такой частоте))
есть SPI - он работает на частоте до 8мгц (половина частоты МК)
Мне нужно сделать VGA генератор. Пока что, я хочу выводить цветное изображение(палитры, текст) на экран монитора в формате 256x208x50Hz и 256цветов. Я сделал r2-r ЦАП, который занимает 8пинов, для генерации "видео данных". Я подсчитал чатоту вывода пикселей на экран: (256x208x50)/1000000 = 2MHz. Если пойду дальше, то понадобиться доп.ОЗУ, которое у меня уже есть. Вот и все...
вам надо определиться с задачей, не понятно что хотите - уж наверняка не светодиодом моргать на такой частоте))
есть SPI - он работает на частоте до 8мгц (половина частоты МК)
Мне нужно сделать VGA генератор. Пока что, я хочу выводить цветное изображение(палитры, текст) на экран монитора в формате 256x208x50Hz и 256цветов. Я сделал r2-r ЦАП, который занимает 8пинов, для генерации "видео данных". Я подсчитал чатоту вывода пикселей на экран: (256x208x50)/1000000 = 2MHz. Если пойду дальше, то понадобиться доп.ОЗУ, которое у меня уже есть. Вот и все...
Ой-ой... Что-то я напутал с чатотой вывода пикселей... Знаю, что 800x600x60Hz - частоты должна быть 40MHz, а если перемножить - нифига на 40MHz...
Мне нужно сделать VGA генератор.
А можно поинтересоваться, нафига козе баян?
Просто пытался придумать практическое применение и не смог...
Что то я сомневаюсь, что ардуина справится с такой задачей
выбрали бы какой нибудь raspberry у которого видеоконтроллер встроен вместе с hdmi
Что то я сомневаюсь, что ардуина справится с такой задачей
выбрали бы какой нибудь raspberry у которого видеоконтроллер встроен вместе с hdmi
да тут просто не понятна сама цель такого извращения... если хочется использовать дисплей. так есть вон TFT с тач скрином и всеми делами 320х240 за 12-14 баксов с доставкой...
если хочется большой телевизер присоединить. так как бы есть библиотека дуиновская уже для вывода на телевизер типа из одного вывода делается AV и погнали наши городских...
Мне нужно сделать VGA генератор.
А можно поинтересоваться, нафига козе баян?
Просто пытался придумать практическое применение и не смог...
Хорошо. Вы хотите самую суть. У меня есть Arduino Due, Arduino Mega и 4 микросхемы ОЗУ с параллельным доступом, каждая по 128кб. По сути дела: ArduinoDue - Центральный проц., ArduinoMega - видео-процессор. Я подключу их к одной микросхеме ОЗУ.(буду переключать доступ к ОЗУ буферными элементами, тем самым сделаю dual port ram) ArduinoDue будет формировать изображение и "оставлять" его в определенном месте на ОЗУ. А ArduinoMega уже, в свою очередь, будет (когда ей нужно) забирать эти данные из ОЗУ и отправлять их по VGA интерфейсу. Тем самым, получается независимая схема: CPU, RAM, GPU.
Однако, пока не могу сообразить как наладить работу ArduinoMega... С ArduinoDue - все в порядке, у нее даже спец. интерфейс есть для подключения внешней RAM.
Как то так.
Я полагаю, особой "мощи" не нужно, чтобы стаскивать данные с внешней ОЗУ и формировать VGA сигнал.
Если дело совсем худо, и подключить к этому делу ArduinoMega как GPU - не получится, то одна ArduinoDue должна справиться...хоть и сбольшими потерями в производительности. Вот результат работы одной ArduinoDue без Доп.ОЗУ и GPU: http://www.youtube.com/watch?v=E8qSB1Fm8WE
Хотелось бы сделать все "по делу". (с точки зрения архитектуры)
Вы так и не ответили на вопрос НАФИГА это все нужно? тем более с таким разрешением?
если у вас есть Due, то для нее есть готовые библиотеки, правда готовое не всегда лучшее :)
если у вас есть Due, то для нее есть готовые библиотеки, правда готовое не всегда лучшее :)
Бибилиотеки есть. Как видите, (я ссылку на видео присылал) с ними все работает. Но все же хотелось бы проиводительности больше, так как формирование VGA сигнала "отжирает" много ресурсов. А если бы был второй проц(GPU) все было бы идеально. :)
VGA Signal Generator LCD Display Tester 8 Output Module 9v
VGA генератор http://www.ebay.com/itm/New-VGA-Signal-Generator-LCD-Display-Tester-8-Ou...