Vnější přerušení v kombinaci s čítačem

Odpovědět
Lumaq
Příspěvky: 2
Registrován: 01 úno 2020, 20:12
Reputation: 0

Vnější přerušení v kombinaci s čítačem

Příspěvek od Lumaq » 01 úno 2020, 20:21

Mám rozpracovaný projekt, kde je třeba trochu přesnější časování. Po průchodu předmětu optickou závorou je vyvolána obsluha vnějšího přerušení, která spustí čítač1 a po uplynutí zadané doby přenastavím tento čítač a spustím ho na dobu pulsu. Pak zase povolím vnější přerušení a čekám na průchod předmětu optickou závorou. Obsluha vnějšího přerušení funguje, ale čítače reagují okamžitě jaky by ani nepočítaly.
Pročetl jsem hodně, ale nikde jsem nenašel inspiraci. Všichni pracují s čítačem pro periodickou generaci přerušení ale příklad pro jednorázové spuštění jsem nenalezl.

Kód: Vybrat vše

#include <TimerOne.h>

#define vstup 2  //impuls preruseni

unsigned long zpozdeni = 900000;
unsigned long delkaPulsu = 100000;

void zpozdeniSpouste(){
    digitalWrite(LED_BUILTIN,HIGH);
    Timer1.stop();
    Timer1.initialize(delkaPulsu);
    Timer1.attachInterrupt(delkaSpouste);
    Serial.println("start spouste");   
}

void delkaSpouste(){
  digitalWrite(LED_BUILTIN,LOW);
  Timer1.detachInterrupt();     //zruseni preruseni od casovace
  attachInterrupt(digitalPinToInterrupt(vstup), vnejsiPreruseni, LOW); //vazba na preruseni
  Serial.println("konec spouste");
}

void vnejsiPreruseni(){
  detachInterrupt(digitalPinToInterrupt(vstup));
  Timer1.initialize(zpozdeni);
  Timer1.attachInterrupt(zpozdeniSpouste); 
  Timer1.start();
  Serial.println("preruseni a start zpozdeni"); 
}

void setup() {
  interrupts();
  attachInterrupt(digitalPinToInterrupt(vstup), vnejsiPreruseni, LOW); //vazba na preruseni
  Timer1.stop();
  Serial.begin(57600);
  pinMode(LED_BUILTIN, OUTPUT); 
  digitalWrite(LED_BUILTIN,LOW);
  pinMode(vstup, INPUT_PULLUP); 
}

void loop() {
  Serial.println("cyklus");
  delay(5000);

}

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Vnější přerušení v kombinaci s čítačem

Příspěvek od kiRRow » 02 úno 2020, 07:39

No ono když dáš typ přerušení pinem na LOW, tak přerušení bude vyvoláno, kdykoliv na tom pinu bude LOW. Ty budeš spíš potřebovat RISING nebo FALLING.

Lumaq
Příspěvky: 2
Registrován: 01 úno 2020, 20:12
Reputation: 0

Re: Vnější přerušení v kombinaci s čítačem

Příspěvek od Lumaq » 02 úno 2020, 09:48

To už jsem také zkoušel, ale výsledek je stejný.
Vnější přerušení mi funguje, problém mám s čítačem.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů