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



Teraz jest 10 sty 2026, o 20:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 23 lip 2014, o 01:20 
Offline
Nowy

Dołączył(a): 25 kwi 2014
Posty: 3
Pomógł: 0

Cześć, mam problem z konstrukcją kodu. Jestem laikiem, sensownie bawię się w avr kilka dni Otóż tworze licznik odliczający w dół z trzema wyświetlaczami, robię to od początku po kawałku i "polepszam" kolejne rzeczy których się uczę. Mam multiplesker działający na timerze, a odliczanie miałem dotychczas na "_delay" który chciałbym zastąpić mam jednak problem ze składnią. Wyświetlacze przełączam z czestotliwością 200 Hz. Dlatego też licząc przerwania po 200 powinienem zmienić wyświetlaną liczbę, tylko jak to zrobić i gdzie to umieścić. Wrzucam fragment kodu - główną pętle.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wiem że obsługa przycisku jest do wymiany, może kiedyś... Korzystam jeszcze z dodatkowego pliku nagłówkowego. W kodzie jest jeszcze multipleksacja.



Ostatnio edytowano 23 lip 2014, o 08:35 przez Isando, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lip 2014, o 07:10 
Offline
Użytkownik

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

Przede wszystkim kolego popraw znacznik syntax w którym wklejasz kod na syntax=c. Druga sprawa to w tym kodzie nie masz wogóle funkcji obsługującej przerwanie. Jaki to procesor?

Powinieneś po main umieścić funkcję:

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


Ten delay(1000) w switchu blokuje ci cały program na sekundę, czy takie miałeś założenie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lip 2014, o 08:42 
Offline
Nowy

Dołączył(a): 25 kwi 2014
Posty: 3
Pomógł: 0

Poprawiłem, mam taką funkcje wklejam poniżej. Delay to relikt przeszłości który to właśnie chce zastąpić w inny sposób mam co do tego pewien pomysł, nie wiem jak to skleić żeby działało.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A pomysł jest taki w ISR wstawiam przerw++ (zliczam przerwania do zmiennej przerw), następnie wstawiam if(przerw==200){odjemnik++)} a zmienną odjemnik odejmuje od i w pętli for którą wkleiłem w wyższym poście zamiast i--. Próbowałem w ten sposób jednak nie wiem gdzie wkleić tego if`a, no i generalnie coś nie działało, wyświetlacze pokazywały jakieś głupoty - odliczały ale nie to co powinny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lip 2014, o 08:59 
Offline
Użytkownik

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

Na twoim miejscu w przerwaniu tylko zajął bym się inkrementowaniem jakiejś zmiennej a całość sprawdzania, switch już w pętli głównej programu bym realizował.

Zrób sobie inkrementacje w ISR a w pętli głównej zrób np miganie diodą co 10 impulsów i już będziesz miał sprawdzone czy prawidłowo działa przerwanie i dioda miga co 2 sekundy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lip 2014, o 12:56 
Offline
Nowy

Dołączył(a): 25 kwi 2014
Posty: 3
Pomógł: 0

Poradziłem sobie inaczej, no ale dzięki pokombinuje i spróbuje się nauczyć coś więcej.



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

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