RTV forum PL | NewsGroups PL

Mrugająca dioda na Atmedze: problem z portem PC5 i Timerem 1

"hello world" avr - pytanie

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Mrugająca dioda na Atmedze: problem z portem PC5 i Timerem 1

Szymon Kubicki
Guest

Thu Dec 14, 2006 10:41 pm   



Witam!

Pytanie z kategorii mruganie dioda na atmedze.

Dioda podpieta do portu PC5, wykorzystuje sobie Timer1. Tak wyglada kod:


==============================
..org 0x0000
rjmp main

main:

sbi DDRB, DDB1
sbi DDRC, DDC5

ldi R16, (0<<COM1A1)|(1<<COM1A0)
out TCCR1A, R16

ldi R16, (1<<CS02)|(1<<CS00)
out TCCR1B, R16

loop:

sbic PORTB,1
sbi PORTC, PORTC5
sbis PORTB,1
cbi PORTC, PORTC5
rjmp loop
==============================

Diodka sie nie zapala. Jednakze port PB1 zmienia stany a PC5 nie chce.
W symulatorze AVRStudio dziala. Nie mam za bardzo juz pomyslu.
Jesli ktos mialby jakis pomysl to bylby wdzieczny za wskazowke.

pozdrawiam

--
Szymon

Robert Z.
Guest

Thu Dec 14, 2006 10:41 pm   



Użytkownik "Szymon Kubicki" <Szymon@no.spam.terror.org.pl> napisał w
wiadomości news:slrneo3gd0.css.Szymon@terror.icm.edu.pl...
.....
Quote:

Diodka sie nie zapala. Jednakze port PB1 zmienia stany a PC5 nie chce.
W symulatorze AVRStudio dziala. Nie mam za bardzo juz pomyslu.
Jesli ktos mialby jakis pomysl to bylby wdzieczny za wskazowke.

pozdrawiam

--
Szymon

Zapewne przeszkadza JTAG. Wylacz jego obsluge naprzyklad za pomoca fusebitu
JTAGEN.
pozdrawiam

Szymon Kubicki
Guest

Fri Dec 15, 2006 12:40 am   



Robert Z. zeznal:
Quote:

Zapewne przeszkadza JTAG. Wylacz jego obsluge naprzyklad za pomoca fusebitu
JTAGEN.

Nie napisalem ze to atmega8 w zwiazku z tym nie mam takiego bitu.

pozdrawiam

--
Szymon

Grzegorz Kurczyk
Guest

Fri Dec 15, 2006 12:56 am   



Hmmm... dość dziwny kod.
Uruchamiasz TIMER1 w trybie CTC Toggle i badasz stan wyjścia
"togglownicy" aby zapalać diodę. Nie prościej Podłączyć tego LED-a
prosto pod nogę PB1 ??? Jeśli już się upierasz przy takim rozwiązaniu to
powinieneś testować stan wejścia PINB1, bo TIMER1 w trybie CTC czy PWM
nie zmienia wartości bitów w PORTB tylko wymusza stany logiczne na
wyjściu PB1 (lub PB2) więc w Twoim przykładzie powinno być raczej:

loop:

sbic PINB,1
sbi PORTC, PORTC5
sbis PINB,1
cbi PORTC, PORTC5
rjmp loop


W AVRStudio nie wierz tak bezkrytycznie, bo już niejednokrotnie dało mi
popalić i od conajmniej dwóch lat trzymam się od niego z daleka. Często
miałem odwrotne sytuacje niż Twoja. W AvrStudio program nie chciał
działać, a po wgraniu do procka śmigał aż miło.

Jeszcze jedna sprawa mnie dziwi w tym przykładowym programie. Nie
inicjalizujesz wartości rejestru OCR1A.

Pozdrawiam
Grzegorz

Szymon Kubicki
Guest

Fri Dec 15, 2006 7:40 am   



Grzegorz Kurczyk zeznal:
Quote:

Hmmm... dość dziwny kod.
Uruchamiasz TIMER1 w trybie CTC Toggle i badasz stan wyjścia
"togglownicy" aby zapalać diodę. Nie prościej Podłączyć tego LED-a
prosto pod nogę PB1 ??? Jeśli już się upierasz przy takim rozwiązaniu to
powinieneś testować stan wejścia PINB1, bo TIMER1 w trybie CTC czy PWM
nie zmienia wartości bitów w PORTB tylko wymusza stany logiczne na
wyjściu PB1 (lub PB2) więc w Twoim przykładzie powinno być raczej:

Diode juz mialem podlutowana do tego wyjscia. Ja wiem ze to nie problem
przelutowac ale tez teoretycznie nie problem obejsc to programem.
A jak inaczej to zrobic wykorzystujac timer? Mozna dorzucic jeszcze
obsluge przerwania po przepelnieniu licznika ale tak jest chyba
prosciej?

Quote:
loop:

sbic PINB,1
sbi PORTC, PORTC5
sbis PINB,1
cbi PORTC, PORTC5
rjmp loop

Dziala Smile
Aczkolwiek wczesniejsza wersja wykorzystywala skoki do etykiet i tez
sprawdzalem PINx i nie dzialalo. Ale teraz dziala, dzieki :)

Quote:
Jeszcze jedna sprawa mnie dziwi w tym przykładowym programie. Nie
inicjalizujesz wartości rejestru OCR1A.

No bo to w sumie nie tryb CTC tylko normal (WGM1.3-0 = 00). Licznik
zlicza do pelnej swojej pojemnosci a ze przy okazji dziala ustawienie
generowania sygnalu na OC1A/PB1 no to tak zrobilem. Na poczatku robilem
tak jak mowisz ale ostatecznie wyszlo tak.

pozdrawiam

--
Szymon

Grzegorz Kurczyk
Guest

Fri Dec 15, 2006 8:29 am   



Użytkownik Szymon Kubicki napisał:
Quote:
Diode juz mialem podlutowana do tego wyjscia. Ja wiem ze to nie problem
przelutowac ale tez teoretycznie nie problem obejsc to programem.
A jak inaczej to zrobic wykorzystujac timer? Mozna dorzucic jeszcze
obsluge przerwania po przepelnieniu licznika ale tak jest chyba
prosciej?

Przerwania aż się proszą Smile
Ewentualnie testować stan licznika w rejestrze TIFR

Quote:
Dziala Smile
Aczkolwiek wczesniejsza wersja wykorzystywala skoki do etykiet i tez
sprawdzalem PINx i nie dzialalo. Ale teraz dziala, dzieki :)


Jeszcze jedna sprawa mnie dziwi w tym przykładowym programie. Nie
inicjalizujesz wartości rejestru OCR1A.


No bo to w sumie nie tryb CTC tylko normal (WGM1.3-0 = 00).

Aaa... fakrycznie. Późna pora już była i coś mi się pozajączkowało :-)

Pozdrawiam
Grzegorz

Szymon Kubicki
Guest

Fri Dec 15, 2006 9:40 am   



Grzegorz Kurczyk zeznal:
Quote:
Użytkownik Szymon Kubicki napisał:
Diode juz mialem podlutowana do tego wyjscia. Ja wiem ze to nie problem
przelutowac ale tez teoretycznie nie problem obejsc to programem.
A jak inaczej to zrobic wykorzystujac timer? Mozna dorzucic jeszcze
obsluge przerwania po przepelnieniu licznika ale tak jest chyba
prosciej?

Przerwania aż się proszą Smile
Ewentualnie testować stan licznika w rejestrze TIFR

Tak myslalem. Ale tej diodce to juz dam spokoj Smile
To jest ogolnie moj debiut na avr. Uklad dziala, programator tez, teraz
bedzie sie mozna skupic na zadaniu.

Dzieki za pomoc i pozdrawiam


--
Szymon

elektroda NewsGroups Forum Index - Elektronika Polska - Mrugająca dioda na Atmedze: problem z portem PC5 i Timerem 1

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map