Chłopaki pomóżcie
Dzisiaj cały dzień siedziałem nad problemem i zatoczyłem koło, wracając do:
ze strony Link
Zadaniem tego programiku jest zliczanie i wyświetlanie na ledach ilości zliczonych przez counter impulsów z zewnątrz (przycisk podpięty pod PB0 (T0) i masę). Po wgraniu program rozpala całą linijkę ledów i nie reaguje na przycisk.
Jest jeden element, który w nim zmieniłem bo nie chciało mi kompilować. Zamieniłem:
na:
Próbowałem to przerobić, żeby działało na przerwaniach i też lipa. Może coś nie tak jest z tym PORTC = ~led++; ?? Nigdy takiego czegoś nie używałem a już nie miałem siły sprawdzać, zwłaszcza, że programy z tej strony mi jako tako działały.
Z góry dzięki za pomoc.
Dzisiaj cały dzień siedziałem nad problemem i zatoczyłem koło, wracając do:
#include <avr/io.h> // dostęp do rejestrów
uint8_t led;
int main( void )
{
DDRC = 0xFF; // PortC jako wyjścia
TCNT0 = 0xFE; // wartość początkowa T/C0
TCCR0 = _BV(CS01)|_BV(CS02);
// T/C0 zlicza opadające
// zbocza na wejściu T0
while(1)
{
loop_until_bit_is_set(TIFR,TOV0);
// ta pętla sprawdza bit przepełnienia
// w rejestrze TIFR
TCNT0 = 0xFE; // przeładuj T/C0
PORTC = ~led++; // wyślij ilość przepełnień na PortC
sbi(TIFR,TOV0);
// jeśli wpiszemy 1 do bitu TOV0
// to ten bit zostanie skasowany
// przy następnym przepełnieniu licznika 0
}
}
ze strony Link
Zadaniem tego programiku jest zliczanie i wyświetlanie na ledach ilości zliczonych przez counter impulsów z zewnątrz (przycisk podpięty pod PB0 (T0) i masę). Po wgraniu program rozpala całą linijkę ledów i nie reaguje na przycisk.
Jest jeden element, który w nim zmieniłem bo nie chciało mi kompilować. Zamieniłem:
sbi(TIFR,TOV0);na:
TIFR=1<<TOV0;Próbowałem to przerobić, żeby działało na przerwaniach i też lipa. Może coś nie tak jest z tym PORTC = ~led++; ?? Nigdy takiego czegoś nie używałem a już nie miałem siły sprawdzać, zwłaszcza, że programy z tej strony mi jako tako działały.
Z góry dzięki za pomoc.