Вот теперь объясните владельцам компьютеров с win 7, что если они не догадаются установить Eclipse r3dfox, то на вашем форуме им делать нечего.
А вопрос такой:
Не программист, но хотел заменить микроконтроллером кучку микросхем. Ардуинозаменителем LGT8F328, внутренняя частота 32 мГц.
Нужна тактовая частота от 1 до желательно 100 кГц, желательно меандр на одном из выходов (назначил 8-й). Уже весело (100 кГц - это 10 мкс на период). Регулировка частоты внешним потенциометром.
На другом выходе (9-м) типа случайные данные (не важно какие).
И на третьем выходе (10-й) - PORTB |= (1 << 0); и PORTB &= ~(1 << 0); по фронту и спаду тактов при определённых условиях (if).
Стандартно удалось получить до 10 кГц с явной нестабильностью (джиттер). Там delayMicroseconds, AnalogRead, random и прочие дигиталриды/райты. Потом сначала заполнил случайный массив, потом просто его читал в цикле, запись напрямую в порты (как выше написал, только пока не нашёл, как туда записывать не банальное хайло (High/Low), а элемент массива), без потенциометра и с micros’ом - получил 30 кГц, но джиттер сильно увеличился. Фронты и спады дрыгаются в пределах около 4 мкс (что похоже на точность микроса). Ладно, написал такой тестовый скетч:
// Set up clock out pin
#define CLC_OUT 8 // PORTB нулевой бит PBO
unsigned long i;
void setup() {
pinMode(CLC_OUT, OUTPUT);
}
void loop() {
label:
PORTB |= (1 << 0);
for (int i = 0; i < 180; i++) {
asm (“nop”);
}
PORTB &= ~(1 << 0);
for (int i = 0; i < 180; i++) {
asm (“nop”);
}
// while(micros()-time < 20){
// }
// time = micros();
goto label;
} // закрыли loop
Примерно 22 кГц, но всё равно дрыгается.
И чё делать (если по-простому, без прерываний) ?
