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



Teraz jest 19 gru 2024, o 11:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 21 lut 2012, o 22:04 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Witam,
Znalazłem, że kropka to segment H, to też ją dodałem do mojej tablicy jako 11 z kolei, tylko kiedy ją dopiszę do cyfry nr 2 jako: "cy2=d2|11" albo jak dodam ją tak: "cy2=d2|SEG_DP" to na cy2 dzieje się wszystko tylko nie to czego chcę.
Domyślam się, że kompilator po prostu dodaje sobie SEG_DP do zmiennej d2 co w wyniku daje liczbę > 9 czyli nie możliwą do wyświetlenie ale nie wiem gdzie dopisać tą kropkę aby zniwelować ten błąd.
Proszę o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2012, o 22:31 
Offline
Użytkownik
Avatar użytkownika

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

jaśniej może napisz , przedstaw kod , bo ciężko zgadnąć o co ci chodzi

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

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

chodzi mi o to, że jak mam do możliwości wyświetlenia na wyświetlaczu LED 4 cyfry z kropkami, to 4 cyfry jestem w stanie wyświetlić jednak kiedy do jakiejkolwiek cyfry dodać kropkę to na wyświetlaczu na tej cyfrze zaczynają się pojawiać dziwne rzeczy a nie cyfra + kropka pod nią. Kod do okiełzania multipleksu LED jest napisany na podstawie kodu z płyty DVD (jest praktycznie taki sam) tylko w tablicy z zapisanymi cyframi dodałem swoją kropkę i mam problem z dodaniem jej do main.c ponieważ nie wiem gdzie ją wpleść do mojej pętli głównej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2012, o 23:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 gru 2011
Posty: 110
Lokalizacja: Dolnyśląsk
Pomógł: 0

Bardzo prosta rzecz kolego :) ale jak wspominał SunRiver. Podaj jakiś kod to Cię spróbujemy nakierować bo gotowców to raczej nikt nie daje i nie powinien tego robić.



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

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

Ale spokojnie - ja może powiem troszkę inaczej bo coś przez skórę czuję chyba problem kolegi - aczkolwiek może się mylę.

Po pierwsze faktem jest że w książce w ogóle nie poruszyłem zagadnienia jak wyświetlać sobie kropki - ale nie samą kropkę tylko np kropkę po jakiejś cyfrze.....

Ty widzę, że poszedłeś bardzo złą drogą, bo jak piszesz zdefiniowałeś sobie znak kropkę jako kolejny znak w tablicy znaków na LED - dobrze myślę ? No gdy wpiszesz jej kod czyli INDEX do zmiennej cy1, czy cy2 - to sama kropka pewnie się świeci ? dobrze zgaduję ?

No ale następnie podjąłeś się karkołomnej operacji:

cy2=d2|SEG_DP;

O jej! co ty robisz ? weź sobie oblicz jaka liczba wyląduje w zmiennej cy2 po tej operacji: d2|SEG_DP ..... toż to będzie jakiś indeks w tej tablicy, który nie odpowiada żadnemu elementowi w niej (tu widać, że jeszcze nie do końca zrozumiałeś na czym polega do końca to wyświetlanie pojedynczych znaków - tzn jak one są pobierane z tej tablicy wzorców - zgadza się?)

dlatego podpowiem, że obsługę kropek można sobie zrobić ale np poprzez lekką modyfikację funkcji z przerwaniu i opcji OR z SEG_DP użyć w jakimś dodatkowym warunku gdy wywalany jest wzór o kodzie w cy2 na LED.... to na tym etapie w zależności tak na przykład od jakiejś dodatkowej zmiennej czy zmiennych np k1, k2, k3, k4 .... dokonywać np coś takiego:


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


wtedy oprócz zmiennych cy1, cy2, cy3, cy4 definiujesz sobie jeszcze dodatkowo k1, k2, k3, k4

i jak chcesz na stałe wyświetlić kropkę na drugim wyświetlaczu to

k2=1;
cy1=1; cy2=2; cy3=0; cy4=5

uzyskasz wtedy liczbę 12.05

albo:

k2=0;
k3=1;
cy1=8; cy2=3; cy3=7; cy4=2

uzyskasz liczbę 837.2

oczywiście jak widzisz musiałem zgasić kropkę na pozycji 2 ....

troszkę to tak na kolanie napisałem więc może nie zadziałać od pierwszego kopa - ale taką drogą można pójść ;)

i doczytaj jeszcze raz po co jest to:

pgm_read_byte( &cyfry[cyn] );

_________________
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 lut 2012, o 19:45 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

mirekk36 napisał(a):
Ale spokojnie - ja może powiem troszkę inaczej bo coś przez skórę czuję chyba problem kolegi - aczkolwiek może się mylę.


Masz rację nie mylisz się i dzięki, że powtórzyłeś to co już napisałem:

infa08 napisał(a):
kiedy ją dopiszę do cyfry nr 2 jako: "cy2=d2|11" albo jak dodam ją tak: "cy2=d2|SEG_DP" to na cy2 dzieje się wszystko tylko nie to czego chcę.
Domyślam się, że kompilator po prostu dodaje sobie SEG_DP do zmiennej d2 co w wyniku daje liczbę > 9 czyli nie możliwą do wyświetlenie


mirekk36 napisał(a):
dlatego podpowiem, że obsługę kropek można sobie zrobić ale np poprzez lekką modyfikację funkcji z przerwaniu i opcji OR z SEG_DP użyć w jakimś dodatkowym warunku gdy wywalany jest wzór o kodzie w cy2 na LED.... to na tym etapie w zależności tak na przykład od jakiejś dodatkowej zmiennej czy zmiennych np k1, k2, k3, k4 .... dokonywać np coś takiego:


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


wtedy oprócz zmiennych cy1, cy2, cy3, cy4 definiujesz sobie jeszcze dodatkowo k1, k2, k3, k4


Dodałem zmienne k1, k2, k3, k4 do pliku d_led.h i przepisałem twój kod. Wgrałem do mikrokontrolera i diody przestały działać (pojawił się wszędzie INDEX "NIC") toteż zmodyfikowałem go troszeczkę:

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


I efekt był taki sam jak za pierwszym podejściem. Testowałem też dodawanie i usuwanie SEG_DP z tablicy znaków jednak nie przyniosło to żadnego rezultatu.



Ostatnio edytowano 25 lut 2012, o 18:53 przez infa08, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2012, o 20:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 gru 2011
Posty: 449
Pomógł: 4

Z racji swojego braku doświadczenia, w pierwszym odruchu pomyślałem, że najprostszym rozwiązaniem będzie utworzenie drugiej tablicy z cyframi i kropką, czyli następna tablica 10 elementowa, a w zasadzie 11 elementowa prawda?
Jest to oczywiście wersja "rozrzutna", bo niestety tracimy znowu cenne miejsce w pamięci naszego procka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sie 2012, o 20:09 
Offline
Użytkownik

Dołączył(a): 10 sie 2012
Posty: 91
Lokalizacja: Wąbrzeźno
Pomógł: 0

Witam, to mój pierwszy post na tym forum. Temat dość stary, ale go odświeżę( może kolega nie rozwiązał jeszcze swojego problemu).
Więc przedstawię gotowca(wiem, że Mirek tego nie popiera), tylko, że mój program jest na Atmega8 i wyświetlaczu ze wspólnymi katodami więc kieruję tylko anodami, program działa mi bardzo dobrze, gdy w głównej funkcji main wpiszę k=3 to kropka znajdzie się na 3 cyfrze.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dodam, że fajnie można sobie poćwiczyć dzięki takiemu ćwiczeniu(Atmega32-->Atmega8) zaglądanie do noty katalogowej i pisanie kodów.

Wyświetlacz i mikrokontroler wykorzystałem taki bo nie mam innych rzeczy(oprócz książki) - zestaw ATB planuję niedługo kupić, ale jescze nie jest mi potrzebny jak widać, bo oprócz tego mam parę diod wyświetlacz diodę RGB itp.

Mam jeszcze 2 pytania odnośnie tego projektu i nie tylko:
1. Czy można, a jeśli tak to jak zrobić program obsługi wyświetlacza 7-segmentowego na Timerze 0 Atmegi8 :?:
2. Czy trwają pracę nad kolejną wersją płytki ATB :?:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sie 2012, o 21:59 
Offline
Moderator
Avatar użytkownika

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

A dlaczego miałbym nie popierać własnych modyfikacji ? kodów z książki - jak najbardziej popieram i brawo za wymyślenie jednej z wielu metod w tym przypadku ;)

odpowiadając na twoje dwa pytania:

1. a dlaczegóż nie można byłoby zrobić tego na Timer0 w m8 ??? hmmm toż to taki sam sprzętowy timer. No może nie ma trybu CTC - ale co nie można go w podobny sposób użyć jak przy CTC??? Można ;) trzeba jedynie wartość TCNT0 przeładowywać w procedurze obsługi przerwania. Więc żaden problem.

2. zastanawiałem się nad jakimiś poważniejszymi modyfikacjami w zestawach ATB - ale niestety wciąż mam na to za mało czasu a na prawdę nie chciał bym spaprać tego co jest teraz - tym bardziej, że z doniesień użytkowników są same pozytywne opinie - no może poza ceną - ale niedługo przygotuję pewien film porównawczy, który mam nadzieję rzuci nowe światło na ten stosunek ceny do jakości..... Dlatego reasumując nawet jeśli w najbliższym czasie miałaby się pojawić jakaś modyfikacja w ATB to raczej bardzo drobna i kosmetyczna. Tyle mogę powiedzieć - ale na pewno nie uda mi się żadnych terminów określić :(

_________________
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: 10 sie 2012, o 23:51 

Pomógł: 0

Sam wykorzystałem prostszy sposób z dodatkową tablicą, tj. ta sama tablica tylko dłuższa, a cyfry z kropką przesunięte o 20miejsc ;). Można o mniej, ale mi jeszcze dochodzą dodatkowe znaki.

Wiedząc, że ma być wyświetlona kropka, po prostu dodaję do wartości wyświetlanej przesuniecie i tyle.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 11 sie 2012, o 07:22 
Offline
Moderator
Avatar użytkownika

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

rezasurmar napisał(a):
Wiedząc, że ma być wyświetlona kropka, po prostu dodaję do wartości wyświetlanej przesuniecie i tyle.


Jak mówiłem jest milion sposobów a każdy ma swoje wady i zalety ;) w tym przypadku będzie zajęte nieco więcej pamięci Flash, ale cóż to jest z drugiej strony te kilka dodatkowych znaków ? ... a w poprzednim przypadku procedura obsługi przerwania nieco się wydłuży ale też można powiedzieć, cóż to jest tych kilka dodatkowych us? ;)

_________________
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: 7 wrz 2013, o 14:26 
Offline
Użytkownik

Dołączył(a): 04 kwi 2013
Posty: 107
Lokalizacja: Zabrze
Pomógł: 0

Projektuje zegarek na wyświetlaczu LED. Mam podobne problemy z kropkami, które z czasem maja służyć jako sekundnik.
-ściągnąłem errate kodu 03_Multi_LED
-na samym początku wprowadziłem prosty licznik - dla próby
-następnie sugerując się tym forum zmodyfikowałem kod, by możliwe było wyświetlanie kropek.

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


Oczywiście zadeklarowałem również zmienne k1-k2.
kropek jednak jak nie było tak nie ma wyświetlonych.

procesor atmega8 i 8Mhz

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: 7 wrz 2013, o 14:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Ja mam podobnie jak rezasurmar, jedną większa tablicę z dodatkowymi znakami oraz cyframi z kropką.
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: 7 wrz 2013, o 15:12 
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

Inny przykład:
topic2944.html?hilit=Modyfikacja%2003Multi_LED#p35234

_________________
Dragonus Cracovus: Biomagia



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO