Cycle and PORTD
- Войдите на сайт для отправки комментариев
Чт, 25/10/2018 - 20:25
int potPin = 0;
int lastpot, delayPot;
byte kan6[] = {B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101, B10101010, B01010101};
void setup() {
// put your setup code here, to run once:
pinMode(potPin, INPUT);
DDRD = DDRD | B11111111;
}
void loop() {
// put your main code here, to run repeatedly:
lastpot = analogRead(potPin);
delayPot = map(lastpot, 0, 1023, 600, 6);
for (int j = 0; j <= 23; j=j+1)
{
PORTD = kan6[j];
delayMicroseconds(delayPot );
}
}

Как избавиться от этой задержки? изза чего выходной сигнал теряет симметрию ? надо сделать Stop timer 0 ? что это даст ? и как его сделать обращаясь к регистрам авр ...
SergV, так и должно быть. Таймер0 каждую миллисекунду падает в прерывание и висит там пару-тройку микросекунд, вот и задержка. Решение -остановить таймер и неиспользовать арудиновские функции работы с временем. А пользовать GCC-шные или свои писать.
А отключить прерывания таймера 0 возможно?
А пользовать GCC-шные.
А можете посоветовать документацию по этому? Есть пример?
AVR130: "Setup and Use of AVR Timers"