jak odpalic Timer0 w AVR 90s8535

Sep 06, 2004 14 Replies

Witam i prosze o pomoc : Chce aby Timer0 zaczął liczyć wiec wpisuje : TCNT0 = 0; //zeruje licznik T0 TCCR0 = 3; // CK/64 - preskaler



i powinien zliczac co 64 cykle - jednak nie robi tego :(



Czy o czymś zapomniałem czy mój debugger jest "ułomny" ?



pzdr,



Piotr Chmiel napisał(a):

a uruchomiles licznik/liczniki???

Witam np: TIMSK=0x82; //zezwolenie na przerwanie z T1 i T0 TCNT0=0xe0; //ustawienie timera T0 na 256us sei(); //wlaczenie przerwan TCCR0=0x03; //start timera T0 256us Pzdr Michal

a robi się to inaczej niż napisałem wyżej ?

A kto coś pisał o przerwaniach ? nie chce przerwań - chce aby timer zaczął zliczać i tyle :) pzdr,

Piotr Chmiel napisał(a):

zapytam raz jeszcze: jak chcesz zeby dzialal ci timer jak go nie wlaczasz, tylko wystawiasz mu wartosc???

Wpisałem to w AVRstudio i zgodnie z przewidywaniami timer liczył. Tylko oczywiście należało po tym dodac jeszcze kawałek w którym sie program zapętli. Moze właśnie o tym zapomniałeś ??

.include "8535def.inc

ldi r16,0 out tcnt0,r16 ldi r16,3 out tccr0,r16

petla: nop nop rjmp petla

U¿ytkownik "Przemcio ¯." snipped-for-privacy@WYTNIJTOonet.pl napisa³ w wiadomo¶ci news:chhvt2$apu$ snipped-for-privacy@nemesis.news.tpi.pl...

Hm, a to jak siê go w³±cza? :-)

Do Piotra: powinno dzia³aæ tak, jak napisa³e¶. Je¶li nie dzia³a, to... co¶ jest nie tak. ;-) Symulator w AVRStudio dzia³a poprawnie, je¶li tym go nakarmiæ:

clr R16 out TCNT0, R16 ; to zreszt± niepotrzebne, bo TCNT0=0 po resecie ldi R16, 3 out TCCR0, R16

Pzdr, Raf.

dzieki :),czyli mój debugger/symulator cos niedomaga, ale czy to możliwe u IAR Embedded Workbench ?

Nie zapomniałem :) Ja ten timer testuje w Iar Embedded Workbench a napisałęm w C . I coś ten debugger nie chce licznika TCNT0 popędzać :( Po prostu jest tam ciągle 0 :(

Może poradźcie jakiś program na AVR z symylatorem i kompilatorem C

- tylko jakis "inteligentny" i pod windows.

pzdr,

On Behalf Of Piotr Chmiel

Czegoś nie rozumiem. Chcesz w Timer0 zliczać impulsy (zew./wew.) i sprawdzać w programie czy osiągnął porządaną warość? Nie prościej, wpisać do Timer0 jakąś wartość i robiąc inne pożyteczne rzeczy, grzecznie czekać na przerwanie informujące o osiągnieciu porządanej liczby impulsów?

pzdr Artur

On Behalf Of Piotr Chmiel

Nie rozumiem. Bez włączonych przerwań licznik se będzie chodził w kółko. I _NIKT_ ni ebędzie o tym wiedział. Czy mogę spytać, dlaczego masz taką awersję do przerwań?

pzdr Artur

Chce żeby zaczął wogóle liczyć cykle zegara (nie ważne do ilu) a debugger nie chce nawet ruszyć licznikiem :(

NIE CHCE ŻADNYCH PRZERWAŃ !!!

PZDR,

Witaj Skoro nie u¿ywasz tego licznika do niczego, to mo¿e po prostu optymalizacja wyrzuci³a obs³ugê jego. Ale tylko tak sobie gdybam...

I niech se chodzi w kółko :) Tylko problem w tym że w tym debuggerze wogóle nie chodzi !!!!!!!! Co mi po przerwaniach skoro licznik nie chodzi !!!!!! Licznik nie chodzi ... jak licznik nie chodzi to się nie przepełni... jak się nie przepełni to nie bedzie przerwania...

teraz jaśniej ?

pzdr,

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required