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



Teraz jest 30 lis 2024, o 07:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 7 sty 2015, o 14:31 
Offline
Użytkownik

Dołączył(a): 21 gru 2014
Posty: 26
Pomógł: 0

Witam!
Chciałem wykonac program który wykorzystuje dwa switche jeden zapala wszystkie diody ( 7) a drugi wykonuje petle które zapalaja jedna diode a poprzednia gasza (1000>0100>0010>0001 etc) jednak po zapaleniu jednej diody uC sie zwiesza i nie chce isc dalej. Oto kod:
[
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
]
Chodziło mi głownie aby w kazdej chwili porgram mógł być przerwany ldatego w tych dwóch pentlach są instrukcje if.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2015, o 15:02 
Offline
Nowy

Dołączył(a): 05 sty 2014
Posty: 12
Lokalizacja: Malbork
Pomógł: 1

obejrzyj ten poradni
http://mirekk36.blogspot.com/2014/05/mi ... rawki.html


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2015, o 18:40 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

A co to za pętla for(;;)?

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2015, o 18:51 
Offline
Nowy

Dołączył(a): 05 sty 2014
Posty: 12
Lokalizacja: Malbork
Pomógł: 1

To pętla nieskończona, to samo co while(1)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2015, o 18:51 
Offline
Użytkownik

Dołączył(a): 21 gru 2014
Posty: 26
Pomógł: 0

to taka pętla która prowadzi do nieskonczoności. No np while(1) = for(;;) no i prawie to samo jest w do{}while. No ale różnice chyba każdy będzie widział
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To jest mój kod, tylko coś mi wydaje się za długi. Chciałem utworzyć funkcje która by zastępowała te podwójne ify tylko nie wiem jak się za to zabrac.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2015, o 15:19 
Offline
Użytkownik

Dołączył(a): 21 gru 2014
Posty: 26
Pomógł: 0

Witam, mam problemy z timerami, Mam atmege 32. Chcialem skorzystać z timera 8 bitowego pierwszego ( TCRR0 ) z prescallerem 256 bit ( TCCR0 |= (1 << CS01) | (1 << CS00) ) By otrzymać przerwanie co 100ms. Jednak moja Atmega nie reaguje po zapodaniu wsadu.

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: 12 sty 2015, o 15:38 
Offline
Użytkownik

Dołączył(a): 19 cze 2014
Posty: 247
Pomógł: 15

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

_________________
http://elektropanel.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2015, o 19:08 
Offline
Użytkownik

Dołączył(a): 21 gru 2014
Posty: 26
Pomógł: 0

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

Bez zmian, nadal nie działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2015, o 21:40 
Offline
Nowy

Dołączył(a): 22 gru 2014
Posty: 8
Pomógł: 0

Spróbuj przenieść deklaracje zmiennych counter, counter1 z procedury obsługi przerwania przed funkcję main:

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


Ponadto preskaler /256 ustawiany jest przez (1 << CS02) ;) Zajrzyj do dokumentacji, strona 82.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2015, o 22:05 
Offline
Użytkownik
Avatar użytkownika

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

Konfigurujesz Timer0 i obsługę przerwania masz dla Timera1.

Poza tym jeśli korzystasz z trybu CTC i ustawisz licznik TCNT0 na wartość 131 a OCR0 na 255 to timer zliczy ci 125 impulsów tylko do wystąpienia pierwszego przerwania. Bo po zrównaniu się TCNT0 z OCR0 (i wystąpieniu przerwania) licznik będzie liczył od 0 do 255 i w rezultacie przerwanie będzie występować po zliczeniu 256 impulsów. Trochę się chyba koledze pomyliło z trybem Normal i przerwaniami od przepełnienia.

W trybie CTC ustawia się wartość impulsów, które timer ma zliczyć w rejestrze OCR. Wtedy licznik TCNT zaczyna liczyć od zera i jeśli jego wartość zrówna się z OCR to zostanie wyzerowany i zacznie liczyć znów od zera. I przy okazji zostanie wywołane przerwanie Compare Match.

Konfiguracja przerwania powinna wyglądać tak
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: 14 sty 2015, o 20:57 
Offline
Użytkownik

Dołączył(a): 21 gru 2014
Posty: 26
Pomógł: 0

Dziekuje bardzo, wasze wskazówki bardzo pomogły mi:)



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ł: Google [Bot] i 1 gość


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