W internecie jest bardzo mało materiałów na temat timerów T0, T1 i T2 AVR na procesorze atmega8. Ogólnie cieżko cokolwiek znaleźć na ten temat. Wieć prosiłbym was o pomoc.
Chodzi mi o progrmaowanie timerów T0,T1,T2 w języku C na Atmedze8.
Licznik T0 , T1 i T2 w AVR
-
elektronikopo
- Użytkownik
- Posty: 182
- Rejestracja: 16 gru 2007, 22:28
- Lokalizacja: Poznań
-
elektronikopo
- Użytkownik
- Posty: 182
- Rejestracja: 16 gru 2007, 22:28
- Lokalizacja: Poznań
Coś nota katalogowa zawiera informacje teoretyczne dotyczące tych timerów. A ja potrzebuje opisane obsługę timerów t0,t1,t2 w jeżyku C z przykładami wszytsko dobrze wyjaśnione tak jak to jest na stronie dioda.com. Znalazłem tą strone www.wkretak.com
tam było wszytsko wyjaśnione tylko niestety już na strona nie istnieje.
[ Dodano: 2011-04-10, 16:11 ]
tam było wszytsko wyjaśnione tylko niestety już na strona nie istnieje.
[ Dodano: 2011-04-10, 16:11 ]
A jaka książka podaj tytuł ?kayron pisze:Cóż nota katalogowa powinna ci wystarczyć, ostatecznie książka o M8. C to nie Bascom więc i tak wszystko będziesz robił na piechotę, ustawiając odpowiednie bity.
Nota zawiera wszystko co trzeba, żeby było śmieszniej nawet przykłady kodu w C. Więcej informacji jest w tak zwanych notach aplikacyjnych.
Coś nota katalogowa zawiera informacje teoretyczne dotyczące tych timerów.
Np:
http://www.atmel.com/dyn/resources/prod ... oc2505.pdf
Tak przy okazji jest to kompletna dokumentacja Timerów, z tego co to przeglądałem.
Co do książki to mam tylko taką do BASCOMA, C na AVR się już nie brudzę (w sensie że uczę się C na inne uC) bo przechodzę na procesory MICROCHIPA PIC16/18 oraz dsPIC30Fxxx.
-
elektronikopo
- Użytkownik
- Posty: 182
- Rejestracja: 16 gru 2007, 22:28
- Lokalizacja: Poznań
dzięki bardzo mi przydatny pdf.
Ostatnio zmieniony 10 kwie 2011, 16:11 przez elektronikopo, łącznie zmieniany 2 razy.
Tutaj masz bardzo fajny artykuł, przykłady w asm ale bardzo łatwo zmienić na C
-
elektronikopo
- Użytkownik
- Posty: 182
- Rejestracja: 16 gru 2007, 22:28
- Lokalizacja: Poznań
A zna ktos jakieś materiały w języku polskim C z przykładami, bo nietety w tym kursie ogólnei dostępnym w internecie nie ma timerów.
ogólnie rzecz biorać mam takei programy
licznik T0 do migania diodą L1 co 5ms
licznik T1 do migania diodą L2 co 50ms
licznik T2 do migania diodą L3 co 500ms
Mam problem ze zrozumieniem tych programów więc potzrebuje jakieś materiały na temat timerów z przykładami.
ogólnie rzecz biorać mam takei programy
Kod: Zaznacz cały
T0
#include <avr/io.h> // dostęp do rejestrów
#define pocz_t0 (256-173)
int main( void )
{
DDRC = 0xFF;
PORTC = 0xff;
TCNT0 = pocz_t0; // wartość początkowa T/C0
unsigned long i;
TCCR0 = _BV(CS00)|_BV(CS01); //preskaler 64
while(1)
{
//loop_until_bit_is_set(TIFR,TOV0);
if ((TIFR)&(_BV(TOV0))){ //jesli flaga jest ustawiona
TCNT0 = pocz_t0; //wpisz ponownie do tcnt0
PORTC ^= _BV(1); // zmien stan diody
TIFR = _BV(TOV0); //zeruj flage
i++;
if(i==100){ //jesli powtorzylo sie 1000x (1 sek)
PORTC ^= _BV(0); //zmien stan
i=0; //zeruj
}
}
}
}
T1
#include <avr/io.h>
int main(void)
{
DDRC = _BV(1);
TCCR1B = _BV(CS11) | _BV(CS10);
TCNT1H = 222;
TCNT1L = 64;
TIFR = _BV(TOV1);
int i=0;
while(1)
{
if((TIFR) & (_BV(TOV1)))
{
TCNT1H = 222;
TCNT1L = 64;
TIFR = _BV(TOV1);
i++;
if(i==20)
{
PORTC ^= (_BV(1));
i=0;
}
}
}
return 0;
}
T2
#include <avr/io.h>
int main(void)
{
DDRC = _BV(1);
TCCR2 = _BV(CS22) | _BV(CS21) | _BV(CS20);
TCNT2= 55;
TIFR = _BV(TOV2);
int i=0;
while(1)
{
if((TIFR) & (_BV(TOV2)))
{
TCNT2 = 55;
TIFR = _BV(TOV2);
i++;
if(i==27*2)
{
PORTC ^= (_BV(1));
i=0;
}
}
}
return 0;
}
licznik T0 do migania diodą L1 co 5ms
licznik T1 do migania diodą L2 co 50ms
licznik T2 do migania diodą L3 co 500ms
Mam problem ze zrozumieniem tych programów więc potzrebuje jakieś materiały na temat timerów z przykładami.