Witam.
Niestety mam problem dotyczący wygenerowanie przebiegu prostokątnego ALE przy użyciu tylko Timerów bez PWMa. Musze Wygenerować sygnał o okresie 270ms i wypełnieniu 90%( czyli po 243ms wartość na wyjściu musi być 0 przez resztę czasu) Później po naduszeniu przycisku okres ma sie zwiększyć do 810ms.Problem juz mam na samym początku z kodem:
skoro juz mam wyliczone ze 90% gdzie ma być 5V to 1893 cykle az do przeładowania przechodzimy tam i ustawiamy na wyjściu 0 i tu pojawia sie problem co dalej , czy w przerwaniu mamy zdeklarować po jakim czasie ma być znowu stan wysoki?to by musiały być 2 rodzaje przerwań ze po jednym czasie ma przejsc na niski a drugi raz na wysoki, idzie to jakoś uwzględnić w kodzie? a pozniej przy pomocy przycisku zmienić okres? Proszę o wskazówkę jestem zielony w C i w uC;/
Niestety mam problem dotyczący wygenerowanie przebiegu prostokątnego ALE przy użyciu tylko Timerów bez PWMa. Musze Wygenerować sygnał o okresie 270ms i wypełnieniu 90%( czyli po 243ms wartość na wyjściu musi być 0 przez resztę czasu) Później po naduszeniu przycisku okres ma sie zwiększyć do 810ms.Problem juz mam na samym początku z kodem:
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000L
SIGNAL(SIG_OVERFLOW1)
{
PORTB &= ~_BV(1); // na jak długo bedzie ustawione 0?
TCNT0 = 0;
}
int main(void)
{
DDRB = 0xff;
DDRC = 0x00;
PORTC = 0xFF;
while(1)
{
PORTB |= _BV(1)
TCNT1L = 53643; // start licznika
TCCR1A = 0x00; // wartość końcowa licznika
TCCR1B =(1 << CS12) | (1 << CS10); //prescaler 1024
TIMSK = _BV(TOIE1); //zgoda na przerwanie?
sei();
if bit_is_set(PORTC,1)
}
}skoro juz mam wyliczone ze 90% gdzie ma być 5V to 1893 cykle az do przeładowania przechodzimy tam i ustawiamy na wyjściu 0 i tu pojawia sie problem co dalej , czy w przerwaniu mamy zdeklarować po jakim czasie ma być znowu stan wysoki?to by musiały być 2 rodzaje przerwań ze po jednym czasie ma przejsc na niski a drugi raz na wysoki, idzie to jakoś uwzględnić w kodzie? a pozniej przy pomocy przycisku zmienić okres? Proszę o wskazówkę jestem zielony w C i w uC;/