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



Teraz jest 29 mar 2024, o 11:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 31 gru 2014, o 13:41 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Witam!
Od kilku dni próbuje przerobić kod z bluebooka lekcja 3 Multipelksowanie LED na attiny 2313 i uruchomić to na zl11avr.
Niestety brak reakcji; zmieniłem oczywiście nazwy i nr portów, ustawienie dla trybu CTC, maskę bitów, przy programowaniu oczywiście ustawiłem w mkavrkalulatorze fusebity, mam wlutowany kwarc 8MHz.

Schemat mojego zestawu:
Obrazek

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


fragment bibliotek (zmodyfikowany 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.


fragment pliku nagłówkowego (zmodyfikowany 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.


Kompilacja przebiega bez błędów i ostrzeżeń. Czy coś przeoczyłem w tych kodach????
Z góry dziękuje za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2014, o 14:31 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 181
Lokalizacja: Kraków
Pomógł: 30

Według mnie masz źle zapisane wyrażenie sterowania anodami. Chodzi mi o ANODY_PORT. Przy takim zapisie wartość wpisywana do PORTU D zmienia się w zależności od stanu licznika na trzech ostatnich bitach a przecież anody masz podłączone do pinów 3, 4, 5, 6. Tam w obsłudze przerwania masz też na początku wygaszenie wszystkich wyświetlaczy poprzez wpisanie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To jest oczywiście nieprawda. Po pierwsze 0x78 to jest 0b0111 1000 binarnie.
Po drugie po wykonaniu tej instrukcji bity portu D 7, 2, 1, 0 zostaną wyzerowane, a bity 6, 5, 4, 3 nie zmienią się, a przecież nie o to chodziło.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2014, o 16:35 
Offline
Użytkownik
Avatar użytkownika

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

Witam
fazer napisał(a):
Niestety brak reakcji

...to tak jakbyś u lekarza powiedział "coś mi dolega". Rozwiń proszę to pojęcie bo w ten sposób pojawi się kilka wpisów zanim wszystko będzie jasne. Nawiasem mówiąc zapisywanie rejestrów czy innych ustawień w zapisie hex jeśli są prawidłowe to OK, ale łatwo o pomyłkę; już czytelniej jest zapisać w bin - tak jak kol.janusz17 Ci to porównał. Cyfra maskująca jest oczywiście błędna, ale wygląda "fachowo".
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

...znaczy rejestr posiadają tylko inne bity konfig.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2014, o 19:05 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Dzięki za odpowiedzi!
Cytuj:
Po drugie po wykonaniu tej instrukcji bity portu D 7, 2, 1, 0 zostaną wyzerowane, a bity 6, 5, 4, 3 nie zmienią się, a przecież nie o to chodziło.

Przyznam szczerze, że nie do końca ogarniam, maskowanie bitowe. Czytałem uważnie w książce pana Kardasia, o maskowaniu i chciałem aby zmieniały się tylko stany na końcówkach, które sterują tranzystorami. Jak zatem poprawnie zapisać maskowanie bo nie mam pomysłu na to :(


Cytuj:
...to tak jakbyś u lekarza powiedział "coś mi dolega". Rozwiń proszę to pojęcie bo w ten sposób pojawi się kilka wpisów zanim wszystko będzie jasne.


Tzn. nie zapala się żaden segment ani kropka, tak jakby w ogóle nie było zasilania. Układ na pewno jest dobrze polutowany, mogę zapalać pojedyncze segmenty.

Cytuj:
...ATtin2313 nie posiadają takiego rejestru, winno być:


Zatem dałem wpuścić się w maliny http://diycenter.acid19.linuxpl.com/rea ... icle_id=19

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: 31 gru 2014, o 19:28 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 181
Lokalizacja: Kraków
Pomógł: 30

Co do maskowania bitów to zasada jest następująca. Powiedzmy, że chcesz zmieniać bity 3, 4, 5, 6 w porcie czy jakiejś zmiennej. Wtedy maska powinna być = 0b10000111. Nie zostaną zmienione bity w których maska ma wartość 1, natomiast zmianie ulegną bity na pozycjach, których maska ma wartość 0.
A więc
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tylko ten licznik powinien kolejno przyjmować stany 0b01000000, 0b00100000, 0b00010000, 0b00001000



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2014, o 20:00 
Offline
Użytkownik
Avatar użytkownika

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

Witam
fazer napisał(a):
Zatem dałem wpuścić się w maliny ...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



...ale w tym kodzie wykorzystano TIMER1 a Ty używasz TIMER0 więc trzeba patrzeć na rejestry TIMER0.

fazer napisał(a):
nie zapala się żaden segment ani kropka, tak jakby w ogóle nie było zasilania

...a zworki J1,J2 przełożone?
A teraz pomyśl: na których PIN'ach w programie "wędruje" 0 a do których masz podpięte bazy tranzystorów kluczujących?

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

Nie robiłem nic przy maskowaniu, najlepiej najpierw odpal bez maskowania a potem je dołóż.
W pliku main.c nie bardzo rozumiem: czekasz aż będzie większe od 9999 a zmienną odejmujesz ( licznik--;) - trochę namieszałeś.



Pozdr.



Ostatnio edytowano 1 sty 2015, o 01:36 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2014, o 21:57 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Cytuj:
Co do maskowania bitów to zasada jest następująca. Powiedzmy, że chcesz zmieniać bity 3, 4, 5, 6 w porcie czy jakiejś zmiennej. Wtedy maska powinna być = 0b10000111. Nie zostaną zmienione bity w których maska ma wartość 1, natomiast zmianie ulegną bity na pozycjach, których maska ma wartość 0.
A więc

Teraz rozumiem, zmieniłem ale dalej segmenty nie "palą" :(

Cytuj:
...ale w tym kodzie wykorzystano TIMER1 a Ty używasz TIMER0 więc trzeba patrzeć na rejestry TIMER0.


Źle spojrzałem, już dostaje oczopląsu;)

Cytuj:
...a zworki J1,J2 przełożone?
A teraz pomyśl: na których PIN'ach w programie "wędruje" 0 a do których masz podpięte bazy tranzystorów kluczujących?


Zworki są na DISP, zero powinno wędrować na PD6..PD3.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


też nie pomogło... :(

Cytuj:
W pliku main.c nie bardzo rozumiem: czekasz aż będzie większe od 9999 a zmienną odejmujesz ( licznik--;) - trochę namieszałeś.

zmieniłem tak jak było w "originale" ale też brak zapalenie choćby kropeczki.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Mam nadzieję, że w nowym roku rozwiąże ten problem;)
Życzę wszystkim szczęśliwego nowego roku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2014, o 23:37 
Offline
Użytkownik
Avatar użytkownika

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

...a zmieniłeś w przerwaniu "liczenie" seg. tak jak Ci napisałem?
Jakbyś miał czas to zajrzyj do noty kat. ;)
Jest:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


...nie było także "polecenia" aby z tymi anodami coś się działo - edytowałem wcześniejszy wpis dodając ANODY_PORT = ~licznik.

Również wszystkiego najlepszego :)

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 22:30 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Zmieniłem ten TCCR0A na:

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

i migocze jeden segment. Kilka razy na sekundę zmienia się cyfra 8 na 9.

negowanie licznika nic nie zmieniło
Cytuj:
ANODY_PORT = ~licznik


czyżby dalej z maskowaniem coś nie tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 23:10 
Offline
Użytkownik
Avatar użytkownika

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

kicajek napisał(a):
...a zmieniłeś w przerwaniu "liczenie" seg. tak jak Ci napisałem?

...przepisz to multipleksowanie tak jak Ci napisałem; masz liczyć od 8 do 64 a nie 1 do 8!!!
fazer napisał(a):
negowanie licznika nic nie zmieniło
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

...to nie jest negowanie licznika, tylko "odpalanie" danego wyświetlacza ( u Ciebie dla licznik = 1 - pierwszego, 2 - drugiego, 4 - trzeciego itd; a ma być 8, 16, 32, 64 )
I jeszcze jedno: musisz zmienić PIN'y dla poszcz. segmentów
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

bo w.g schematu masz inne.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 15:11 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Cytuj:
...przepisz to multipleksowanie tak jak Ci napisałem; masz liczyć od 8 do 64 a nie 1 do 8!!!

Poprawiłem
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.

Powyżej powinno być w tych warunkach od 64 do 8, zmieniłem w międzyczasie.
w funkcji main.c 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.


resztę "wyłączyłem" jako komentarz
i pokazały się takie bzdury:
Obrazek

chciałem wyświetlić 2015, segment F "pływa" od W4 do W1



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 19:35 
Offline
Użytkownik
Avatar użytkownika

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

A to?
kicajek napisał(a):
I jeszcze jedno: musisz zmienić PIN'y dla poszcz. segmentów
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

w.g schematu masz inne.

zmieniłeś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 19:48 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Cytuj:
zmieniłeś?

Na czym ta zmiana ma polegać bo już nie rozumiem??
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: 2 sty 2015, o 19:57 
Offline
Użytkownik
Avatar użytkownika

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

...patrzyłem na Twój pierwszy wpis z załączoną bibl.
Coś masz z połączeniami, u mnie odpaliło za pierwszym razem ( oczywiście po poprawkach w rejestrach )
Później coś wymyślimy bo muszę skończyć fuchę :)
A skąd wziąłeś tą nieszczęsną liczbę 87 - mówiłem, że nie zapisując binarnie łatwo o pomyłkę.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 20:29 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

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

w 4 albo 5 poście dostałem taką podpowiedz. 0x87 = 0b1000 0111

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


jak uczyłem się bascoma na tym zestawie, multipleksowanie działało bez zarzutu.



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

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

Sory, obydwa zapisy są poprawne tylko ja patrzyłem że uC na PORTB ma wyjście 7 bitowe.
fazer napisał(a):
Powyżej powinno być w tych warunkach od 64 do 8, zmieniłem w międzyczasie.

...nie wiem czy dobrze zrobiłeś, jak się dobrze przyjrzysz to zauważysz że wyświetlacz wyświetlił Ci prawie to co chciałeś tylko od prawej do lewej i nie te segmenty. Musisz programowo sprawdzić, czy one odpowiadają temu co masz na schemacie. Napisz mini programik, wystaw na np. PD3 zero i po kolei "każ mu" zapalać poszcz. segmenty.
Z tego co analizowałem wychodzi na to, że jednak masz inaczej niż na schemacie. Segmenty przypisz odwrotnie niż pokazuje schemat - PB0 / a, PB1 / b itd.

Pozdr.



Ostatnio edytowano 2 sty 2015, o 21:21 przez kicajek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 21:14 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

program main zmodyfikowałem tak aby wyświetlał na pierwszym segmencie 2:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ciągle modyfikuje ten orginalny program z bluebooka

Cytuj:
...nie wiem czy dobrze zrobiłeś, jak się dobrze przyjrzysz to zauważysz że wyświetlacz wyświetlił Ci prawie to co chciałeś tylko od prawej do lewej i nie te segmenty.

teraz jest 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 wyświetla takie bzdurki:
Obrazek
o ile dobrze rozumuje to licznik==64 wtedy PD6=0; licznik==32 to PD5=0 itd...
Przynajmniej na I segmencie jest niepełna cyfra 2.
Pozdro!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 21:23 
Offline
Użytkownik
Avatar użytkownika

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

Edytowałem poprzedni wpis, to zobacz.
...a komentarz do tego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

mógłbyś wyrżnąć :lol:

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2015, o 21:43 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Jutro sprawdzę poszczególne segmenty bo już dzisiaj nie mam już siły.
Dzięki za pomoc.
O efektach poinformuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2015, o 00:04 
Offline
Użytkownik
Avatar użytkownika

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

kicajek napisał(a):
Z tego co analizowałem wychodzi na to, że jednak masz inaczej niż na schemacie. Segmenty przypisz odwrotnie niż pokazuje schemat - PB0 / a, PB1 / b itd.

Nie sprawdzaj, tylko zmień przypisanie segmentów.
...kurcze, żeby raz za razem sam siebie cytować... :roll:

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2015, o 14:48 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 30 lis 2014
Posty: 10
Pomógł: 0

Sprawdziłem te segmenty, okazało się, że na schemacie były źle napisane. Nauczka na przyszłość...
Zmieniłem piny w bibliotece i ruszyło:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Obrazek

Dzięki za cenne porady.



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

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

Witam
Fajnie że działa.
fazer napisał(a):
chciałem wyświetlić 2015

...zacząłem się obawiać, że będziesz musiał wyświetlić 2016 :D

Pozdr.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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