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



Teraz jest 18 mar 2026, o 10:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 2 sty 2014, o 14:43 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Witam,

mam problem z konfiguracją PWM'a w zestawie AVR-CAN firmy Olimex opartym na ww. mikrokontrolerze.

Kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Konfiguracja moim zdaniem ok., natomiast na wyjściu PB4 ciągle mam ok 2.1V. Co robię źle :P ?

Dzięki za pomoc :)
Pozdrawiam w Nowym Roku :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 15:18 
Offline
Użytkownik

Dołączył(a): 19 gru 2012
Posty: 712
Lokalizacja: Opole
Pomógł: 23

A nie jest tak że stan na PB4 zmienia się tak szybko że miernik nie jest w stanie zareagować i wyświetla Ci ok średniej ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 16:04 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Niestety podpięcie diody oraz dodanie opóźnień nie pomogło.

Przykładowo:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


powinno powodować płynną zmianę jasności diody. Jednak po dodaniu tego fragmentu widoczne jest jedynie jej szybkie miganie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 18:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 lis 2013
Posty: 108
Pomógł: 0

Mam pytanie PB4 jest wyjściem sprzętowego PWM tego procka sprawdziłeś to w nocie ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 18:56 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Tak



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 19:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 lis 2013
Posty: 108
Pomógł: 0

A zrób opóźnienie na każdej pętli kilka milisekund.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 19:49 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Niestety nic nie pomogło :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 kwi 2013
Posty: 53
Lokalizacja: łojzimek
Pomógł: 13

Kod:
TCCR2A |= (0 << FOC2A);

Po co ten wpis jest w kodzie i czemu ma służyć?
Może miało być :
Kod:
TCCR2A &= ~(1 << FOC2A);

Ale jeśli wcześniej nie ustawiałeś tego bitu, to nie trzeba nic przy nim grzebać.

_________________
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 20:34 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Tak, tak, wiem :)
Kiedyś to wpisałem, bo właśnie PWM nie działa i mi zostało :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 22:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 lis 2013
Posty: 108
Pomógł: 0

Nie mam kostki AT90CAN128 , ale wrzuciłem kod na ATmega 32 z BB , na PWM sprzetowym z Timer0 , i powiem tak próbowałem na wiele sposobów i u mnie też nie działa. Pewnie diabeł tkwi w szczegółach , o których na swoim etapie nauki programowania nie mam pojęcia. Poniżej jeden z wielu kodów który u mnie nie działał.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 23:21 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

AndreAs napisał(a):
Nie mam kostki AT90CAN128 , ale wrzuciłem kod na ATmega 32 z BB , na PWM sprzetowym z Timer0 , i powiem tak próbowałem na wiele sposobów i u mnie też nie działa. Pewnie diabeł tkwi w szczegółach , o których na swoim etapie nauki programowania nie mam pojęcia. Poniżej jeden z wielu kodów który u mnie nie działał.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A jakim zegarem popędzasz tą megę?
Może w tym jest problem? Rzeczy dzieją się za szybko żebyś "coś zauważył"?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 14:53 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Jeśli chodzi o mnie i moją AT90CAN to jest to 8Mhz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 15:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 kwi 2013
Posty: 53
Lokalizacja: łojzimek
Pomógł: 13

Spróbuj jeszcze zamienić PB4 na DDB4, i zdefiniować zmienną "i" jeszcze przed MAINem, choć to nie powinno mieć wpływu. Delaya można zwiększyć do 100ms dla pewności.
Tak przeprowadzona konfiguracja na Timerze 0 i 1 w ATMega88PA działa bezproblemowo, więc problem chyba leży po stronie sprzętu.

_________________
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 17:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 lis 2013
Posty: 108
Pomógł: 0

A u mnie jest kwarc 11059200 Hz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 18:02 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Stworzyłem nowy projekt, z którym zdefiniowałem taktowanie 8 MHz poprzez parametr F_CPU w Project->xxxxProperties->Toolchain->Symbols. . Dodatkowo zmieniłem preskaler na 8, a opóźnienia w pętlach dałem na 10ms.

I taki kod na zestawie olimexa (AT90CAN128) działa poprawnie.

Po przerzuceniu go do 1 wersji projektu, gdzie wykorzystuję bibliotekę CANowską z ATMELa niestety dioda miga (czyli sytuacja się powtarza ;/). Kod jest identyczny, natomiast parametr F_CPU jest zdefiniowany w pliku nagłówkowym config.h , ponieważ tego wymaga CAN.
Wygląda to tam następująco:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie mogę definiować taktowania jak wcześniej (Toolchain), ponieważ występują konflikt.

Jakieś pomysły jak rozwiązać ten problem :/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 21:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 kwi 2013
Posty: 53
Lokalizacja: łojzimek
Pomógł: 13

F_CPU definiujesz albo w każdym pliku (nie zalecane) albo tylko w toolchainie.
Zakomentuj tą linię w config.h a definicję daj tylko w toolchain>symbols


Autor postu otrzymał pochwałę

_________________
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 23:13 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Zakomentowanie F_CPU w "config.h" załatwiło sprawę :)

Dzięki za pomoc :)



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: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 93 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