Помогите переработать таймер

Romko1Zi
Offline
Зарегистрирован: 09.11.2020

Помогите переработать таймер так, чтобы избавиться от закомментированых строк, а указать мигание светодиода каждые 0.25 сек в самом таймере

volatile unsigned long int timerLED;
unsigned long int timePreview = 0;

unsigned char n = 0;
bool check = false;

void LightDown() {
  digitalWrite(n, LOW);
  n--;
  if (n < 8) {
    n = 11;
  }
}

void LightUp() {
  digitalWrite(n, LOW);
  n++;
  if (n > 11) {
    n = 8;
  }
}

void Changer() {
  if (!check) {
    check = true;
  } else {
    check = false;
  }
}

ISR (TIMER0_COMPA_vect){
  digitalWrite(n, HIGH);
  pinMode(n, OUTPUT);
  timerLED++;
  //if(timerLED - timePreview >= 250){
  //  timePreview = timerLED;
    
    if (!check) {
      LightDown();
    } else {
      LightUp();
    }
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, Changer, FALLING);
  n = 11;

  TCCR0A |= (1<<WGM01);
  OCR0A = 0xF9;
  TIMSK0 |= (1<<OCIE0A);
  TCCR0B |= (1<<CS01) | (1<<CS00);
  sei();
}

void loop() {
}

 

Logik
Offline
Зарегистрирован: 05.08.2014

Ромка, ну зачем тебе тут таймер. Пиши в луп, оно проще будет.

Romko1Zi
Offline
Зарегистрирован: 09.11.2020

Да я знаю за это. Задание такое. Итак сложно, и еще сложности добавили. У меня просто затуп. Нужно именно без лупа и еще без сравнений. Все должен делать таймер

sadman41
Offline
Зарегистрирован: 19.10.2016

Антересно. Задание дали Ромке, а делать будем мы? Дистанционное обучение нынче такое?

Romko1Zi
Offline
Зарегистрирован: 09.11.2020

Я кагбы сделал. Откуда я знал что придруться к такой детали. Я просто выжал тут все что знал. Учить сейчас все про таймеры просто нет времени. Помогите пж 

sadman41
Offline
Зарегистрирован: 19.10.2016

Так и скажи преподу - чё те ещё надо, сделал же.
А если он завтра скажет в окно прыгнуть - тоже мы вместо тебя сиганем? Или в армию вместо тебя пойдем? Давай иди читай про таймеры, у тебя там 90% написано уже.

Logik
Offline
Зарегистрирован: 05.08.2014

Romko1Zi пишет:

Я кагбы сделал. Откуда я знал что придруться к такой детали. Я просто выжал тут все что знал. Учить сейчас все про таймеры просто нет времени. Помогите пж 

Так они всегда найдут к чему придратся. И с временем всегда напряги. А таймер - в натуре лишнее, не учи.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Romko1Zi пишет:

Учить сейчас все про таймеры просто нет времени. 

Чем же Вы так заняты? И сейчас, и весь семестр, когда это надо было учить?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

ТС, если для строк 52-55 напишите комментарии в которых будет однозначно сказано что эти строки делают, я вас напишу, то что вы просите :)

Romko1Zi
Offline
Зарегистрирован: 09.11.2020
unsigned char n = 0;
bool check = false;

void LightDown() {
  digitalWrite(n, LOW);
  n--;
  if (n < 8) {
    n = 11;
  }
}

void LightUp() {
  digitalWrite(n, LOW);
  n++;
  if (n > 11) {
    n = 8;
  }
}

void Changer() {
  if (!check) {
    check = true;
  } else {
    check = false;
  }
}

ISR(TIMER1_COMPA_vect){  
  if (!check) {
      LightDown();
    } else {
      LightUp();
    } 
  digitalWrite(n, HIGH);
  pinMode(n, OUTPUT);
}

void setupTm(){
  cli();
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1  = 0;
  OCR1A = 62499;
  TCCR1B |= (1 << WGM12);
  TCCR1B |= (0 << CS12) | (1 << CS11) | (1 << CS10);
  TIMSK1 |= (1 << OCIE1A);
  sei();
}

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, Changer, FALLING);
  n = 11;
  setupTm();
}

void loop() {
}

 

Romko1Zi
Offline
Зарегистрирован: 09.11.2020

Самый бесполезный и недружелюбный форум. Оставляю готовый код и ресурс, который поможет легко генерировать нужные таймеры.

http://www.8bit-era.cz/arduino-timer-interrupts-calculator.html

Новичкам больше тут делать нечего. Все дофига советники как бабки в больнице. Никакой конкретики

b707
Offline
Зарегистрирован: 26.05.2017

Romko1Zi пишет:

Самый бесполезный и недружелюбный форум.

а вот ты не прав насчет "бесполезного". Дали тебе пинок - ты пошел и нашел решение сам(надеюсь). А получил бы сразу готовенькое - фиг бы ты что запомнил.

Romko1Zi
Offline
Зарегистрирован: 09.11.2020

мне было нужно в короткие строки переработать пару строчек. Мне этот код в кошмарах сниться будет теперь, я его итак наизусть знал

b707
Offline
Зарегистрирован: 26.05.2017

Romko1Zi пишет:

 я его итак наизусть знал

а не надо наизусть... надо понимать

Я вот нихера эти таймеры на память не напишу. Но всегда можно взять даташит и посмотреть, как правильно.

Кста, никто тебе не стал отвечать в том числе и потому, что мало кто помнит все это наизусть, а лезть ради тебя в справочник - с какой стати? - это ты и сам можешь сделать.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Romko1Zi пишет:

Самый бесполезный и недружелюбный форум.

Кому как.

Для бесполезных людей и форум, видимо, такой же.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

а вот ты не прав насчет "бесполезного". 

Человеку

Romko1Zi пишет:
было нужно в короткие строки переработать пару строчек.

а вы тут его заставили самого неделю пахать. Вашу, между прочим, работу делать! За неделю пахоты любой найдёт чешский сайт и на нём таймер сконфигурит, только нафига тогда нужны форумы?!

В общем, низачёт! Припахали гостя свою работу делать вместо того чтобы, усадить в кресло, предложить кофе, сделать минет и написать всё, что ему надо "в короткие строки".

Скорее всего, сами нихрена таймеры конфигруить не умеете - только щёки надувать горазды!