ATNEL tech-forum
https://forum.atnel.pl/

Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka
https://forum.atnel.pl/topic21065.html
Strona 1 z 1

Autor:  kubabrowar333 [ 31 lip 2018, o 14:17 ]
Tytuł:  Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

Witam
Mam problem z dostosowaniem biblioteki z BB do wyświetlaczy ze wspólną katodą.
Z tablicy ze znakami usunąłem negacje więc są wyświetlane poprawnie i gdy wyświetlam wszystkie znaki takie same to wszystko działa. Problem jest wtedy gdy są różne znaki ponieważ się wtedy nakładają na siebie. Myślę ze problem leży w sterowaniu katodami 1 a nie 0 i przełączaniu ich w przerwaniu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  mirekk36 [ 31 lip 2018, o 14:18 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

kubabrowar333 napisał(a):
Myślę ze problem leży w sterowaniu katodami 1 a nie 0 i przełączaniu ich w przerwaniu.

Łatwiej byłoby coś podpowiedzieć widząc twój schemat niż się domyślać, ale skoro piszesz że masz zanegowane sterowanie katodami to czemu w kodzie tego nie zanegujesz? w tym kodzie w przerwaniu?

Autor:  kubabrowar333 [ 31 lip 2018, o 14:43 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

Gdy negowałem maskę wtedy wszystkie wyświetlacze świeca bardzo słabo.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a ty schemat całego urządzenia z wyświetlaczami
Załącznik:
Wi-Fi Clock Model 1.pdf

Autor:  andrews [ 31 lip 2018, o 16:57 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

kubabrowar333 napisał(a):
Mam problem z dostosowaniem biblioteki z BB do wyświetlaczy ze wspólną katodą.
...
Myślę ze problem leży w sterowaniu katodami 1 a nie 0 i przełączaniu ich w przerwaniu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Gdy negowałem maskę wtedy wszystkie wyświetlacze świeca bardzo słabo.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przyznam się uczciwie, że nie znam tej biblioteki, ale na Twoim miejscu spróbowałbym jeszcze:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ostrzegam, że to był strzał z zamkniętymi oczami ;)

Autor:  kubabrowar333 [ 31 lip 2018, o 18:20 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

wtedy wyświetlacz świeci bardzo słabo a biblioteka pochodzi z niebieskiej książki

Autor:  andrews [ 31 lip 2018, o 19:29 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

kubabrowar333 napisał(a):
biblioteka pochodzi z niebieskiej książki

Nie mam "niebieskiej książki", co nie musi oznaczać, że się nie znam na multipleksowaniu i nie umiem wyciągać logicznych wniosków.
Jeżeli przy takim zapisie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
cyfry Ci się nakładają,
a przy takim zapisie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

"wyświetlacze świecą bardzo słabo", to przy zapisie jaki zaproponowałem powinno być OK.

Jeśli nie jest dobrze, to znaczy najprawdopodobniej, że to nie jedyny błąd. Warunkiem prawidłowego działania jest na przykład prawidłowa modyfikacja w przerwaniu zmiennej licznik. Musi ona przyjmować wartości adekwatne do tego, na których pinach masz podłączone sterowanie katod. Zgodnie z Twoim schematem zmienna licznik powinna przyjmować kolejne wartości (binarnie):
00010000
00100000
01000000
10000000
00010000
00100000

... itd.

Jeśli w przykładzie z książki masz sterowanie anodami na innych pinach portu, to musisz to przerobić.

Dodatkowo należy pamiętać, że przed zmianą cyfry (w przerwaniu) należy wszystkie katody wyłączyć, i to też musisz zmienić w stosunku do przykładowego kodu z książki, bo z tego co rozumiem, tam jest sterowania anodami. Wygaszenie u Ciebie powinno wyglądać tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Powinny tam być również warunki, które wybierają odpowiednie cyfry np. na podstawie wartości zmiennej licznik. Jeśli Twoje katody są na innych pinach jak w przykładowym kodzie z książki, to też musisz to zmodyfikować.

Podejrzewam, że autor książki opisał w niej, jak działa kod i ewentualnie w jaki sposób można dostosować go do własnych potrzeb, więc może przeczytaj to dokładnie.

Łatwiej byłoby, gdybyś pokazał całą swoją procedurę obsługi przerwania, ale pewnie tego nie możesz zrobić ze względu na prawa autorskie. Proponowałbym jednak, abyś sprawdził moje sugestie...

Autor:  kubabrowar333 [ 31 lip 2018, o 21:09 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

Dzięki za pomoc.
Procedurę przerwania rozwiązałem w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  andrews [ 1 sie 2018, o 07:30 ]
Tytuł:  Re: Wyświetlacz 7-segmentowy ze wspólną katodą biblioteka

Sądząc po tym, w jaki sposób wcześniej włączałeś katody wyświetlacza, teraz zastosowałeś inną taktykę wykorzystania zmiennej licznik, niż to jest w kodzie z książki, ale tak też powinno działać. Miałbym jednak jeszcze pewne uwagi.
  • Sekwencja przełączenia cyfry powinna wyglądać tak:
    1. wyłączenie wszystkich katod - wygaszenie wszystkich cyfr
    2. zmiana stanu portu sterującego segmentami cyfry
    3. włączenie odpowiedniej katody aktualnie wyświetlanej cyfry
    Ma to zapobiegać "prześwitywaniu" segmentów z sąsiednich cyfr. W Twoim kodzie ta kolejność nie jest zachowana. Powinieneś zmienić kolejność instrukcji wewnątrz bloków warunkowych case.
  • Zerując zmienną licznik w ten sposób spowodowałeś, że jeden "obieg" procedury obsługi przerwania jest niewykorzystany i służy tylko do wyzerowania zmiennej. W efekcie wykorzystujesz pięć "obiegów" procedury obsługi przerwania do przełączania czterech cyfr, przy czym jedna z cyfr będzie się świecić dwukrotnie dłużej, niż pozostałe, co może spowodować, że wizualnie będzie się ona świecić nieco jaśniej niż inne.
    Aby tego uniknąć, zmienna licznik powinna być modyfikowana (lub przynajmniej zerowana) po zakończeniu instrukcji switch

Osobiście zrobiłbym raczej w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/