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



Teraz jest 7 lut 2025, o 20:09


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 8 paź 2012, o 22:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Pisałem to już tutaj, potem załapałem co jest źle i post skasowałem zanim ktokolwiek odpowiedział, a teraz znów mam zamułkę...
Zmienna Licznik_kWh przeskakuje tylko z 0 na 1 i zaraz się zeruje... Wrzucam cały kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2012, o 23:53 
Offline
Moderator
Avatar użytkownika

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

(Licznik_kWh/10000), (Licznik_kWh%10000)

poczytaj koniecznie to:

http://atnel.pl/domyslna-promocja-do-typu-int.html

i sprawdź kod pod tym kątem

_________________
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  
PostNapisane: 9 paź 2012, o 07:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Łolaboga... zapomniałem ;)
(do pewnego momentu było OK, po minimalnym rozbudowaniu kodu się skiepściło).

PS. Dodałem 'UL' i dzieje się to samo... volatile też nic nie załatwia :/
Może jakiś błąd logiczny w kodzie machnąłem...

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2012, o 08:58 
Offline
Moderator
Avatar użytkownika

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

Wiesz - mi lepiej się patrzy na kod - więc pokaż go po poprawkach.

Przy okazji to UL

if (Timer_1s >= 1250UL)

jest zupełnie niepotrzebne bo przecież ta zmienna jest 16-bit i stała też domyślnie jest traktowana jak 16bit (ale to tylko uwaga kosmetyczna bo nie wpływa to na działanie programu)

poza tym _FLAG wygląda jakby była używana w przerwaniu i funkcjach więc brak volatile

_________________
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  
PostNapisane: 9 paź 2012, o 09:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

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

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2012, o 12:46 
Offline
Moderator
Avatar użytkownika

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

Wiesz co ? weź ty sobie wyświetl gdzieś normalnie wartość tej zmiennej Licznik_kWh, bo jak na razie to widzisz ją tylko przez to

Kod:
sprintf(DispLine_1," %07lu.%03u kWh", (uint32_t)(Licznik_kWh/1000), (uint16_t)(Licznik_kWh%1000));


czy nie prościej dla sprawdzenia wyświetlać sobie do testów samą zmienną bez żadnego dzielenia ?

Kod:
lcd_int( Licznik_kWh );


bo coś to dziwnie wszystko wygląda

_________________
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  
PostNapisane: 9 paź 2012, o 18:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

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


Dalej to samo :P

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2012, o 18:41 
Offline
Moderator
Avatar użytkownika

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

kurczę ja teraz nie pamiętam z głowy składni sprintfa ale jeszcze raz pytam czy kłopotem jest wstawić sobie

lcd_int( Licznik_kWh );

_________________
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  
PostNapisane: 9 paź 2012, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Wstawiłem... bez zmian :(

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 paź 2012, o 20:00 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Może to nie ma wpływu na powyższy problem (ja się nie znam), ale pierwszy raz widzę konstrukcję struktury w C, która zaczyna się i kończy dokładnie taką samą nazwą. W tym przypadku mamy przed nawiasem nazwę struktury _FLAGA i po kolejnym nawiasie (zamykającym) również _FLAGA. Trochę jak by masło maślane ;). Ciekawe jak taką sytuację traktuje kompilator? Z ciekawości przejrzałem kilka książek o C i trochę kodów na AVRFreaks(tutoriale) i żadne źródła nie podają takiej konstrukcji. Może ktoś bardziej oblatany w C może się wypowie co do moich wątpliwości.

Pozdrawiam
PP

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 paź 2012, o 22:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Uuu... widzę, że większy problem jest ;) Nikt nie znalazł buga?

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2012, o 09:58 
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

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

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

Problem rzeczywiście jest trudny do wykrycia. Trzeba na to uważać. Równie dobrze koniec łańcucha '/0' mógł zamazywać inną zmienną.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 paź 2012, o 11:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Bravo! 8-)

_________________
Czekamy na RedBook'a!



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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