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



Teraz jest 29 lis 2024, o 14:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 16 mar 2016, o 19:45 
Offline
Nowy

Dołączył(a): 16 mar 2016
Posty: 6
Pomógł: 0

Witam jestem właśnie na etapie nauki programowania mikrokontrolerów AVR. Uczę się tego z książki ,,Mikrokontrolery AVR język C Podstawy Programowania" autorstwa pana Mirosława Kardaś. Kod przepisany prawie linijka w linijce nie działa. Może ktoś byłby w stanie mi pomóc? Ps. Korzystam z Atmega8A, Eclipse Mars, AVR Dude i MK AVR Calculator. Problem jest taki że dioda świeci cały czas z taką samą jasnością. Maksymalną lub zbliżoną do maksymalnej.
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: 16 mar 2016, o 20:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak pętla for nie ma klamer to tylko jedna, ta pierwsza instrukcja jest realizowana. Opóźnienie jest poza pętlą for.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 20:53 
Offline
Nowy

Dołączył(a): 16 mar 2016
Posty: 6
Pomógł: 0

Ale głupi błąd. Poprawiłem. Po poprawce problem jest dalej nie rozwiązany dlatego że teraz widać jak dioda miga.
edit : Dioda miga przy preskalerze = 8, przy preskalerze = 1 program działa poprawnie. Ale w dalszym ciągu nasuwa mi się pytanie dlaczego przy preskalerze=8 dioda miga. Przecież 8MHZ/8/200=5kHz a to wciąż duża częstotliwość.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 21:12 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

No tak, ale jeśli to pwm 8bitowy to jeszcze 5000Hz/255 = 20 a to jest za mało powinno być gdzieś 50.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 21:45 
Offline
Nowy

Dołączył(a): 16 mar 2016
Posty: 6
Pomógł: 0

A nie jest tak że najpierw preskaler dzieli przez 8 a potem dzięki ustawieniu OCR2=200; licznik zlicza do 200 i startuje od nowa. A wiec jest 8MHz/8/200??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2016, o 21:54 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

No tak częstotliwość przerwania masz 5khz, ale przebieg na wyjściu ma w tym przypadku 20Hz.
Masz przerwanie a tam inkrementacja zmiennej i sprawdzenie czy zmienna jest już większa od zmiennej w której jest wartość pwm jeśli tak to wystaw stan wysoki, jeśli nie to stan niski, później kolejna pętla i dodanie do zmiennej jeden i sprawdzenie i np może być tak, że jest cały czas jeden więc częstotliwość pwm zależy od typu zmiennej którą inkrementujesz w przerwaniu. Najlepiej przeanalizuj sobie cały kod krok po kroku i pewnie wtedy zrozumiesz, bo ja zapewne nie zbyt przybliżyłem ci tematu.


Autor postu otrzymał pochwałę


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

Strefa czasowa: UTC + 1


Kto przegląda forum

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