Goto page 1, 2 Next
Viki
Guest
Mon Oct 22, 2007 4:09 pm
Witam.
Podczepiłem do atmegi kwarc 16MHz i chciałem sprawdzic jak szybki
przebieg uzyskam na porcie wyjsciowym.
Oto program generujacy przebieg prostokatny.
DDRD=0xff;
PORTD=0xff;
while (1)
{
PORTD^=0xFF; //zmień stan LED
asm ("nop");
}
Na wyjsciu uzyskałem przebieg 1MHz.
Czy konstrukcja tego kontrolera nie pozwala na szybszy przebieg??
Pozdrawiam.
dziobu
Guest
Mon Oct 22, 2007 4:17 pm
Dnia 10/22/2007 5:09 PM, Użytkownik Viki napisał:
Quote:
Witam.
Podczepi^(3)em do atmegi kwarc 16MHz i chcia^(3)em sprawdzic jak szybki
przebieg uzyskam na porcie wyjsciowym.
Oto program generujacy przebieg prostokatny.
DDRD=0xff;
PORTD=0xff;
while (1)
{
PORTD^=0xFF; //zmien~ stan LED
asm ("nop");
po co nop?
Quote:
}
Na wyjsciu uzyska^(3)em przebieg 1MHz.
Czy konstrukcja tego kontrolera nie pozwala na szybszy przebieg??
Pozdrawiam.
clr r16
main:
com r16 ; 1
out PORTD, r16 ; 1
rjmp main ; 2
1+1+2 = 4 cykle
to powinno dać 4MHz na wyjściu. Chyba że o czymś zapomniałem ;)
--
Pozdrawiam # | _ \| __|/ __|/ __|
Paweł Konarski (k p a w e l @ o n e t . p l) # | _/| __|\__ \\__ \
www: pawkon.ath.cx # |_| | __|\___/\___/
____ pawelkon.go3.pl _________________________#_____
www.pess.pl ____
Konop
Guest
Mon Oct 22, 2007 5:29 pm
Quote:
clr r16
main:
com r16 ; 1
out PORTD, r16 ; 1
rjmp main ; 2
1+1+2 = 4 cykle
to powinno dać 4MHz na wyjściu. Chyba że o czymś zapomniałem ;)
Rjmp ma na pewno tylko 2 cykle?? Bo to taka architektura, która robi
wszystko naraz

... Więc nie wiem, czy to jakoś przez to wolniej nie
działa


... no ale tak czy siak, prościej będzie tak:
ldi r16 , 0xFF ; same 1 do r16
petla:
out PIND , r16
rjmp PETLA
To taki przydatny trik - wpisanie 1 do jakiegoś bitu PINx neguje
odpowiedni pin portu (rejestr PORTx, nie zmienia DDRx)

... Jedna
instrukcja mniej, to według Twoich obliczeń 1+2 = 3 cykle, 16MHz/3 =
5,333MHz


:D
Pozdrawiam
Konop
Grzegorz Kurczyk
Guest
Mon Oct 22, 2007 6:26 pm
Użytkownik Konop napisał:
Quote:
ldi r16 , 0xFF ; same 1 do r16
petla:
out PIND , r16
rjmp PETLA
Tylko nie na każdej ATmedze to działa...
Pozdrawiam
Grzegorz
dziobu
Guest
Mon Oct 22, 2007 6:36 pm
Dnia 10/22/2007 7:26 PM, Użytkownik Grzegorz Kurczyk napisał:
Quote:
Użytkownik Konop napisał:
ldi r16 , 0xFF ; same 1 do r16
petla:
out PIND , r16
rjmp PETLA
Tylko nie na każdej ATmedze to działa...
A mógłbyś coś więcej napisać?
Albo przynajmniej na których to działa. Szybko przeglądnąłem opis
ATmegi8 i w sumie nie znalazłem nic na ten temat.
--
Pozdrawiam # | _ \| __|/ __|/ __|
Paweł Konarski (k p a w e l @ o n e t . p l) # | _/| __|\__ \\__ \
www: pawkon.ath.cx # |_| | __|\___/\___/
____ pawelkon.go3.pl _________________________#_____
www.pess.pl ____
Sawik
Guest
Mon Oct 22, 2007 6:42 pm
Dnia 22.10.2007 Konop <konoppo@gazeta.pl> napisał/a:
Quote:
To taki przydatny trik - wpisanie 1 do jakiegoś bitu PINx neguje
odpowiedni pin portu (rejestr PORTx, nie zmienia DDRx)

... Jedna
instrukcja mniej, to według Twoich obliczeń 1+2 = 3 cykle, 16MHz/3 =
5,333MHz


Bardzo przydatny trik

A swoją drogą to częstotliwość będzie jeszcze 2x
mniejsza, bo te 5,333MHz to częstotliwość zmiany stanu portu, a na pełen
okres prostokątu składają się 2 takie zmiany.
--
pozdrawiam
Sawi
Bogdan G
Guest
Mon Oct 22, 2007 7:50 pm
Tak samo szybko ale niesymetrycznie:
petla:
sbi PIND ,1
cbi PIND ,1
rjmp PETLA
Szybciej:
ldi r16 , 0xFF
ldi r15 , 0
petla:
out PORTD, r15
out PORTD, r16
rjmp PETLA
Jeszcze szybciej i z przytupem:
ldi r16 , 0xAA
ldi r15 , 0x55
petla:
out PORTD, r15
out PORTD, r16
..
..
out PORTD, r15
out PORTD, r16
rjmp PETLA
badworm
Guest
Mon Oct 22, 2007 8:53 pm
Dnia Mon, 22 Oct 2007 20:58:35 +0200, Piotr Chmiel napisał(a):
Quote:
A zegar ustawiłeś na zewnętrzny?
No i czy przypadkiem ta MEGA nie ma włączonego fuse'a odpowiedzialnego
za dzielenie częstotliwości kwarca przez 8? ;>
--
Pozdrawiam Bad Worm badworm[maupa]post{kopek}pl
IET10@WEiA-PG student
GG#2400455 ICQ#320399066
http://photobucket.com/albums/b252/badworm/
Viki
Guest
Mon Oct 22, 2007 9:54 pm
Quote:
A zegar ustawiłeś na zewnętrzny?
tak.
Quote:
No i czy przypadkiem ta MEGA nie ma włączonego fuse'a odpowiedzialnego
za dzielenie częstotliwości kwarca przez 8? ;
uzywam ATmega8535, ona nie ma tego fuse'a
uzywam timera tak ustawionego ze nie ma watpliwosci iz CLK to 16MHz.
JS
Guest
Tue Oct 23, 2007 12:41 am
W artykule <ffin3m$ksn$1@news.onet.pl> dziobu napisal(a):
Quote:
Dnia 10/22/2007 7:26 PM, Użytkownik Grzegorz Kurczyk napisał:
Użytkownik Konop napisał:
ldi r16 , 0xFF ; same 1 do r16
petla:
out PIND , r16
rjmp PETLA
Tylko nie na każdej ATmedze to działa...
A mógłbyś coś więcej napisać?
Albo przynajmniej na których to działa. Szybko przeglądnąłem opis
ATmegi8 i w sumie nie znalazłem nic na ten temat.
Działa na '256x, '128x, '640. Na "zwykłej" ATmedze 128 (i mniejszych) - nie,
PIN-y są tylko do odczytu.
--
Pozdrawiam
Jarosław Szynal
Grzegorz Kurczyk
Guest
Tue Oct 23, 2007 8:05 am
Użytkownik Piotr Chmiel napisał:
Quote:
while (1)
{
PORTD^=0xFF; //zmie? stan LED
asm ("nop");
}
Na wyjsciu uzyska?em przebieg 1MHz.
Czy konstrukcja tego kontrolera nie pozwala na szybszy przebieg??
Taka konstrukcja mogła zostać przetłumaczona na coś takiego
skok:
in r24, PORTD
ldi r25, 0xFF
eor r24, r25
out PORTD, r24
nop
rjmp skok
daje to 7 taktów na wygenerowanie jednego zbocza czyli 14 taktów na
okres. Daje to 16/14 = ~ 1.14MHz
Pozdrawiam
Grzegorz
pawel
Guest
Tue Oct 23, 2007 10:11 am
Ja bym spróbowal wykorzystac timer w trybie OC i wyjscie timera na pin.
Pawel
Witold Kuczek
Guest
Tue Oct 23, 2007 10:42 am
Jakie macie doświadczenia jeśli chodzi o przetaktowanie ATmegi, podobno
20MHz wytrzyma pytanie tylko czy nie dzieją się wtedy dziwne rzeczy?
Pozdrawiam.
Grzegorz Kurczyk
Guest
Tue Oct 23, 2007 11:05 am
Użytkownik pawel napisał:
Quote:
Ja bym spróbowal wykorzystac timer w trybie OC i wyjscie timera na pin.
Pawel
No ale to już będzie generator sprzętowy
pawel
Guest
Tue Oct 23, 2007 11:08 am
Użytkownik "Grzegorz Kurczyk" <grzegorz@antispam.control.slupsk.pl> napisał
w wiadomości news:ffkhcv$hl9$1@nemesis.news.tpi.pl...
Quote:
Użytkownik pawel napisał:
Ja bym spróbowal wykorzystac timer w trybie OC i wyjscie timera na pin.
Pawel
No ale to już będzie generator sprzętowy
Pytanie brzmiało:
"Czy konstrukcja tego kontrolera nie pozwala na szybszy przebieg??"
Paweł
Goto page 1, 2 Next