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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 19 cze 2025, o 13:28


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 115 ]  Przejdź na stronę Poprzednia strona  1, 2, 3, 4  Następna strona
    Autor Wiadomość
    PostNapisane: 21 sty 2012, o 04:21 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    elsat1 napisał(a):
    Jak czytam twój post, to mam wrażenie że chcesz lekcji...podstaw od autora książki. Kliknij w wyszukiwarkę internetową np. "programowanie mikrokontrolerów" i znajdziesz wątki które będą ci przydatne w tym temacie. No ale z książką trzeba jeszcze się przespać :lol:



    Nie wiem o co ci chodzi... ? Nie chce lekcji podstaw od autora książki, bo po to jest książka, żeby właśnie stamtąd zaczerpnąć wszelkich podstawowych informacji. I nie odkryłeś ameryki pisząc, żebym wpisał w wyszukiwarkę "programowanie mikrokontrolerów". Czytałem różne strony i różne kursy zarówno o programowaniu jak i o tworzeniu układów elektronicznych, ale chyba nie wiesz do czego służy forum. Tym bardziej jeśli opieram się głównie właśnie na książce i układzie, którego to forum dotyczy.

    Jeśli Tobie po przeczytaniu książki (teorii) zawsze wszystko od razu wychodzi i nie potrzebujesz niczyjej pomocy to tylko gratuluje. Ja zacząłem swoją przygodę z elektroniką i mikroprocesorami od września, więc myślę że i tak mam spory postęp robiąc płytki dwustronne w SMD i próbuje zaprogramować własny układ wielozadaniowy. I to, że zadaję pytania (chociaż by po to, żeby się upewnić czy dobrze rozumiem jak coś działa) lub proszę o pomoc w rozwiązaniu problemu nie jest niczym dziwnym i nie oznacza, że sam nic nie robię, niczego nie czytam , nie szukam informacji i czekam na gotowe...

    Może po prostu czujesz się taki super, że już nie pamiętasz jak zaczynałeś i nie jesteś w stanie zrozumieć jak można się pytać o takie "pierdoły"... I nie zarzucaj ludziom, że nie "śpią z książką" tylko dlatego, że zadają pytania, bo sam też zadajesz.... i może dla osób bardziej zaawansowanych twoje pytania też są pytaniami o "pierdoły" które przecież są gdzieś w książkach...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2012, o 16:52 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    PAX PAX miedzy chrześcijany -- każdy kiedyś zaczynał to pewne w mniejszym lub większym stopniu się borykał z problemami różnej natury.
    i nie jest to ani ujma , ani chwała że pytania zadaje ten czy tamten. Podobno jestem zaawansowany .. a wiesz ile różnych głupich pytań zadaje
    jak zaczynam gryźć nowy układ , czy urządzenie ??

    Podobno kto pyta nie błądzi , ale też pytając można zbłądzić jak się zadaje niewłaściwe pytania
    dlatego też uważajcie bo jakie pytanie taka odpowiedź .

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 21 sty 2012, o 17:11 
    Offline
    Moderator
    Avatar użytkownika

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

    Dokładnie - ja też zachęcam do spokoju i stonowania nerwów. Tym bardziej, że po to powstało forum aby początkujący mogli w końcu wystartować. Mnie nie sprawia problemu odpowiadanie nawet na najprostsze pytania jeśli widać z pytań, że człowiek sam kombinuje jak może....

    _________________
    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: 22 sty 2012, o 00:00 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Napotkałem na problem przy RTC, ale tym razem to wina programu.
    Na swój układ wgrywam przykładowy program z płyty (08_TWI) i zegar działa bezproblemowo.

    Wgrywając swój program na ten sam układ przez jakiś czas zegar działa dobrze (tzn godzina na wyświelaczu zmienia się) lecz po pewnym czasie (losowym) czas staje w miejscu. Przerwania od RTC dalej działają bo ustawiłem migającą diodę i miga równo co sekundę. Czyli tak jakby zawiesiło się samo wyświetlanie (aktualizowanie) czasu na wyświetlaczu.

    Byłbym wdzięczy za spojrzenie na mój program:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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



    Dziwi mnie, że układ początkowo normalnie wyświetla czas i dopiero po chwili (rzędu minuta - dwie) czas się zatrzymuje...

    Żeby nie było dodam, że zmienne globalne mam zadeklarowane jako extern w pliku nagłówkowym moje.h



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 00:36 
    Offline
    Moderator
    Avatar użytkownika

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

    No i zrobiłeś dobry krok w celu sprawdzania przyczyny dając tę mrugającą diodę LED w przerwaniu. Teraz pójdź tą drogą dalej. Usuń mrugranie diodą z przerwania, i wstaw debugerową diodę do swojej funkcji zegar, żeby zobaczyć, czy przypadkiem program główny się gdzieś nie zawiesza ;) czy też cyklicznie przechodzi przez tę funkcję a tylko czas stoi w miejscu. Od razu wyciągniesz dwa różne wnioski:

    1. albo program się zawiesza - więc masz jasny powód i szukasz dalej tym tropem co idzie nie tak
    2. albo funkcja dalej działa, tylko że odczyty z RTC wciąż zwracają te same wartości - a jeśli tak to dlaczego - i znowu masz nowy trop

    i znowu możesz myśleć gdzie dalej zakładać pułapki i szukać.....

    sorry, że nie mam czasu na analizę takiego zbyt długiego kodu - ale wydaje mi się, że podpowiedź jak dalej szukać będzie równie pomocna, bo już i tak widać, że fajnie zaczynasz rozumieć i posługiwać się pułapkami i jednodiodowym debugerem ;)

    _________________
    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: 22 sty 2012, o 00:43 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Dziękuje za wskazówkę :) wdrożę ja w życie i spróbuje coś wymyślić - napisze co zaobserwowałem :)

    Nie szkodzi z tym brakiem czasu, przecież wiadomo, że nie tylko forum człowiek żyje, a i tak nie spodziewałem się tak szybkiej odpowiedzi :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 00:50 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Program przestaje wchodzić w funkcję "zegar"

    dodałem wyświetlanie wartości "int1_flag" na wyświetlaczu i zaobserwowałem, że o ile przy działaniu czasu wartość ta mruga (czyli szybka 1 i spowrotem 0) to przy zawieszeniu się zmiany czasu na wyświetlaczu wartość ta jest stale = 0. Jednocześnie dioda w przerwaniu mruga -> czyli tak jakby program wchodzi do przerwania, zmienia stan diody, ale przestaje ustawiać int1_flag na 1.... jak dla mnie to jakaś paranoja... :D



    Ostatnio edytowano 22 sty 2012, o 01:11 przez grubson89, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 01:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 25 gru 2011
    Posty: 204
    Lokalizacja: Boguchwała
    Pomógł: 3

    grubson89 napisał(a):
    Może po prostu czujesz się taki super, że już nie pamiętasz jak zaczynałeś i nie jesteś w stanie zrozumieć jak można się pytać o takie "pierdoły"... I nie zarzucaj ludziom, że nie "śpią z książką" tylko dlatego, że zadają pytania, bo sam też zadajesz.... i może dla osób bardziej zaawansowanych twoje pytania też są pytaniami o "pierdoły" które przecież są gdzieś w książkach...

    Przepraszam Ciebie i wszystkich na tym forum. Ja też pytam na tym forum i dostaję odpowiedzi, ale nie o "pierdoły" jak to sam wyrażasz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 01:49 
    Offline
    Moderator
    Avatar użytkownika

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

    grubson89 napisał(a):
    czyli tak jakby program wchodzi do przerwania, zmienia stan diody, ale przestaje ustawiać int1_flag na 1.... jak dla mnie to jakaś paranoja... :D


    Jak możesz wyciągać wniosek, że przestaje ustawiać flagę na 1 ????

    int_flag = 1;

    jest pewnikiem i to nie może działać źle. Więc ja na twoim miejscu zastanowiłbym się dlaczego program nie wchodzi fo funkcji zegar ? a może w ogóle z niej nie wychodzi ? ;)

    więc to żadna paranoja - to tylko twój błąd i trzeba go znaleźć.

    Ja przede wszystkim podpowiadam ci że taka konstrukcja z dwoma pętlami nieskończonymi w main() to duże nieporozumienie. Już samym tym np zwiększasz niepotrzebnie stos.

    Nie wspominając o tym, że w ogóle źle pojmujesz włączenie układu. Dla ciebie włączenie oznacza jakby czarodziejską inicjalizację LCD. A wspominałem już wcześniej o tym, że inicjalizację LCD daje się na początku main(), tam gdzie inicjalizujesz np timery, przerwania itp

    Zatem już od tej strony budujesz program trochę jakby "do góry nogami" z mojego oczywiście punktu widzenia.

    no i poza tym to pokaż jak ty badasz dalej tą diodą miejsce gdzie ci się program zatrzymuje ?

    co to w ogóle jest run ?

    _________________
    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: 22 sty 2012, o 02:24 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Z tym włączeniem układu chodzi mi o to żeby samo włączenie zasilania nie powodowało jeszcze włączenia wyświetlacza, diody itd... żeby dopiero wciskając przycisk POWER obserwowało się włączenie układu. Chodzi o sam efekt... Ale jeśli to jest bardzo niefortunnym pomysłem to może rzeczywiście będzie lepiej z tego zrezygnować. Ze zwiększaniem stosu się liczę, ale tak to myślałem, że nie powinno to za bardzo zaburzyć działania układu - po prostu program działa w innej pętli.

    run - jest to zmienna ustawiana na 1 w funkcji start - docelowo chciałem jeszcze zrobić power off ustawiający run na 0 - czyli gasiłby się wyświetlacz i dioda - znów po prostu efekt zgaszenia.


    Mam ustawione dwie diody:
    - jedna zmienia swój stan przy wejściu w przerwanie od INT1 - i działa, cały czas mrugając
    - druga zmienia swój stan przy wejściu w funkcję "zegar" - działa jakiś czas i potem przestaje mrugać (w tym samym momencie w którym zawiesza się czas na wyświetlaczu)
    - dodatkowo ustawiłem wyświetlanie na LCD wartości int1_flag, jest to ustawione poza funkcją "zegar", bezpośrednio w pętli "while(run)" - dopóki czas się zmnienia widać mruganie tej wartości - czyli tez się zmienia, jak czas się zawiesza mam cały czas wartość 0.

    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: 22 sty 2012, o 02:52 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Usunąłem te zagnieżdżone pętle while, zostawiając standardowo tylko jedną, ale to nic nie zmienia.... zawieszka taka jak wcześniej.


    - dodałem jeszcze na wyświetlacz zmienna Timer2 (timer programowy) której wartość powinna się zmieniać od 300 do 0 ( dla Timer2==0 wchodzi w funkcje "pomiar_co" i ustawia na 300) jednak wartość w ogóle nie maleje (a powinna w przerwaniu TIMER0), ustawia się na 300 i tak zostaje. Nie wiem czy to osobna sprawa czy może się jakoś łączą.... (dioda w przerwaniu TIMER0_OVF_vect mruga, a w funkcji "pomiar_co" już nie)

    Chyba się muszę z tym przespać, bo już głupieje....



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 09:20 
    Offline
    Moderator
    Avatar użytkownika

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

    To pokaż jeszcze poprawiony kod - może łatwiej będzie coś z niego ogarnąć teraz ...

    _________________
    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: 22 sty 2012, o 10:58 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

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



    Może problem tkwi gdzieś w zakresie zmiennych... ?
    Po zdefiniowaniu ich w pliku źródłowym "moje.c" - deklaruje je w pliku "moje.h" jako:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




    Żeby lepiej było widać poprzesuwałem nawiasy.....



    Ostatnio edytowano 22 sty 2012, o 14:08 przez grubson89, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 11:57 
    Offline
    Moderator
    Avatar użytkownika

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

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


    a nie:

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


    jak widać nie trzymasz się standardów a przez to właśnie sam prosisz się o problemy, bo pewnie w innych miejscach też je pomijasz.

    poza tym gdzie ustawiasz cyklicznie wartość Timer2 ?

    a jeszcze gorsze jest to, że warunek if( int_flag ) robisz wewnątrz warunku if(timer2==0) - po co?

    warunek if(int_flag) może przecież żyć w pętli głównej i tak będzie się wykonywał równo raz na sekundę.

    a tak w ogóle to po co ci ten timer2 programowy ? skoro jak pisałem wyżej warunek z int_flag może żyć sam w pętli głównej?

    Z tego wszystkiego wynika, że gdzieś ci się wszystko przepięknie zapętla niestety

    _________________
    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: 22 sty 2012, o 13:55 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    warunek if(int1_flag) jest bezpośrednio w pętli głównej (może niefortunnie nie widac nawiasu klamrowego zamykającego warunek if(Timer2==0) - jest on zaraz za wywołaniem funkcji "pomiar_co".

    cyklicznie wartość Timer2 ustawiam na 300 w fukncji "pomiar_co" - czyli jesli Timer2 ==0 to wykonuje funkcję i ustawiam spowrtoem Timer2 na =300.
    Timer2 programowy jest użyty, żeby wchodzić do funkcji pomiar_co co ileś sekund



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 15:20 
    Offline
    Moderator
    Avatar użytkownika

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

    Ok dobrze - rzeczywiście takie zastosowanie wcięć i nawiasów klamrowych prowadzi do oczopląsu więc nie zauważyłem. Masz rację że ten warunek jest poza.

    W takim razie proponuję - o ile problem nadal występuje - robić kroki wstecz do wyeliminowania/znalezienia błędu.

    Czyli pozbądź się kolejnych warunków i zostaw najzwyczajniej w świecie sam warunek z tą flagą, przy czym ja bym zerował falgę pod koniec tego warunku dla czytelności kodu a nie w funkcji, którą w warunku wywołujesz - rozumiesz ?

    I wtedy zobaczysz czy czas ci działa poprawnie - jeśli nadal nie to jakby nie patrzeć - i tak dużymi krokami zbliżasz się do rozwiązania problemu. Byle się nie okazał jak to zwykle bywa w takich przypadkach problemem hardwarowym polegającym na błędach w połączeniach, zimnych lutach itp

    _________________
    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: 22 sty 2012, o 15:34 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Rozumiem - czyli starać się po kolei upraszczać kod szukając przyczyny.... a jak będzie działało, to stopniowo dodawać i aż się znajdzie moment krytyczny :)

    Problem hardwarowy wyklucza fakt, że na Pana przykładowym programie (08_TWI) zegar chodził całą noc i się nie zawiesił.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 sty 2012, o 16:48 
    Offline
    Moderator
    Avatar użytkownika

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

    grubson89 napisał(a):
    Problem hardwarowy wyklucza fakt, że na Pana przykładowym programie (08_TWI) zegar chodził całą noc i się nie zawiesił.


    No to tez już jakiś dobry wniosek. Myślę, że jak rozwikłasz ten problem - to zdobędziesz sporo cennego doświadczenia, ale pytaj dalej jak coś , ew pokaż jakiś uproszczony kod który nadal ci nie działa.

    Troszkę się tylko obawiam, tych twoich innych plików, bo może tam też są błędy jakieś ?

    _________________
    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: 22 sty 2012, o 23:39 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Błąd okazał się być w funkcji "pomiar_co"... ADC powodowało zawieszanie się programu, ale znalazłem błąd, poprawiłem i działa :) Błąd oczywiście jak to najczęściej był banalnie prosty (i chyba przez to właśnie trudny do zauważenia), ale dzięki Pana podpowiedziom udało mi się go zidentyfikować :)

    To były dwa dni treningu w wyszukiwaniu błędów we własnym programie i analizowania poszczególnych jego fragmentów. Mam nadzieję, że będę to doświadczenie umiał wykorzystać przy kolejnych problemach. Aczkolwiek jeśli nie będę sobie radził skorzystam z Pana pomocy :)

    Dziękuje bardzo za pomoc i wyrozumiałość :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 sty 2012, o 00:12 
    Offline
    Moderator
    Avatar użytkownika

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

    No ale właśnie nauka programowania to 50% nauka języka a drugie 50% to nauka rozwiązywania tego typu problemów, o czym niektórzy niestety zapominają. dlatego też w książce spory nacisk na to położyłem. A i na forum lepiej nauczyć kogoś jak rozwiązać problem zamiast pokazać palcem gdzie leży błąd.

    _________________
    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: 24 sty 2012, o 16:27 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Mam pytanie w sprawie pamięci procesora. Po kompilacji uzyskuje:

    Device: atmega8

    Program: 7476 bytes (91.3% Full)
    (.text + .data + .bootloader)

    Data: 276 bytes (27.0% Full)
    (.data + .bss + .noinit)

    I chciałem się spytać jaką część pamięci zajmuje opcja bootloadera i czy ew. można z niej zrezygnować w jakiś sposób (zyskując na pamięci) i czy to się opłaca?

    Bo zrobiłem 3 poziomowe menu z możliwością nastawiania czasu i daty i zżarło mi to dużo pamięci...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 16:45 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Mirka bootloader zajmuje tylko 256bajtów , oczywiście ze możesz go wyłączyć tyle tylko ze stracisz możliwość wgrywania programu Via RS, ale przez programator bez problemu.

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 17:05 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    No to chyba zostawię, bo 256bajtow chyba i tak mnie nie zbawi :)

    Dziękuje :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 17:11 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Ja myślę że może warto by było nieco zoptymalizować kod samego menu lub lwiej części programu poprzez
    użycie funkcji/podprogramów dla często wykonywanych operacji. Ewentualnie na skróty i użyć atmegi168 lub 328 :)

    info:
    ATmega8 --> 8KB Flash
    ATmega48 --> 4KB Flash
    ATmega88 --> 8KB flash
    ATmega168 --> 16KB Flash
    ATmega328 --> 32KB flash

    Najuboższa pod względem wyposażenia jest atmega8 (nie chodzi o pamięć Flash) ale i jest najstarsza.
    Wszystkie są zgodne pinologicznie.

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 18:01 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    No z optymalizacją kodu jeszcze u mnie ciężko, ale z czasem i tego postaram się nauczyć...

    Przydatne info o tych procesorach, możliwe, że na ten czas skorzystam :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 18:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 paź 2011
    Posty: 580
    Lokalizacja: Warszawa
    Pomógł: 0

    Czy możesz udostępnić kod źródłowy programu?? z czystej ciekawości chciałem tylko zerknąć :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 19:00 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    całego programu? czy części z menu? :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 sty 2012, o 20:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 paź 2011
    Posty: 580
    Lokalizacja: Warszawa
    Pomógł: 0

    Jak możesz wrzuć całość w ".rar" chciałem zobaczyć jak to wygląda ponieważ w bascomie robiłem podobne :)

    _________________
    sig off ;(



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

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Przepraszam ze dopiero teraz, ale miałem straszny sajgon i mi z głowy wyleciało....

    Tu sa trzy pliki źródłowe: main.c, moje.c i menu.c
    http://speedy.sh/hyYRm/zzkonkret.rar

    Pozdrawiam :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 sty 2012, o 01:49 
    Offline
    Użytkownik

    Dołączył(a): 20 lis 2011
    Posty: 51
    Pomógł: 0

    Mam pytanko....

    Czy da się w jakiś sposób programowo wymusić reset układu (tak jak przy wciśnięciu przycisku reset) ?

    W programie mam funkcję przeprowadzającą test urządzenia i chciałbym, żeby po niej nastąpił automatyczny restart. Tylko właśnie nie wiem czy to w ogóle możliwe do uzyskania w miarę prosty sposób?

    Jeśli nie to zrobię komunikat na LCD, żeby użytkownik sam wcisnął reset, ale wolałbym automatyczny :)

    Pozdrawiam.



    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: 115 ]  Przejdź na stronę Poprzednia strona  1, 2, 3, 4  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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