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



Teraz jest 21 lut 2025, o 16:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 67 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona
Autor Wiadomość
PostNapisane: 28 gru 2012, o 01:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 lip 2012
Posty: 238
Pomógł: 5

Od stosu należy zacząć bo jeśli układ ma tendencje do zawieszania się po 3 godzinach pracy to może być przyczyną właśnie stos który wychodzi poza swoją przydzieloną pamięć.

Druga rzecz to dokładnie przyjrzyj się obsługi przerwań w kodzie swoim i później zastanów się czy któreś z przerwań nie wywołuje się w jakimś krytycznym momencie programu, np czekanie na daną z magistrali do upadłego ...

Trzecia sprawa to otoczenie w jakim pracuje układ, jeśli są zakłócenia wszędobylskie to one mogą też mieć wpływ na różne w różnych czasach zawieszenia układu...

to tak ode mnie :)

Dodam że to co ja tu w skrócie i w jeżyku łopatowym napisałem jest bardziej rozwinięte w książkach wcześniej wspomnianych.


ps. tak dla ciekawostki :) mi kiedyś się udało zrobić układzik który głupiał jak zbliżyłem na odległość 15cm do niego palec :D


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 09:30 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Co do stosu, to może się do końca nie znam. Ale jeżeli układ zawiesza się np. po 1 minucie a czasami potrafi działać 10h,
to czy może być to wina stosu ?. Jeśli stos może 'przepełniać' sie już na początku działania, to jak najbardziej należy go sprawdzić
i jak kupię książkę, to niezwłocznie to zrobię. Czas 3h to średni czas działania układu.
Stos można sprawdzić zmieniając np. układ na atmege 64 lub 128kb, lub też wyłączyć z programu jakiś fragment kodu np.
LCD - tak teraz mi to przyszło do głowy :idea:

Układ na początku po zlutowaniu go na płytce zachowywał się tak jak piszesz xbary resetował się po dotknięciu palem
w okolicach SPI. Dolutowałem rezystory 5k do VCC. Tzn. uĸład działał po jakimś czasie zawieszał się, dotknąłem palcem
i działał dalej (godzina widoczna na LCD 'szła dalej' a nie resetowała się do wartości domyślnej)
Co do zakłóceń to układ jest zmontowany na płytce której projekt jest we wcześniejszym poście.

mirekk36
PCF - książka
LCD - książka
Przyciski - książka
Dsy - głównie książka ale po modyfikacjach
SD - książĸa

Pytałem się w poprzednich postach który fragment kodu wrzucić, to nic nie pisałeś ? Prosiłeś tylko o poprawę schematu, więc poprawiłem.

Samodzielnie jakoś to próbowałem posklejać w mainie();. Przypuszczam, że tu może być problem, więc zamieszczam całą funkcję.

Zacznijmy może od sprawdzenia kodu, jak to nie pomoże to przejdziemy do stosu. Narazie książki i tak nie posiadam, więc pozostaje kod.


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



Hmm... patrzę sobie patrze i oczom nie wierzę jakiś brutal z uporem maniaka rozwalił mi ramki :) --- poprawiłem - SunRiver
P.S .... czasem warto używać znaku ASCII 013 (ENTER)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 10:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

qutrit - jesli chcesz uzyskac pomoc nie wystepuj z pozycji roszczeniowej. Kazdy tu na forum pomaga bo chce ale nic nie musi. Jesli ludzie zadaja Ci pytania to nie po to abys sie obruszal tylko na nie odpowiadal. Co do ksiazek, nie dziw sie , ze Mirek odsyla czesto do swojej ksiazki jednej i drugiej bo powtarzanie tego co tam napisal na forum po raz 1000000-y jest dla niego duzym utrudnieniem bo chlopak ma full innych zajec. Docen to, ze chca CI ludzie pomoc ale sam od siebie zacznij zmieniajac podejscie.

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 11:13 
Offline
Moderator
Avatar użytkownika

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

jachu napisał(a):
qutrit - jesli chcesz uzyskac pomoc nie wystepuj z pozycji roszczeniowej.


To bym szczególnie podkreślił !!! już nie chciałem ja tego mówić - ale skoro inni widzą to podobnie to powiem tak - jeśli kolega autor nie zmieni podejścia to dostanie ostrzeżenie ....

A teraz kilka uwag do zaprezentowanego kodu:

- niestety napisany jest tragicznie
- zero podziału na jakieś logiczne bloki
- ciurkiem ponad 1000 linii kodu szok !!!
- czy wy też panowie to widzicie co ja w tym kodzie ????? instrukcje goto ???????????

pewnie zaraz się dowiemy że skoro instrukcja goto jest to nie znaczy że nie można jej używać. Ja powiedziałbym że w Bascomie można byłoby napisać bardziej przejrzyście taki kod i to bez jednej instrukcji goto.

Przy takim kodzie stos ..... eeeeh szkoda gadać - już o stosie nie mówię, bo przecież jak się okaże że nie stos to pewnie mi się oberwie zaraz od autora.

------------------------ [ Dodano po: 3 minutach ]

qutrit napisał(a):
Co do stosu, to może się do końca nie znam.......

Stos można sprawdzić zmieniając np. układ na atmege 64 lub 128kb, lub też wyłączyć z programu jakiś fragment kodu np. LCD - tak teraz mi to przyszło do głowy :idea:


Więc jak się nie znasz - to najpierw doczytaj i nie opowiadaj takich fantasmagorii - bo rozumiem, że pomoc ci w tym zakresie nie potrzebna .... skoro nam tłumaczysz jak można sprawdzić stos.

Rzeczywiście nawet w tej książce, którą masz nie chciało ci się poczytać na temat stosu, na temat jego działania, co się dzieje np ze stosem gdy wywoływane są funkcje, tworzone zmienne lokalne (automatyczne) ..... Tym bardziej - nie myśl nawet o drugiej książce i zacznij od podstaw.

A przy okazji po raz kolejny przypominam - zmień ton wypowiedzi .....

_________________
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: 28 gru 2012, o 13:51 

Pomógł: 0

Z mojej strony polecam po pierwsze podzielić program na części, podprogramy, a najlepiej na osobne pliki, wiem, że na początku może wydawać się to trudne ale dzięki temu łatwiej zapanować nad chaosem.
Po drugie uruchamiać po kolei czyli wrzucać poszczególne sekcje programu po sprawdzeniu wcześniejszych rzeczy.

Sam tak robię mimo, że czasem nie wiem co robię, bo korzystam z gotowych bibliotek Mirka, czy jak w przypadku Menu z rozwiązań z netu i innych książek, ale dzięki temu, że podzieliłem wszystko, potrafiłem bez większych problemów stwierdzić, że mam problem w obsłudze menu, a nie gdzie indziej, a dzięki koledze Krauser ładnie zaczęło wszystko działać.

Tak miotasz się strasznie, wiem po sobie jak to wygląda. Na raz człowiek próbuje ogarnąć wszystko, a tak się na początku nie da. Zresztą zobacz sobie najnowszy poradnik Mirka on mimo, że już bardzo zaawansowany sam popełnia błędy i stara się dzielić zadania na pliki, funkcje itd. Dzięki temu łatwiej mu znaleźć błąd.

Z programami jest jak w elektronice, nigdy nie uruchamiasz całego projektowanego urządzenia w 100% tylko robisz to etapowo, najpierw zasilacz, potem układy wejściowe, przetwarzania i wyjściowe. Najlepiej jeszcze jak poszczególne układy (podprogramy) mogą działać niezależnie i tak też się je uruchamia czy sprawdza.

Dokładnie tak samo zrobiłem w moim programie menu. Uruchomiłem je na bibliotekach Mirka i na bibliotekach Tomka Francuza i dzięki temu ewidentnie było widać, że jest coś skopane w obsłudze menu, a reszta była ok.

Wywal na początek tą nieszczęsną obsługę karty SD, sprawdzaj bez tego, wysyłaj sobie dane na terminal po RS232 mniej miejsca zajmuje, mniej ramu ci zje a będziesz widział czy się coś wiesza.
Po za tym zrób sobie miganie diodami w poszczególnych kluczowych fragmentach programu. Wyświetlaj zmienne, wysyłaj je po RS232, to dobry sposób na prosty debuging programu idealnie widać czy zmienne mają właściwe wartości w kluczowych sekcjach programu.

Etapy, etapy i jeszcze raz etapy. Na razie twój program przypomina wytwór szaleńca, nawrzucane byle co byle jak i byle gdzie. Sam tak na początku robiłem, ale szybko okazało się, że po 2-3tygodniach ślęczenia trzeba było i tak zaczynać od zera. A nikt nie będzie nawet próbować wgryzać się w taki program, bo trzeba sporo czasu by zaskoczyć co autor miał na myśli.


Autor postu otrzymał pochwałę


Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 16:01 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Teraz jak zamieściłem funkcję to rozumie dyskusję i uwagi. Jest nad czym się pastwić ;)
Kiedyś ta funkcja miała nie całe 4000 linii. Więc obecnie nie jest źle. Ale uświadomiło mi to, że rzeczywiście dla osób z zewnątrz kod ten jest mało czytelny, podobnie jak zmieszczony przeze mnie schemat na początku. Ale poprawiłem schemat poprawię i kod - nie ma problemu :)

Kurcze próbowałem zrobić MENU za pomocą switch(); i break(); itd. ale udało mi się tylko do drugiego poziomu. Dlatego skorzystałem w tym przypadku z go to();, które ponadto wykorzystywane jest tylko w menu do pierwszych ustawień później już nie.

Więc dopóki nie będę miał książki, to uporządkuję kod. W między czasie będę testował układ odłączając różne bloki układu.
Postaram się podzielić funkcję main(); na jakieś logiczne bloki. Menu umieszczę w jakimś pliku i od razu w main(); zrobi się luźniej :)

Później będzie chyba trudniejsza rzecz, odpowiednia deklaracja zmiennych, portów bo to nawet dla mnie tragicznie wygląda. A jak książka przyjdzie to sprawdzimy stos :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 17:25 
Offline
Moderator
Avatar użytkownika

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

Posłuchaj - to co napisałeś to nie jest żadna funkcja przede wszystkim :( tzn owszem masz główną funkcję programu main() i na tym koniec a to jest POCZĄTEK i KONIEC właśnie twoich problemów z tym kodem. Teraz już bez żadnej uszczypliwości - jeśli masz zamiar sięgać po II-książkę na tym etapie TYLKO ze względu na sprawdzanie stosu to daruj sobie i zostaw zakup na później.

Pisanie kodu polega na tworzeniu FUNKCJI - wielu funkcji ..... a NIE PISANIU WSZYSTKIEGO w pętli głównej programu - bo to powoduje u ciebie te problemy. Nawet jeśli nie rozumiesz na razie wskaźników i callbacków to jednak obejrzyj sobie proszę ten mój najnowszy poradnik VIDEO - koniecznie:

http://mirekk36.blogspot.com/2012/12/ws ... a-bez.html

i zobacz jak należy się zabierać za pisanie kodu. To co pisał wyżej kolega rezasurmar - to nie pastwienie się - on bardzo delikatnie i bardzo dyplomatycznie dał ci do zrozumienia to co ja wyżej może troszkę emocjonalnie dobitniej opisałem....

więc nie myśl że celem nas tutaj jest nabijanie się z tego jak piszesz programy na razie. Wręcz to rozumiemy - no ale jak chcesz się nauczyć to właśnie zacznij podejmować kroki z wprowadzaniem zmian w pisaniu kodu tak jak podjąłeś (i słusznie) rękawicę ze schematem - bo skutki chyba sam zaczynasz już odczuwać. Schemat i dla ciebie zaczyna być coraz bardziej przejrzysty.


Autor postu otrzymał pochwałę

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

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Zmieniam ten kod i trafiłem na taki mały problem.
Mam utworzony folder Przyciski zawierający pliki przyciski.c oraz przyciski.h
Utworzyłem również folder Menu z plikami menu.c oraz menu.h.
W menu.c wykorzystuję funkcje które mam w przyciski.h
Czy da się dołączyć plik Przyciski/przyciski.h do Menu/menu.h aby w menu.h nie powtarzać tego co mam w przyciski.h ?
Próbuję zainkludować #include "Przyciski/przyciski.h" do Menu/menu.h i mam błąd:
error: Przyciski/przyciski.h: No such file or directory

Przypuszczam że gdyby przyciski.h oraz menu.h były w jednym folderze to nie byłoby takiego problemu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 22:57 

Pomógł: 0

W najnowszym poradniku Mirka masz dokładnie wytłumaczone co i jak z tymi includami i dzieleniem na pliki, zresztą w poradniku na temat eeproma i struktur też.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 23:00 
Offline
Moderator
Avatar użytkownika

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

A mówiłem ci żebyś obejrzał ten ostatni cały poradnik video - to byś zobaczył jak to się robi i nie tylko to, żeby móc inkludować sobie pliki z różnych folderów. Ale uparty jesteś ;) ... ok jeszcze raz podpowiem ...

w pliku menu.c piszesz tak:

Kod:
#include "../Przyciski/przyciski.h"


a w pliku przyciski.c piszesz tak:

Kod:
#include "../Menu/menu.h"


i wszystko będzie działać ...

------------------------ [ Dodano po: kilkunastu sekundach ]

rezasurmar napisał(a):
W najnowszym poradniku Mirka masz dokładnie wytłumaczone co i jak z tymi includami i dzieleniem na pliki, zresztą w poradniku na temat eeproma i struktur też.


O! no proszę kolega mnie uprzedził .... ale tak to jest jak "się nie chce" ;)


Autor postu otrzymał pochwałę

_________________
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: 28 gru 2012, o 23:18 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Obejrzałem dzisiaj prawie dwie części, aż mi internet wysiadł :( Więc wziąłem się za podział kodu.
Z ostatniej chwili main() ma już 300 linii kodu :!:

Ponadto przed modyfikacjami kodu zakomentowałem funkcję zapis(); na kartę SD i układ działał około 7h i też zwiecha.
No ale uproszczę ile będę w stanie i zobaczymy co dalej.

To że kod i schemat wygląda jak wygląda, to nie moja wina. Tych poradników nie było pól roku temu ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2012, o 23:27 

Pomógł: 0

Dlatego sam zawsze poradniki sobie ściągam najpierw na kompa ;), Download helperem ;).
Co do braku poradników, dla mnie to nie wytłumaczenie niechlujnego kodu, w każdej, dosłownie każdej książce do C jest to dosyć dobrze opisane. Zresztą jedynie chyba w bascomie można wrzucać wszystko do jednego pliku, a w zasadzie nie ma innego sposobu.
Nawet robiąc wprawki w asemblerze na uczelni nie odwalaliśmy takiej kaszany ;).

Nie chcę ci tu prawić morałów, ale jęczysz jak stara baba zamiast zabrać się do roboty ;). Koniec dyplomatycznego ględzenia ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 00:22 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Ile mogłem tyle poprawiłem. Głównie pod względem czytelności kodu. Ale czy wystarczająco to niech Koledzy ocenią :)

Starałem się też zrobić porządek ze zmiennymi, ale nie wiem czy do końca mi się udało.
Na początku main(); poustawiałem kierunki portów, czego nie było poprzednio.

Póki co układ działa: wyświetla zapisuje :) Jak długo zobaczymy. Zostawię włączonego na noc.
Chętnie zastosuję się do kolejnych porad :)
Oto odchudzony o 75% main :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



hmm... zamorduj tego sprintf-a bo ..... SunRiver



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 01:26 
Offline
Moderator
Avatar użytkownika

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

całego ja nie dam rady przeanalizować ale od razu rzuciło mi się to w oczy i gryzie. Po co robisz takie dziwolągi????

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


chodzi mi tu o tą inicjalizację zerami zmiennych liczbowych ale też (to już totalne kuriozum) tej tablicy 5-elementowej ?

poczytaj jeszcze raz w książce o zmiennych globalnych hmmm i czym się różnią od zmiennych automatycznych (lokalnych) to mam nadzieję, że przejdą ci takie pomysły ;)


Autor postu otrzymał pochwałę

_________________
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: 30 gru 2012, o 19:14 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Panowie układ działał na płytce drukowanej bez przerwy 14h ale musiałem go odłączyć. Nie wątpliwie jest to rekord :!:
Myślę że samo porządkowanie kodu to jedno. Ale kluczowym elementem było poustawiane portów. Nie wiem dlaczego sobie kiedyś ubzdurałem, że jeżeli ustawimy DDRA |= 0xFF PORTA |=0xFF (wyjścia do VCC) to tak już pozostanie na zawsze eh...
W celu dalszego porządkowania kodu mam mały problem.
W tablicy char godz_data mam zapisywaną godzinę i datę w postaci 2012-10-20 00:00:14 i taka forma jest zapisywana na SD. Natomiast na LCD chciałbym wyświetlać bez sekund czyli 2012-10-20 00:00. Chodzi oto jak 'wyciąć' te sekundy z tej tablicy, bo wchodzą mi do następnej linii na LCD. Miałem zrobione to okrężną drogą i działało, ale musi się to dać zrobić prościej.
Oczywiście o stałych czytam też :)

Ok znalazłem.
Skrócenie tekstu znakiem zero.
godz_data[16] ='\0';



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 13:15 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Witam w Nowym Roku.
Przerobiłem kod, biorąc pod uwagę Wasze uwagi i moje umiejętności.
Tylko jeżeli upraszczałem ( pod względem czytelności) program, to musiałem tworzyć osobne pliki.c a w nich definiować funkcje które uprzednio deklarowałem w plikach.h . Zauważyłem, że po takim zabiegu troszkę powiększył mi się program. np. mam taką funkcję:
flow.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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

Chodzi mi oto, że teraz przy obliczeniach wykorzystuję argumenty uint16_t imp a w main() uint16_t impulsy. Czyli jakby mam dwie wielkości dotyczące tej samej funkcji.

Poprzednio dla przypomnienia miałem te obliczenia w funkcji main() :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Teraz tak:
Wydzielając tą funkcję do osobnego pliku mam jedną zmienną globalną "impulsy" ale za to dwie lokalne "imp" oraz szybk_przep"
Pozostawiając obliczenia w main() mam dwie zmienne globalne "impulsy, szybk_przep".
Zakładając, że nic nie poknociłem, to co ma większą wagę: oszczędność pamięci czy rodzaj zmiennych (globalne, lokalne) ?

Obecnie układ zajmuje 30108 bytes, ale bywało że miał 29400 bytes - sczytane z eclipsa po kompilacji.

Póki co układ działa już kilkanaście godzin, co pozwala sądzić, że problem został rozwiązany :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 14:26 
Offline
Moderator
Avatar użytkownika

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

Zmienne globalne (przypomnij sobie) tworzone są na początku obszaru pamięci RAM i widzisz je po kompilacji. Zmienne lokalne są tworzone w trakcie działania funkcji na stosie - więc też w RAM ale dynamicznie na stosie więc nie widzisz zajętości RAM po ich kompilacji.

W przypadku pojedynczych zmiennych tak jak masz i bez rekurencyjności funkcji wygodniej jest po prostu mieć zmienne lokalne wewn funkcji a na jakości programu dużo się to nie odbije.


Autor postu otrzymał pochwałę

_________________
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: 1 sty 2013, o 17:04 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Mam jeszcze takie kosmetyczne pytanie. Cały układ jest włączany za pomocą przełącznika 1-0. Zdarza się, że układ nie zawsze włączy się poprawnie. To znaczy włącza się podświetlanie, czasami zapalą się 2 pełne linie na LCD, czasami samo podświetlanie. Ponowne wył i wł układu spowoduje jego poprawne uruchomienie. Czasami trzeba tak trzy razy przełączyć.
Poniżej zamieszczę fragment kodu do momentu wyświetlenia powitania na LCD.
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: 1 sty 2013, o 18:56 
Offline
Moderator
Avatar użytkownika

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

GwynBleidD napisał(a):
tablica przeplyw w pliku .h powinna być opatrzona externem, a jej deklaracja wrzucona to .c


Dokładnie SŁUSZNA UWAGA!

Kod:
char przeplyw[4];


tak nie może być w *.h ..... dodaj extern

a DEFINICJĘ (nie deklarację - koledze GwynBleid pewnie się pomyliło niechcący) ..... wstaw do *.c

_________________
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: 1 sty 2013, o 19:04 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Kurcze Mirek ubiegłeś mnie a chciałem się pochwalić i wychwycić ten błąd.

A jak z tym zasilaniem o którym również pisałem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 19:20 
Offline
Moderator
Avatar użytkownika

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

qutrit napisał(a):
Kurcze Mirek ubiegłeś mnie a chciałem się pochwalić i wychwycić ten błąd.

Nie nie - to nie ja ... to kolega GwynBleiD wychwycił ;) ja wręcz nie zauważyłem

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

qutrit napisał(a):
Mam jeszcze takie kosmetyczne pytanie. Cały układ jest włączany za pomocą przełącznika 1-0. Zdarza się, że układ nie zawsze włączy się poprawnie. To znaczy włącza się podświetlanie, czasami zapalą się 2 pełne linie na LCD, czasami samo podświetlanie. Ponowne wył i wł układu spowoduje jego poprawne uruchomienie. Czasami trzeba tak trzy razy przełączyć.


Ale o jakim ty wyłączniki 1-0 piszesz ? nie sądzisz że jak zwykle zadałeś pytanie ;) jak to u ciebie bywa nie opisując szczegółów i spodziewasz się że ktoś się domyśli co tam masz i co się dzieje ?

jakiś schemat ? nie sądzisz że by się przydał czy coś ?

_________________
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: 1 sty 2013, o 19:48 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Zwykły wyłącznik dwu-pozycyjny.

Obrazek

połączony szeregowo z zasilaczem 5V na schemacie.

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 20:13 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Antystatyczny napisał(a):
Hmm, ja bym do próby wymienił wszystkie elektrolity na 10uF, ale najpierw sprawdź fuse bity, a konkretnie te odpowiadające za źródło taktowania procka. Mam na myśli czas od włączenia zasilania do ruszenia procka. Jeśli Ci sie cos wiesza, spróbuj wydłużyć czas wstawania procka ;) Jeśli chodzi o sam wyłącznik to nie zwalaj winy na niego, to nie on jest winien :D


Jedyne co robiłem przy fuebitach to wyłączanie JTAG w atmega32. Ale jeżeli jest taka 'funkcja' to fajnie, tylko jak ona się nazywa, bo z tego co pamiętam było tam sporo linijek. Oczywiście swoją drogą biorę się za szukanie w książce i google.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 20:18 
Offline
Moderator
Avatar użytkownika

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

qutrit napisał(a):
Mam jeszcze takie kosmetyczne pytanie. Cały układ jest włączany za pomocą przełącznika 1-0. Zdarza się, że układ nie zawsze włączy się poprawnie. To znaczy włącza się podświetlanie, czasami zapalą się 2 pełne linie na LCD, czasami samo podświetlanie.


....... aaaaaaaaaaaaaaaaaaaaaa

tu cię może mam .... korzystasz jak rozumiem z obsługi wyświetlacza LCD z książki niebieskiej tak ?

a korzystasz z aktualizacji do kodów z DVD a jest tam WAŻNA - hmm bardzo ważna aktualziacja do biblioteki do LCD .... Pobrałeś ją i stosujesz ??? czy omijasz z daleka aktualizacje ???

http://atnel.pl/uaktualnienia-programow-do-dvd.html


Autor postu otrzymał pochwałę

_________________
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: 1 sty 2013, o 20:23 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
No tak, taktowanie internal 1MHz...



eeeeeh że też ludzie tak się lubią katować tym 1MHz ;) żółwia sobie puszczać.

_________________
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: 1 sty 2013, o 20:31 
Offline
Użytkownik

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

mirekk36 napisał(a):


eeeeeh że też ludzie tak się lubią katować tym 1MHz ;) żółwia sobie puszczać.



no ba może właśnie o to chodzi żeby atmega z płytki nogi nie dała ??
zresztą przy 1MHz to prawie gołym okiem widać zmiane bitów i scope oraz analizera nie potrzeba

_________________
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: 1 sty 2013, o 20:46 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

Próbowałem zmieniać w eclipce na np. 2MHz. Rozjeżdżają mi się _delaye_ i program oczywiście nie działa. Więc pozostał domyślny 1MHz.
Aktualizacja LCD rozwiązała problem z włączaniem urządzenia. Teraz od razu wszystko ładnie się wyświetla.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 20:53 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

aaaaaaaaaaaaaaaa no widzisz.
Czyli w eclipse zmiana dla kompilatora a w FuseBitach fizyczna. Teraz rozumiem. Już popędzam DSy ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 21:10 
Offline
Użytkownik

Dołączył(a): 25 gru 2012
Posty: 128
Pomógł: 0

No i na razie lipa. Wolna wersja MkAvrCalculator nie obsługuje atmegi328 :( Ale przynajmniej teraz wiem jak to się robi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2013, o 21:14 
Offline
Użytkownik

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

zrób ręcznie spod AVRDUDE

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 67 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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