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



Teraz jest 1 mar 2026, o 10:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 24 sty 2016, o 23:20 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Chciałbym, zrobić lampki choinkowe. Nie wiem ile timerów musze wykorzystać. Nie bardzo to jeszczee wiem jak rozumieć. Bo timery są w przerwaniach nie mam tak, że ustawiam timer 10 sek np. delay_on i mi zapala za 10 sek i z tym mam problem.
Chce zrobić aby zapalały się 4 lampki. Jedna 5 sekund gaśnie i zapala się druga na 10 gaśnie, 3 na 15 i gaśnie i 4 na 20 i gaśnie.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie wiem jak to ogarnać:(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2016, o 23:27 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Jeden timer wystarczy.
Jaki uc i jaki rezonator?
Musisz przeliczyc i ustawic timer by miec 1 sek.
W przerwaniu zliczasz i co sekunde zwiekszasz jakas zmienna np sek.
W petli while juz prosto, po sek sprawdzasz i wykonujesz co chcesz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2016, o 00:33 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Atmega16, bez rezonatora. 8000 000Mhz.

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


W dobrym kierunku idę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2016, o 08:54 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Hmm, sciagnij sobie mkavr-calkulator, tam masz zakladke do timerow.

Co do rezonatora, masz 8Mhz, a mówisz ze nie masz..znaczy masz włączony wewnętrzny oscylator na 1MHz?
Jak masz ustawione fuse bity?

Program powinien wygladac tak:

main:
>ustawienie portow i timera
>while
-sprawdzasz przerwanie
-migasz ledka

vector przerwania poza main...


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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2016, o 11:26 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1085
Pomógł: 73

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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 22:18 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Oscylator wewnętrzny 8MHz.

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


I tak zrobiłem, że każda się pali po 10 sek. Ale jak miałem ~32 200 w OCR1A to wyrzucił mi błąd. Ale jak wpisałem 7811 to jest ok, nie wiem dlaczego krzyczał dla 32 200.

Tak jak rozumiem tak zrobiłem, nie posiłkuje się na razie żadnym z programów kolegów bo chciałem zobaczyć czy sam dam radę. Niestety cała linijka od przerwania:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

podkreślona na czerwono

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 22:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Sprawdź dokładnie kod a szczególnie nawiasy klamrowe. Taki błąd się pojawia jeśli funkcję obsługi przerwania umieści się np. wewnątrz funkcji main a nie poza nią.

W przedstawionym kodzie tak właśnie jest.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sty 2016, o 22:58 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Obrazek
Faktycznie ;( dziękuje za pomoc.
A taki błąd co oznacza?

Chyba z tymi flagami coś nie tak. Jak już warunek jest spełniony to ja chce je wyzerować na tym polega błąd?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2016, o 00:04 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Poprawiłem to ale dalej mi to nie działa więc zrobiłem jedną lampke:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Też nie działa. Chyba z timerem coś pomieszałem. Mógłby ktoś zerknąć. W OCR1A wyszło mi 7811,5 ale wstawiłem 7811 czy to przez to?



Ostatnio edytowano 27 sty 2016, o 00:15 przez elektronikq, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2016, o 00:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

W każdym obiegu pętli while tworzysz dwie zmienne flaga i flaga2. Zmienne te są zmiennymi lokalnymi bo są tworzone wewnątrz funkcji main. Zmienne lokalne tworzone są na stosie i jeśli nie przypiszesz im jakiś konkretnych wartości to wtedy będą miały przypadkowe wartości.

Kompilator ostrzega, że próbujesz użyć zmiennej lokalnej bez jej wcześniejszej inicjalizacji. Podczas tworzenia tych zmiennych przypisz im np. zerowe wartości.

I przenieś je poza while do funkcji main. Bo teraz to niepotrzebnie z każdym obiegiem pętli są wciąz tworzone na nowo.

------------------------ [ Dodano po: 10 minutach ]

Chodzi ci o to, że ten fragment ci 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.

Tak napisałeś program, że nie będzie działał.

No popatrz. Na początku zmienna keylock ma wartość równą zero. Po wciśnięciu klawisza ten warunek zostaje spełniony
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W jego wnętrzu, zmiennej keylock przypisujesz wartość jeden. W każdym następnym obiegu pętli while ten warunek już nie będzie spełniony. Bo wartość keylock jest różna od zera. Więc jak ma się wykonać to co jest we wnętrzu tego warunku.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 sty 2016, o 20:34 
Offline
Użytkownik

Dołączył(a): 01 lis 2015
Posty: 129
Pomógł: 0

Dziękuje za pomoc:) Udało się zrobić ze zrozumieniem.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO