RTV forum PL | NewsGroups PL

Jak osiągnąć wyższe częstotliwości sygnału na porcie ATmega z kwarcem 16MHz?

ATmega szybkosc portu

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak osiągnąć wyższe częstotliwości sygnału na porcie ATmega z kwarcem 16MHz?

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 Razz... Więc nie wiem, czy to jakoś przez to wolniej nie
działa RazzRazz... 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) Smile... Jedna
instrukcja mniej, to według Twoich obliczeń 1+2 = 3 cykle, 16MHz/3 =
5,333MHz Very HappyVery Happy: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) Smile... Jedna
instrukcja mniej, to według Twoich obliczeń 1+2 = 3 cykle, 16MHz/3 =
5,333MHz Very HappyVery HappyVery Happy

Bardzo przydatny trik Smile 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 Smile

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 Smile

Pytanie brzmiało:
"Czy konstrukcja tego kontrolera nie pozwala na szybszy przebieg??"

Paweł

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak osiągnąć wyższe częstotliwości sygnału na porcie ATmega z kwarcem 16MHz?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map