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



Teraz jest 1 lut 2026, o 20:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 11 lis 2015, o 19:13 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

Witam..
Na początku pragnę wspomnieć ze jestem prosto z zieleniaka XD
Mianowicie stwierdziłem ze zrobię sobie termometr na ds18b20 i wyświetlaczu 7seg.
Wiec złożyłem wyświetlacz przetestowałem programikiem z płytki (03_Multi_LED), no i działa pięknie śmiga i wgl. :D
Wiec stworzycielem nowy projekt, jako baza posłużył kod z testu, wyciąłem z niego niepotrzebne rzeczy, z projektu 10_1wire
zapożyczyłem biblioteki do obsługi 1wire i ds18b20, oraz z pliku main.c tegoż projektu zapożyczyłem obsługę tychże czujników, wycinając oczywiście elementy które były odpowiedzialne za wyświetlanie temp na LCD
Jesli chodzi o przerwanie to zmodyfikowałem biblioteke d_led.c w ktorej znajduje sie obsluga przerwania, tak by obslugiwalo to przerwanie rowniez czujniki.
Teraz listing z main.c mojego Frankensteina..
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

oraz czesc zmodyfikowana z biblioteki d_led.c
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, czy to ma prawo działać? To chciałbym wiedzieć priorytetowo. ( czy opłaca się w to dalej brnąć)
A jak ma to jak mam wyświetlać temperaturę na tym wyświetlaczu? W kodzie widać moje próby na ten temat XD


I jeszcze jedno...
Prosze nie bijcie mnie za to świętokractwo i za moja ułomność :D :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2015, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Zacząć by od tego, że nie możesz w ten sposób wyświetlić temp.
Zmienna cel podawana jest w pełnych stopniach więc odczyt na poszcz. wyświetlacze musisz rozbić:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

To tak na początek.
Jak to odpalisz to pomyślimy na gaszeniu nieznaczących zer.
RedStar napisał(a):
czy opłaca się w to dalej brnąć

To zależy co masz na myśli; gotowy termometr made in wiadomo to koszt 10PLN :)
natomiast brnięcie w AVR'y głęboko użaleznia - przed kompilacją skontaktuj się z lekarzem lub forumowiczem :lol:

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2015, o 22:48 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

Rozumiem ze to nie jest pełne rozwiązanie, muszę rozkminić jak podawać pojedyncze cyfry z cel na każdy wyświetlacz z osobna?
I jeszcze jedno nie wiem jak to się stało bo nie mogę odnaleźć nigdzie w kodzie tego przyczyny, mianowicie wyświetlacz pokazuje oczywiście 0000, ale w ostatnim szybko miga się kropka.
Jakieś sugestie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2015, o 22:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

RedStar napisał(a):
muszę rozkminić jak podawać pojedyncze cyfry z cel na każdy wyświetlacz z osobna?

Przecież Ci podałem ;)
RedStar napisał(a):
Jesli chodzi o przerwanie to zmodyfikowałem biblioteke d_led.c w ktorej znajduje sie obsluga przerwania, tak by obslugiwalo to przerwanie rowniez czujniki.

To raczej kiepski pomysł, lepiej odpal drugi timer.
RedStar napisał(a):
nie mogę odnaleźć nigdzie w kodzie tego przyczyny

Nie wiem co dłubałeś przy pliku led7 ale u mnie działa prawidłowo, z tym że osobne timery do temp. i 7_led.

Pozdr.



Ostatnio edytowano 11 lis 2015, o 23:29 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2015, o 23:08 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

Propo tego rozbijania, nie lepiej było by odczyt z ds zapisać w tabeli i dopiero z tabeli to obrabiać?
Props timera :D Tez mi się wydawało ze to kiepski pomysł. Jutro jak będzie czas to nad tym popracuje, dzisiaj już raczej nic nie wykombinuje ..
Jak na razie postaram się wyświetlić jakakolwiek temperaturę :D

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

Takie coś zrobiłem ale nic się nie wyświetla, ciągle same zera.
Czyżby brak osobnego timera dla ds był tu problemem?
Dodam ze dioda która ma sygnalizować błędy w odczytu temp z ds nie świeci..

------------------------ [ Dodano po: 31 minutach ]

kicajek napisał(a):

RedStar napisał(a):
nie mogę odnaleźć nigdzie w kodzie tego przyczyny

Nie wiem co dłubałeś przy pliku led7 ale u mnie działa prawidłowo, z tym że osobne timery do temp. i 7_led.

Pozdr.

Pomogło usuniecie moich zmian w pliku d_led.c
W sumie i tak muszę odpalić drugi timer dla ds, Czy do tego celu nadaje cie timer1 ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2015, o 23:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
RedStar napisał(a):
nie lepiej było by odczyt z ds zapisać w tabeli

Nie bardzo wiem o co z tymi tabelami Ci chodzi, ale jak masz zamiar rozpisać (tylko dodatnie) temp. od 0 do np.:50stC w skoku 0,1st?. Przecież tak cel jak i cel_fr... to są "żywe" liczby.
To jest dziwne, że masz zera a nie NIC lub 8888 bo to by już o czymś świadczyło ( no chyba że w tym splocie nieszczęść nie łączy seg_G).
Spróbuj po wgraniu programu nacisnąć RESET.
Tego Ci nie potrzeba
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Zapisz tak jak Ci podałem.(źle się wyraziłem: proponuję abyś ....)

EDIT: ( dość późno pisałem :| )
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdr.



Ostatnio edytowano 12 lis 2015, o 13:06 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2015, o 23:57 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

To tak zamiany wprowadzone, pliki od wyświetlacza tzn. ''d_led.c"' i ''d_led.h'' są takie jakie są oryginalnie w przykładzie z płytki bb.

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

Reset nic nie daje, dodam ze po usunięciu ''//'' z przez testowej inicjalizacji wyświetlacza pokazuje se ''Err-'' , czyli dokładnie to co ma się pokazywać..
Po wprowadzonych zmianach dalej same zera. Nie wiem tez czy timer1 dobrze odpalony, eclipse nie wywala żadnych błędów..

------------------------ [ Dodano po: 17 minutach ]

Okej stwierdzam ze jestem głupi..
Okazało się ze czujnik w bibliotece był przypisany do PD7 a tam był wpięty segment kropki, a czujnik siedział na PB0...
Odczyt jest w postaci "0270" po resecie się zmienia dopiero, co jak sadze znaczy ze timer od ds jest źle skonfigurowany..
Połowiczny sukces jest :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2015, o 13:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
RedStar napisał(a):
co jak sadze znaczy ze timer od ds jest źle skonfigurowany..
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

...a no:
Obrazek

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 12:07 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

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

A procedura przerwania 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.

I nic ds dalej nie odświeża temperatury..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 15:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Nie potrzebnie przechodziłeś na OCR1B, widać lekkie braki w czytaniu noty.
W tamtym rysunku wskazałem, że WGM.. i CS'y były przypisane "nie do tego TCCR'a", Ty zaś zmieniłeś wszystko choć nota pokazuje że tryb CTC "regulowany" jest przez...
Obrazek
...czyli przedtem było prawie dobrze: WGM12 - tryb CTC.
Wiesz można napisać gotowca, ale jak sam trochę podłubiesz/poszukasz to lepiej zapamiętasz.
I jak to mówią dwie pluskwy: "jakby co to jesteśmy w kontakcie" ;)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 18:30 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

Nie zauważyłem tego.. jakoś to tak dziwnie, wszędzie TCR1B,OCIE1B a tu nagle OCR1A ?
Ale już działa :D

------------------------ [ Dodano po: 12 minutach ]

To teraz tak się zastanawiam skoro temperatura np. 21,5*C wyświetla się tak:
cy1=0
cy2=2
cy3=1
cy4=5
To może pierwszy wyświetlacz wygasić, i jak będzie minusowa temperatura to na nim wyświetlać "-"
Bo chyba raczej nigdy nie będę mierzył temperatury większej od "99" i mniejszej od "-99"
I jeszcze pasowało by wyświetlać na "cy3" kropkę przed wartościami dziesiętnymi temperatury..
I czy to normalne ze cześć dziesiętna to tylko 5 albo 0 ?

To są moje dalsze założenia..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
RedStar napisał(a):
To może pierwszy wyświetlacz wygasić, i jak będzie minusowa temperatura to na nim wyświetlać "-"
I jeszcze pasowało by wyświetlać na "cy3" kropkę przed wartościami dziesiętnymi temperatury..
I czy to normalne ze cześć dziesiętna to tylko 5 albo 0 ?
To są moje dalsze założenia..

Ambitne plany :)
-pierwszy wyświetlacz wygasić, i jak.... - nie uzależniać jego wskazania od cel tylko od subzero
-na "cy3" kropkę.. - nie wiem co masz w "d_led.c", ale w przerwaniu wystarczy dopisać seg_dp:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I czy to... - nie to nie jest normalne.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 19:57 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

To w takim razie czemu się na ostatnim wyświetlaczu(cy4) wyświetla tylko 5 albo 0 ?

------------------------ [ Dodano po: 9 minutach ]

kicajek napisał(a):
-na "cy3" kropkę.. - nie wiem co masz w "d_led.c", ale w przerwaniu wystarczy dopisać seg_dp:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdr.

Nie, nie wystarczy nic to nie daje :D
Tak wygląda teraz obsługa przerwania:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A tak wygląda main.c
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: 13 lis 2015, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

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

albo ... LED_DATA &=~(SEG_DP);
ew. podepnij do GND ;) .
W każdym razie ja sprawdzam na bieżąco, i u mnie działa ( co prawda mam wyśw. wsp Kat ) ale to (chyba) bez znaczenia.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 21:09 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

No to Jedak ma znaczenie :D A propos tych dziesiętnych części temperatury, zmieniłem na nowy ds i pokazuje już od 0-9 nie jak poprzednio 0 albo 5. Wiec wychodzi na to ze jakiś trafiony czujnik co dziwniejsze temperaturę pokazywał dobra, poza częściami dziesiętnymi :D:D

------------------------ [ Dodano po: 6 minutach ]

Dopiero podziałało to po albo..
Dzięki wielkie za wszelka pomoc, myślę ze na razie mi to wystarczy aczkolwiek nauki nie przerywam bo to zajebista sprawa takie programowanie, dzięki takim ludziom jak ty zyskuje coraz większe chęci na dalsza naukę :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 21:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

RedStar napisał(a):
No to Jedak ma znaczenie

...to masz tą kropkę?
RedStar napisał(a):
nauki nie przerywam bo to xxxx sprawa takie programowanie,

...a badania lekarskie masz aktualne :lol:

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 21:56 
Offline
Użytkownik

Dołączył(a): 15 mar 2015
Posty: 35
Lokalizacja: Jadowniki
Pomógł: 0

Kropka jest i świeci :D
A to za sprawa wstawki "LED_DATA &=~(SEG_DP);"
Jakie badania ?? :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2015, o 23:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

kicajek napisał(a):
natomiast brnięcie w AVR'y głęboko użaleznia - przed kompilacją skontaktuj się z lekarzem lub forumowiczem



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

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