Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 lis 2024, o 07:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 29 lis 2012, o 22:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2012
Posty: 88
Pomógł: 2

Witam, mój pierwszy post, ale czytam od jakiegoś czasuforum.

Chciałbym wygenerować na Atmedze8A-PU sinus o częstotliwości do 40kHz przy pomocy PWM. Myślałem, że będzie to łatwe zadanie, ale mam problem.

Powiedzmy, że mam taktowanie 8MHz. Ilość próbek sinusa 256. Częstotliwość funkcji sinus to 40kHz czyli 25us. Jeśli ma być 256 próbek to każda próbka wymaga 97ns, czyli bardzo mało.

Przerwanie wychodzi mi tyle 8MHz/1prescaler/256 OCRx= 31250kHz a ja potrzebuje więcej na jedną próbkę.

Ok, to zmniejszam ilość próbek do 128/okres a częstotliwość zegara do 16MHz = 125kHz = 8us. Teraz 25us/128=0.2us co dalej jest znacznie mniejsze od 8us.

Czy jest mój problem rozwiązywalny?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2012, o 22:40 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Podstawowe pytanie: czy to koniecznie musi być sinus, oraz do czego to ma służyć (czy dobrze myślę że chodzi o dalmierz ultradźwiękowy)?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2012, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2012
Posty: 88
Pomógł: 2

ma to być generator do ultradźwięków od 30 do 40kHz. Ma to być prostokąt, piła i miał być sinus. Czy mogę drastycznie zmniejszyć liczbę próbek a potem to wygładzić filtrem RC? Czy jest sens lub da się to zrobić prościej.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2012, o 22:51 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27315
Lokalizacja: Szczecin
Pomógł: 1041

gedo napisał(a):
Powiedzmy, że mam taktowanie 8MHz.


Tak się zastanawiam, czy jakieś szczególne więzi łączą cię z tym 8MHz ? ;)

przeliczałeś sobie to wszystko dla 20MHz ? ... jeśli nie to może warto do pewnych zastosowań sięgnąć po zewnętrzny kwarc i znacznie większe taktowanie ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 lis 2012, o 23:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2012
Posty: 88
Pomógł: 2

mirekk36, myślałem już o wyższym taktowaniu :)
Cytuj:
Ok, to zmniejszam ilość próbek do 128/okres a częstotliwość zegara do16MHz = 125kHz = 8us. Teraz 25us/128=0.2us co dalej jest znacznie mniejsze od 8us.


no dobra to dalej - zmniejszam ilość próbek

40kHz/37póbek= 25us/37 = 0.6us na jedną próbkę
20MHz/64 (ograniczam licznik TCNTx do wartosci 64) = 3.2us ( co tyle przerwanie )

3.2us * 37 próbek = 118us to jest czas prawie pięciokrotnie gorszy od 25us. Dobrze z tym myślę? Macie Panowie inne rozwiązanie?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 lis 2012, o 00:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27315
Lokalizacja: Szczecin
Pomógł: 1041

no oczywiście że w takim wypadku (kolega krafin dobrze przeczuwał) jak już się za to zabierać to tak jak mówi Antystatyczny.

TYLKO I wyłącznie tablicowanie sinusa, broń boże obliczanie go w locie ....

gedo ---> a ty w swoich obliczeniach zapomniałeś zupełnie o preskalerze - i jakoś strasznie dziwnie to próbujesz obliczać - w ogóle nie wiem o co chodzi w tych obliczeniach.... ale mam propozycję. Weź zerknij do książki niebieskiej do rozdziału o multipleksowaniu wyświetlaczy LED i zobacz jak tam się oblicza częstotliwość przerwań do takich celów - to by ci DUUUUŻO ułatwiło przemyślenia i naprowadziło na dobrą drogę. Może pominąłeś ten rozdział ???? hmmmm ???

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 lis 2012, o 01:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2012
Posty: 88
Pomógł: 2

mirekk36, jestem już w dziale sterowanie PWM - trochę dalej. Wydaję mi się, że rozumiem na razie wszystko. Problem mam z otrzymaniem tylko tej częstotliwości.

preskaler pominąłem bo ustawiam go na 1
sinus oczywiście mam w tablicy

Antystatyczny, mam wartości sinusa w tablicy i je podstawiam do rejestru OCRx i dzięki modulacji PWM zmieniam amplitudę na wyjściu. Problem mam z otrzymaniem sinusa o częstotliwości 40kHz. Kurcze aż tak słabo to wytłumaczyłem.. ;)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2012, o 21:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2012
Posty: 88
Pomógł: 2

znalazłem projekt który będzie użyteczny do osiągnięcia mojego celu, problem mam natomiast taki:

tak jest deklarowana tablica w pamięci
Kod:
const uint8_t trianglewave[] __attribute__ ((section (".MySection5")))= ...


w pliku makefile jest taki zapis
Kod:
#Define sections where to store variables
CFLAGS += -Wl,-section-start=.MySection1=0x1B00
CFLAGS += -Wl,-section-start=.MySection2=0x1C00
CFLAGS += -Wl,-section-start=.MySection3=0x1D00
CFLAGS += -Wl,-section-start=.MySection4=0x1E00
CFLAGS += -Wl,-section-start=.MySection5=0x1F00


jak mogę taki zapis zastosować w moim makefile w eclipse bo bez tego najprawdopodobniej mam błąd:
Kod:
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: section .MySection5 [00000080 -> 0000017f] overlaps section .data [00000080 -> 0000027f]
make: *** [test2.elf] Error 1

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO