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



Teraz jest 30 mar 2026, o 21:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 3 kwi 2016, o 12:00 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Wykonalem dawce czasu, ktory na lcd dziala. Chce, by czas byl wyswietlany na wyswietlaczu LED. Do dawcy czasu dodalem biblioteke z multipleksowaniem LED i minuty pokazuje dobrze, lecz godziny mrugnie na chwile jak zapala sie dzioda led ( ta od przerwan z RTC) . Szukam na forum i nic nie moge znalezc. Nie mam pomysl, gdzie jest blad :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 12:29 
Offline
Moderator
Avatar użytkownika

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

romkli napisał(a):
Szukam na forum i nic nie moge znalezc. Nie mam pomysl, gdzie jest blad

No popatrz ja też szukałem na forum i nie wiem gdzie jest błąd .....

Sorki że zażartowałem - ale powiem ci szczerze, że no LUDZKIE pojęcie przechodzi takie zadawanie pytań na forum. No jak widać i z tego co sam mówisz zrobiłeś BABOLE w swoim kodzie i teraz co ? .... forumowicze mają bawić się w zbiorowych jasnowidzów aby na odległość zajrzeć do tego twojego kodu z babolami ?

No na miłość boską - panowie, litości ...... proszę - no proszę - pomyślcie chwilę nawet nad zadaniem pytania na forum bo ręce można załamać ...

Pokaż że pan ten swój fragment kodu w którym ci nie wychodzi to wyświetlanie - opisz co w nim robisz i jakie masz efekty - a nie liczysz że ktoś podpowie ci gdzie zrobiłeś błąd podczas gdy ty kartkę z kodem schowałeś za plecami

_________________
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: 3 kwi 2016, o 13:13 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

W bibliotekach od wyswietlacza zmieniem tylko oznaczenie pinow na ktorych jest podlaczony wyswietlacz LED:

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

Plik: d_led.c tylko sekcje z ustawienie timerow oraz procedura wywolania przerwan:.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Minuty wyswietlaja sie ok, lecz godziny jedynie mrugna na chwilke jak dioda gasnie lub zapala sie sterowana wyjsciem int z RTC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 13:19 
Offline
Moderator
Avatar użytkownika

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

romkli napisał(a):
        d1=licznik/1000;
        if(d1) cy1=d1; else cy1=NIC;
        d2=(licznik-(d1*1000))/100;
        if(d2) cy2=d2; else cy2=(licznik>999)?0:NIC;
        d3=(licznik-(d1*1000)-(d2*100))/10;
        if(d3) cy3=d3; else cy3=(licznik>99)?0:NIC;
        d4=(licznik-(d1*1000)-(d2*100)-(d3*10));
        cy4=d4;


No to teraz zobacz co ty narobiłeś - toż to jest kod w książce, który ma tylko pokazać w JAKI SPOSÓB rozbić jakąś liczbę czterocyfrową na pojedyncze składniki żeby wyświetlić na wyświetlaczu. Dodatkowo pokazane jest tu jak się pozbyć np nieznaczących zer itp .... a ty to wciskasz do swojego kodu ?

np panie kolego pomyśl chwilę - o ile czytałeś Bluebooka w tym zakresie

masz zmienne cy1, cy2, cy3, cy4 - jak myślisz po co one są ? (hmmm pytam a przecież wyjaśniam to w książce - ale ok)

no toż każda z nich reprezentuje pojedynczą cyfrę na wyświetlaczu

więc twoje zadanie to już TYLKO rozbić sobie samemu godzinę na dwie cyfry i minuty na dwie cyfry

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


to wszystko .... po co ci licznik i te całe karkołomne przeliczenia ...

_________________
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: 3 kwi 2016, o 14:35 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Poprawilem wedlug twoich wskazowek. Przyznam sie, kod ladniejszy. Niestety do poprawy wyswietlenia czasu nic wiecej nie wnioslo. Nadal dobrze wyswietlaja sie minuty minuty, niestety godziny nie. Mrugaja one okolo 5-10 ns (chyba) i gasna. Jest to tylko blysniecie na ulamek sekundy i nic wiecej. minuty swieca przez caly czas. Oto widok poprawionej funkcji pokazuj_date_czas.
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: 3 kwi 2016, o 14:49 
Offline
Użytkownik
Avatar użytkownika

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

Cytuj:
Mrugaja one okolo 5-10 ns (chyba) i gasna
Chyba masz jakieś ponad ludzkie oko. Człowiek nie jest w stanie wyłapać tak krótkiego mignięcie.

Jak masz zdefiniowaną wartość MASKA_ANODY?
Czy jak w przerwaniu zostawisz zmienną licznik na stałe z wartością 1 lub 2 (nie zwiększasz), to masz poprawnie wyświetlaną daną cyfrę?

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 14:55 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

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



Moze przesadzilem z tym czasem, ale sam zobacz:
[youtube]
https://youtu.be/C__UrR9HmWs
[/youtube]

W mruganiu wyswietla kazda cyfre godziny i minuty, czyli 14:57 wyswietla 1, 1; 4, 4; 5, 5; 7, 7 jednorazowo razem 11, 44, 55, 77 mrugajac.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 15:13 
Offline
Użytkownik
Avatar użytkownika

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

Mignięcie ma podane przez Ciebie wartości, ale w milisekundach a nie nanosekundach (nano to miliardowe części sekundy).
Zrób ten test co napisałem wyżej. Zakomentuj zwiększanie licznika w przerwaniu i zobacz czy jak ustawiasz jego wartość 1, 2, 4, 8, to poprawnie wyświetla się dana cyfra (reszta powinna być wygaszona).

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 2 minutach ]

Czy nie masz w programie gdzieś indziej sterowania portem C? Bo ono może bruździć.
Na pewno do portu C nie jest także nic innego podpiętego?
Jaki procesor stosujesz, bo np. na ATmega32 na PC0 i PC1 masz TWI (I2C) i może je także wykorzystujesz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2016, o 16:03 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Mam blad. Zapomnialem sprawdzic i juz teraz wiem. Do portu PC mam przeciez podpiety RTC i on koliduje z wyswietlaczem, ju poprawiam i dam znac. Dzieki z gory, Nara



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2016, o 09:12 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Opisze teraz moj blad. Otoz podlaczylem anody wyswietlacza LED do pino PC0-3. Niestety do pinow PC0-1 jest podlaczony RTC wiec tu byl blad. By to naprawic podlaczylem anody wyswietlacza do PC2-5, ale musialem poprawic kod w bibliotece. W pliku d_led.h zmienilem definicje pinow anod
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W pliku d_led.c zmienilem cyfry w nawiasach z 1, 2, 4, 8 na 4, 8, 16, 32
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Teraz wszystko gra i swieci. Dzieki za podpowiedz i wyrozumialosc. Po reprymendzie Mirka doczytalem dzial o multipleksowaniu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2016, o 09:17 
Offline
Moderator
Avatar użytkownika

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

romkli napisał(a):
Po reprymendzie Mirka doczytalem dzial o multipleksowaniu.

To nie była żadna reprymenda a po prostu przypomnienie i ew odesłanie do BB ... plus kilka wskazówek


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: 4 kwi 2016, o 15:03 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Najwazniejsze, ze pomoglo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2016, o 15:52 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Witam ponownie. Zegar działa, jednak pojawił się problem. Otóż biblioteka D_LED działa na całym porcie np:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Mój projekt chcę wykonać na Atmega 328 i tu pojawił się problem. Muszę ten wyświetlacz połączyć na dwóch portach
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i nie wiem jak dostosować bibliotekę do mojego projektu. Proszę o wskazanie mi drogi jak to zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 kwi 2016, o 16:05 
Offline
Moderator
Avatar użytkownika

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

romkli napisał(a):
i nie wiem jak dostosować bibliotekę do mojego projektu. Proszę o wskazanie mi drogi jak to zrobić.


W Bluebooku masz to opisane DOKŁADNIE, chodzi o maskowanie portu ... czytałeś? Jeśli tak to napisz czego tam nie rozumiesz, wtedy mi łatwiej będzie pomóc, zamiast pisać od tym od nowa.

_________________
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: 12 kwi 2016, o 09:51 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Dałem sobie parę dni do przemyślenia, doczytania o multipleksowaniu. Niestety nie mogę w nim znaleźć odnośnie maskowaniu portu i podziale danych na dwa porty, jak w moim przypadku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 kwi 2016, o 10:20 
Offline
Moderator
Avatar użytkownika

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

No bo przykład dotyczy jednego portu ... ale tą samą dokładnie metodą można zrobić to na dwóch portach tylko trzeba rozbić na dwie oddzielne operacje ...

Pokaż jak byś to zrobił dla jednego chociaż portu żeby zobaczyć czy rozumiesz o co chodzi w maskowaniu ... a jak nie rozumiesz do końca to obejrzyj jeszcze to: http://mirekk36.blogspot.com/2014/03/ma ... m-oka.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  
PostNapisane: 12 kwi 2016, o 14:11 
Offline
Użytkownik

Dołączył(a): 02 cze 2014
Posty: 42
Pomógł: 0

Zrobiłem tak:
Punkt 1, 2, 3, dotyczy pliku d_led.c, a punkt 4 i 5 dotyczy pliku d_led.h

1. Zmieniłem definicje tablicy z cyfry[15] na dwie: cyfry_b i cyfry_d
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

4. Zmieniłem deklaracje portów (w pierwszych dwóch liniach kodu jest deklaracja portu A, choć opis jest portu B)

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


5. Definicja bitów (uwzględnienie mojego projektu)

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 zrobiłem inaczej, ale działa dobrze. Ten sposób ma jednak wadę, w porcie B i C nie mogą być użyte takie same bity tzn bit 1 w porcie B i D, ale po kolejnej przeróbce myślę że powinno pójść.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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