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



Teraz jest 25 kwi 2024, o 08:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
 Tytuł: Wskaźniki
PostNapisane: 2 mar 2018, o 12:36 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

Witam,
Nie ogarniam tego.

uint8_t godzina=10;
*
*
uint8_t *wsk_godzina = &godzina;

No i oki.
Tworzę sobie funkcję

void godzina_plus()
{
g=*wsk_godzina;

g1 = g+1;

*wsk_godzina = g1;

}
I wszystko się sypie, ale jak pominę *wsk_godzina = g1;, to jak wyświetlam zmienną g1 to liczy i wyświetla ją dobrze.
Jak po operacji chcę tą wartość zapisać do pamięci wskazanej wszystko się sypie. Jak przypisuję konkretną cyfrę np *wsk_godzina = 8; to jest ok.
Nie wiem o co kaman.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 12:47 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

Wstaw Kod w cywilizowany sposób. Wtedy pomyślimy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 13:08 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

Dobra działa, wyświetlenie wyniku na LCD pokazało co się dzieje. Tak jak miałem wciśnięty swich to on dodawał non top. I nie wiedziałem dlaczego zamiast 1 dodał np 47, teraz wiem że on po prostu 47 razy dodał 1. Tak przy okazji mam inne pytanko :

Napisałem kod zegarka, długo siedziałem nad obliczeniem sekundy. Jest powiedzmy ok, tam ma dobie sie może trochę rozjedzie.
O co chodzi.
Cały kod jest zawarty w funkcji lcd_przerwa() wywołanej przez timer
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak w funkcji lcd_przerwa zostawię tylko by dodawał mi sekundę,
a całą resztę zostawiam w głównej pętli while(1) to zaczyna mi napradę widocznie się spóźniać chyba ok 3 sekund na 10.
Nie wiem dlaczego.
A chciałem dać ten kod włąśnie do głównej pętli bo wtedy na biezaco mogę operować na godzinie, a tak tylko jak jest przerwanie czyli co 1s.
Dlaczego to zwalnia?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 14:14 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

Wyświetlanie czegokolwiek na lcd w przerwaniu to nie jest najlepszy pomysł, pokaż kod bo tak to wróżenie z fusów.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 14:19 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

mircoLab napisał(a):
Cały kod jest zawarty w funkcji lcd_przerwa() wywołanej przez timer

Panie kolego jeśli już robisz TAK karkołomne rzeczy to proszę obejrzyj sobie to:



a tak w ogóle to polecam zacznij od książki:

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 14:27 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

mirekk36 napisał(a):

Dzięki! Chyba bez tego się nie obejdzie

------------------------ [ Dodano po: 1 minucie ]

Harry napisał(a):
Wyświetlanie czegokolwiek na lcd w przerwaniu to nie jest najlepszy pomysł, pokaż kod bo tak to wróżenie z fusów.


Nie mam pojęcia w jak inny sposób wyświetlać aktualny czas :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 15:00 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

mircoLab napisał(a):
Nie mam pojęcia w jak inny sposób wyświetlać aktualny czas

Dlatego wspominałem, że warto zacząć od tej książki ponieważ borykasz się na razie z brakiem mega podstawowych technik programowania a do tego jeszcze nie rozumiesz jak działają przerwania w prockach. Dlatego obejrzyj też koniecznie ten poradnik wideo...

Co do istoty rzeczy, to wyświetlanie na LCD organizuje się z poziomu pętli głównej programu czy innych funkcji, w przerwaniach zaś wykonujesz tylko krótkie konieczne operacje

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 2 mar 2018, o 21:17 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

zubik napisał(a):
Tutaj chodziło kolegom żebyś więcej tego kodu pokazał a nie takie skrawki, nie bój się nie sprzedamy go do NASA ;)


Nie o to chodzi.
I tak są jaja, może zamieszcze jutro ten kod bo obecnie nie jestem w chacie, tylko obawiam sie o wasze bezpieczeństwo, choć chyba ze śmiechu nikt nie umarł, ale kto to wie ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 3 mar 2018, o 14:50 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
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.


I o dziwo czas idzie ok, ale jak wstawię kod do głównej pętli, a przerwa będzie tylko inkrementować sekundę to już ostro spóźnia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 3 mar 2018, o 15:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Powiem tak - MASAKRA. W przerwaniu, które powinno trwać maksymalnie krótko wrzucasz całą logikę a w pętli głównej nie masz nic. Jeszcze te delaye w przerwaniu ...
Czyli zrobiłeś odwrotnie niż powinno się programować.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 3 mar 2018, o 15:05 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

rskup napisał(a):
Powiem tak - MASAKRA. W przerwaniu, które powinno trwać maksymalnie krótko wrzucasz całą logikę a w pętli głównej nie masz nic. Jeszcze te delaye w przerwaniu ...
Czyli zrobiłeś odwrotnie niż powinno się programować.

No właśnie, już wiem że źle, ale o dziwo czas płynie ok,ale jak chcę dobrze i wrzucam to do pętli głównej to się spóźnia. A delaye tylko do guzikow.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 3 mar 2018, o 15:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

W przerwaniu umieszczasz zmienną która zmienia się jak zostało wykonane przerwania. W pętli głównej cyklicznie sprawdzasz tę zmienną i jak się zmieni to wykonujesz akcję.
Proponuję Ci poczytać BB http://atnel.pl/mikrokontrolery-avr-jezyk-c.html, bo tak masz wszystko ładnie i po kolei potłumaczone.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 3 mar 2018, o 21:26 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

rskup napisał(a):
W przerwaniu umieszczasz zmienną która zmienia się jak zostało wykonane przerwania. W pętli głównej cyklicznie sprawdzasz tę zmienną i jak się zmieni to wykonujesz akcję.
Proponuję Ci poczytać BB http://atnel.pl/mikrokontrolery-avr-jezyk-c.html, bo tak masz wszystko ładnie i po kolei potłumaczone.

Tak zrobiłem, dalej opóźniało, ale doszedłem do tego co to powoduje.
Pobranie i wyświetlenie temp jak jest wykonywane z głównej pętli powoduje opóźnienie, natomiast jak z przerwania tj ok.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 4 mar 2018, o 03:57 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 905
Pomógł: 39

mircoLab napisał(a):
ale jak wstawię kod do głównej pętli, a przerwa będzie tylko inkrementować sekundę to już ostro spóźnia.

To może pokaż ten kod
mircoLab napisał(a):

A delaye tylko do guzikow.
//Kasowanie Sekundy 2 micros razem
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Naprawdę?
Przyjrzyj się uważnie ;)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Wskaźniki
PostNapisane: 4 mar 2018, o 09:37 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 10 lis 2017
Posty: 11
Pomógł: 0

Harry napisał(a):
Naprawdę?
Przyjrzyj się uważnie ;)


Fakt. Poprawka zrobiona.Ale to raczej nie był główny powód spóźnienia. Zrobiłem aktualizacje temp co min i jest ok, choć fajnie jak by była bieżącą. Bo w pętli on ciągle ją pobierał i widocznie dużo czasu mu to zajmowało.
Teraz mam tak i przez całą noc nie cała 1s różnicy, czyli ok.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 6 minutach ]

Już widzę o co kaman, w przerwaniu robił aktualizację co sekundę, w pętli non top i to go dobiło.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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