Skocz do zawartości

[C] Opóźnienie włączenia


Pomocna odpowiedź

Napisano

Mam układ który załączam przyciskiem, przycisk jest w przerwaniu, jak można napisać żeby po naciśnięciu mijało 6sek, nim zacznie działać? Pętla główna jest na warunku if od przycisku, czyli jak wcisnę to wykonuje się, delay nie działa, bo jakoś dziwnie wszystko działa...

__________

Komentarz dodany przez: Sabre

Nie rozumiem po co zakładasz kolejny temat? Masz już jeden dotyczący obsługi przycisku.

Przerwania mogą być czasowe lub zmiany stanu na pinie. Zastosuj oba. Czyli:

- w przypadku naciśnięcia przycisku zapisujesz aktualną wartość przerwania czasowego-

- w pętli głównej sprawdzasz / w przerwaniu czasowym sprawdzasz kiedy wartość_aktualna - wartość_zapisana = 6sec .

- musisz pamiętać o tym, że w kodzie to nie będzie takie proste odejmowanie, gdyż musisz wziąć pod uwagę, że:

-- przerwanie na czas 6s to trochę dużo

-- po pewnej wartości licznik w przerwaniu czasowym się zeruje i leci od nowa

Nie będę dokładnie wszystkiego opisywał, bo musisz mieć wiedzę na temat tych przerwań. Dopiero wtedy zadaj konkretniejsze pytanie.

Pozdrawiam

Dla mnie nie ma znaczenie czas włączenia, chodzi o to żeby cały układ wystartował po 5sek. po naciśnięciu przycisku. Moja obsługa przerwania od przycisku wyglada tak:

ISR (INT0_vect)
{
if(b)
{
	b=0;
}	
else b=1;
}

oraz obsługa w głównej pętli programu:

int main(void)
{ 
//wejscia, wyjscia
while(1)
{
	sei();
	if (b)
	{
                 //program
      }
        }
}


Do realizacji twoich założeń najłatwiej wykorzystać timer sprzętowy. Oczywiście timer nie doliczy Ci do 6 sek dlatego musisz zliczać ile razy się on przeładował i wtedy napisać instrukcje warunkowa w przerwaniu która zacznie proces startu robota po osiągnięciu odpowiedniej wartości.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...