Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kod z książki a nie chce działać zgodnie z założeniami

mavi 27 Sty 2012 12:56 2797 27
  • #1 27 Sty 2012 12:56
    mavi
    Poziom 19  

    Zainteresował mnie temat obsługi przez atmega8 m.in kodów rc5.
    Przepisałem żywcem kod z książki Marcina Wiązania, którego zadaniem jest odebrać kod RC5 i wyświetlić go na ekranie wyświetlacza.
    Problem w tym, że mimo dokładnego sprawdzenia wpisywanej treści. Wyświetlacz
    ciągle pokazuje: Adres: 255 , komenda: 127
    wpisywałem inne programy z netu nieco pomodyfikowane, to co udało mi się uzyskac to to, że po włączeniu układu Adres i komenda = 0 a po wcisnięciu dowolengo pilota ( a mam ich 5 w tym: jeden motoroli, jeden od odtwarzacza emtec, jeden overmax, dwa Sony od tv i PS2) znów wskakują wartości 255 i 127.
    Jedyne co mogę założyć to to, że zaden pilot nie nadaje w rc5 choć chyba to mało prowdopodobne.
    Znalazłem podobny post na forum sprzed 4 lat ale wtedy wątek nie poszedł w kierunku rozwiązania problemu i w sumie gość nie uzyskać odpowiedzi.
    przykład programu z książki:

    0 27
  • #3 27 Sty 2012 13:56
    mavi
    Poziom 19  

    korzystam z płytki ZL2AVR. Z samego procesora nie konfigurowałem w żaden sposób. Podpiety jest do niego kwarc 8MHz i dwa kondesatory.
    Inne programy, które do tej pory robiłem z tej książki po prostu po zaprogramowaniu działały. Ten nie. Nic w tekscie nie jest napisane by coś modyfikować, poza prawidłowym podłączeniem.

    NIe wiem jak powinny wyglądać fuse bity ale na razie to dla mnie czarna magia i nie dotykałem się ich skoro w książce o tym słowa nie było.

    Poniższy program skopiowany z netu po włączeniu programu pokazuje wartości 0. Po przesłaniu kodu z pilota wskakują wartości: Adres 255, Komenda:127

    co mnie zastanowiło to fakt, że układ jest niesamowicie czuły na pilota. Nie kierując pilotem w strone diody nadawczej, bez problemu sygnał jest odbierany. Mam wręcz wrażenie, że tylko supełnie zakrycie reką diody z pilota powoduje, że sygnał nie przechodzi

    0
  • #4 27 Sty 2012 14:19
    korrus666
    Poziom 40  

    Odczytany kod będzie zły jeśli będzie nie ta częstotliwość bo opóźnienia będą nie takie jak trzeba. Musisz ustawić fusebity na zewnętrzny rezonator bo pewnie masz w tej chwili ustawione na oscylator wewnętrzny bo tak jest domyślnie ustawiona Atmega8. To że rezonator jest podłączony nie znaczy że jest używany. programów do ustawiani fusebitów jest mnóstw chociażby AVRBurnOMat. Polecam skorzystać i odczytać fusy.

    0
  • #5 27 Sty 2012 15:40
    mavi
    Poziom 19  

    odczytałem i przestawiłem na zewnętrzny kwarc. Od tego momentu nie mam kontaktu z procesorem...

    0
  • #6 27 Sty 2012 17:31
    korrus666
    Poziom 40  

    Pewnie przestawiłeś coś jeszcze albo ten rezonator nie jest podłączony fizycznie do procesora. Sprawdź podłączenie rezonatora.
    Są zworki jp2 i jp3 odpowiadające za podłączenie rezonatora. Proponuje dokładnie czytać dokumentację do samej płyty jak i do procesora.

    0
  • #7 27 Sty 2012 17:44
    mavi
    Poziom 19  

    Jest to płytka ZL2AVR, więc z tego co widzę to jest podłączony kwarc zewnętrzny. Ale nie działa. Czytam wlaśnie co zrobić by odblokować atmege przez podłączenie jakiegoś układu pod wyjście XTAL1

    Mam kwar 4 MHZ i 16MHz moja atmega to 8L wiec z tego co wyczytałem kwarc maksymalny moze być 10MHz.

    Co dziwne w zestawie części do płytki ZL2AVR, którą sam sobie polutowałem, jest kwarc z oznaczeniem 12.000. WIęc jakby 12MHz mimo, że w schemacie napisane jest, że powinno być 8MHz....Czy to jest dopuszczalne? Bo ja ustawiając zewnętrzny kwac, chyba właśnie przestawilem na zewnętrzny ale 8MHz.

    Jest jakiś sposób na odblokowanie takiej atmegi? postów na ten temat jest sporo ale znalazłem raptem jeden schemat.

    0
  • #8 27 Sty 2012 19:31
    mmacura
    Poziom 17  

    Są dwie możliwości - albo faktycznie kwarc nie jest podłączony do procesora albo źle przestawiłeś fusy. Patrząc na schemat zestawu ma on dwie zworki, które podłączają kwarc do procesora - czy są one na pewno zwarte?

    Marek

    0
  • #9 27 Sty 2012 19:42
    mavi
    Poziom 19  

    Podłączone są na pewno bo do tej pory pisząc pierwsze w życiu programy, zgodnie z książką używałem tego kwarcu.

    Jak zacząłem się bawić obsługą rc5 to nagle banalny program spisany z książki nie działał. Dlatego też napisałem pierwszego posta.
    Płytke składałem sam i na początku miałem z nią problemy bo człowiek od ktorego kupiłem cały nowy zestaw przesłał mi kilka części nie od tego zestawu.
    Właśnie dziś zauwazylem, że na kwarcu wlutowanym w płytkę jest napis 12000 co sugeruje 12MHz. Wszędzie w schematach płytki jest kwarc 8MHz.
    a ja w programie AVR8 Burn-O-Mat przestawiłem w fusach kwarc na zewnętrzny. W zakładce External RC oscillator/Feequency range -chyba na opcje 3-8MHz. Wstyd się przyznać ale nie pamiętam już czy zaznaczyłem ptaszek z opcją enable internal 36pF compacitor.
    Teraz kabelkami podłączałem kwarc 8MHZ ale to też nic nie pomogło.
    Tak czy inaczej po zapisaniu danych straciłem kontakt z procesorem.

    Swoją na płytce powienienem wymienić kwarc z 12 na 8 MHz?

    0
  • #10 27 Sty 2012 20:10
    mmacura
    Poziom 17  

    Tyle że External RC oscylator to nie jest kwarc tylko oscylator RC - poczytaj sobie w datasheet.

    Marek

    0
  • #11 27 Sty 2012 20:23
    mavi
    Poziom 19  

    ok. jak to odkręcić?

    Znalazłem coś takiego odnośnie oscylatora RC.

    Nie rozumiem tylko oznaczenia NC. Czego jest to oznaczenie?
    pod co to podłączyć??
    Kod z książki a nie chce działać zgodnie z założeniami

    0
  • #12 27 Sty 2012 20:56
    mirekk36
    Poziom 42  

    No Connect - mówi ci to coś ? ;) NC - No Connect

    Dodano po 3 [minuty]:

    A na drugi raz mając procka ATmega8 używaj programu MkAVrCalculator . Masz tam zakładkę "Fusy uproszczone" Dzięki niej NIGDY się nie pomylisz w ustawianiu w fuskach tak jak to bywa w innych programach. A zapewniam cię że z twoim prockiem MkAvrCalculator będzie działał w pełnej wersji. Co więcej można go przepięknie zintegrować z Bascomem - zobacz sobie tutaj:

    http://mirekk36.blogspot.com/2012/01/bascom-mkavrcalculator-z-avrdude.html

    0
  • #13 27 Sty 2012 21:51
    mavi
    Poziom 19  

    Ujmę to tak. Używam tylko tego programu. Coś mnie dziś podkusiło sprawdzić czy zadziała mi inny program bo miałem problem z konfiguracją programatora w Bascom'ie. Zwyczajnie nie chciał mi programować.
    Więc wszedłem do tego Programu Burn-o-mat. Coś mnie pod kusiło i teraz mam problem.

    mkAVR Calkulator uważam jako jedyny i najprostszy program do zabawy z mikrokontrolerami. Nie mam zamiaru się przesiadać na cokolwiek innego. Nawet w przyszłości pewnie kupię sobie licencję, bo warto.
    Niestety zrobiłem tylko ten jeden wyjątek :(

    VCc to rozumiem +5V?
    Gdzieś wyczytałem że R ma mieć wartość 1K
    I co tak po prostu podłączyć te elementy i odpalić programowanie fusów?
    Po podłączeniu tych elementów programator powienien rozpoznać atmega8?

    Dodano po 20 [minuty]:

    Ok Odblokowalem ją :) mkAVR już ją ładnie wykrywa:)

    Dodano po 13 [minuty]:

    Wracam w takim razie do pytania na które nie znam odpowiedzi.

    Skoro w moją płytkę mam wpięty oscylator 12MHz a według schematu miał być 8 MHz to rozumiem, że programowo nie można sprawić by ten 12MHz pracował jako 8MHz ??


    coś musi być powodem tego, że banalny program do odbioru rc5 pokazuje ciągle te same wskazania.

    0
  • #14 27 Sty 2012 23:25
    korrus666
    Poziom 40  

    Jeśli masz Atmega8L to na 12 MHz penie nie będzie działać bo producent podaje że maks to 8MHz. Żeby uruchomić program na wewnętrznym oscylatorze ustaw go na 8Mhz. Możesz tez dopasować program do ustawionej częstotliwości.

    Code:
    $crystal = 8000000
    zmień na taką wartość z jaką działa Atmega8.

    0
  • #15 27 Sty 2012 23:36
    mavi
    Poziom 19  

    Tak też zrobiłem. W załączniku pierwszego posta mam ustawienie kwarcu na 8MHz.

    a i tak nie działa.
    Czyli nie musze tego kwarcu przelutować na 8MHz bo i tak programowo ustawiam i przecież narzucam mniejszą częstotliwość ? Więc 12MHz nie przeszkadza.

    Ok a co z tymi ciągle tymi samymi danymi co się pojawiają czy adresie i komendzie?
    skąd ciągle te same dane?

    0
  • #17 28 Sty 2012 00:08
    mavi
    Poziom 19  

    Przestawiłem na wewnętrzny na 8MHz ale nic to nie dało. Nadal po naciśnięciu dowolnego pilota Adres:255, a komenda:127
    ręce mi opadają.
    czy to możliwe by aż 6 pilotów od nowych urządzen nie pracowało w rc5?? Bo sony to wiem , że nie pracuje ale np.samsung?

    a jak to jest z kodami w rc6?
    jak prosty program powienien wyglądać?

    0
  • #18 28 Sty 2012 00:25
    mirekk36
    Poziom 42  

    Sony nadaje w standardzie (SIRCS) - nie ma to nic wspólnego z RC5
    Samsung ? - a skąd ci przyszło do głowy, że Samsung nadaje w RC5 ??? Samsung ma swój własny standard

    0
  • #19 28 Sty 2012 00:25
    mavi
    Poziom 19  

    coś chyba jest nie tak, bo ustawiłem $crystal na 1000000, wewnętrzny oscylator ustawiłem na 1MHz i program jak działał tak działa ...

    co do pilotów to sprawdziłem łącznie z 6 i ciągle to samo. Wymieniłem wszystkie marki by uprzedzić pytania.
    Znalazłem post gdzie ktoś miał podobny problwem jak ja z tymi wartościami 255 i 127:
    https://www.elektroda.pl/rtvforum/topic2064034.html#9833362

    0
  • #20 28 Sty 2012 00:29
    mirekk36
    Poziom 42  

    mavi napisał:

    czy to możliwe by aż 6 pilotów od nowych urządzen nie pracowało w rc5?? Bo sony to wiem , że nie pracuje ale np.samsung?


    A dlaczegóż nie miałoby być możliwe??? W 90% takich przypadków - gdy ktoś początkujący w tym temacie jak ty zabiera się za RC5 - to zwykle:

    1. nie ma pod ręką żadnego pilota RC5
    2. wydaje mu się, że prawie każdy pilot powinien nadawać w RC5
    3. jak zaopatrzy się w końcu w prawdziwy pilot RC5 - to wtedy pluje sobie w brodę, że od razu od tego nie zaczął i stracił tyle czasu - bo każdy byle pierwszy lepszy przykład z Bascoma od razu z nim działa.

    Tu Link masz na przykład 100% pilot RC5.

    Dodano po 1 [minuty]:

    mavi napisał:

    a jak to jest z kodami w rc6?


    W Bascomie masz RC5 więc o RC6 zapomnij jeśli chodzi o gotowe i standardowe biblioteki bascomiczne.

    0
  • #21 28 Sty 2012 00:33
    mavi
    Poziom 19  

    ok. to inaczej. Moja zabawa jest podyktowana tym, że chcialbym skopiować kody jednego urządzenia. Myślałem, że tak sprawdze co to za kody.
    Równie dobrze potem mogę spróbować sprawdzić tego pilota programem do obsługi rc6 no ale wole się upewnić co do rc5.

    0
  • #22 28 Sty 2012 00:43
    mirekk36
    Poziom 42  

    Ale jak ty chcesz bascomowym Getrc5 skopiować jakieś inne kody??? Niestety nie rozumiesz podstaw działania tego i stąd takie kosmiczne pomysły. Zapamiętaj sobie - że Getrc5 obsłuży ci TYLKO I WYŁĄCZNIE kody z pilota RC5 i a ni mru mru. Każdy inny standard wymaga napisania własnej obsługi.

    0
  • #23 28 Sty 2012 00:57
    mavi
    Poziom 19  

    wiem, że getrc5 odpowiada tylko za rc5. Trochę o tym poczytałem.
    Od czegoś trzeba naukę zacząć i jak na razie to robię rozwiązując problem tych powtarzających się wartości.
    Czy ktokolwiek może podsunąć pomysł co jest nie tak?

    co powinno się pojawić na wyświetlaczu jak program odbierze sygnał od pilota nadającego w innym standardzie niż rc5?

    0
  • #24 28 Sty 2012 01:08
    mirekk36
    Poziom 42  

    No ja rozumiem że zaczynasz ale jesteś niepotrzebnie uparty. piszesz że poczytałeś że wiesz a znowu zadajesz to samo pytanie po raz kolejny. No jak ci może procedura getrc5 odebrać kod innego pilota ???????? Panie zrozum pan w końcu - nic ci nie odbierze albo co najwyżej te same liczby nic nie znaczące co teraz odczytujesz.

    0
  • #25 28 Sty 2012 01:22
    mavi
    Poziom 19  

    uparty nie jestem. Staram się tylko uzyskać odpowiedź skąd ciągle te same wartości przy odbieraniu sygnału z różnych pilotów. Tym bardziej, że w innym poście ktoś miał taki sam problem i nie został tam rozwiązany.
    Gdyby ktoś mi napisał, że te wartości to przez to, że piloty nadają w innym systemie to bym tematu nie drążył. Nikt tego nie zrobił więc zakładam, że cos u mnie w ustawieniach jest coś nie tak.
    W koncu po to zadaje pytania by uzyskać jakąś satysfakcjonującą odpowiedź.
    I zdaje sobie sprawę, że getrc5 jest tylko do kodu rc5.

    Pytanie mam co do opcji w fuse bitach w programie mkAVR calculator. Zauważyłem, że wg. tego programu, jedna z opcji nie jest ustawioną tak jakby była ustawiona "fabrycznie". Czy w związku z tym mogę ją ustawić na "default value" ? Nie zablokuje tego procesora ustawiając ta wartość?
    Kod z książki a nie chce działać zgodnie z założeniami

    0
  • #26 28 Sty 2012 09:21
    mirekk36
    Poziom 42  

    mavi napisał:
    uparty nie jestem. Staram się tylko uzyskać odpowiedź skąd ciągle te same wartości przy odbieraniu sygnału z różnych pilotów.


    Uparty jesteś i to na maxa, tylko że najgorsze że nie w tą stronę co trzeba i sam sobie szkodzisz - marnując czas. Ok ja po raz ostatni już udzielę ci odpowiedzi i chyba rozumiem dlaczego inni przestali się wypowiadać w tym temacie.

    Masz Getrc5 w pętli, to nie jest funkcja blokująca, zatem obojętnie czy klikasz jakimś obojętnie jakim pilotem czy NIE !!! to ona zawsze się zakończy i zwróci błąd, czyli wartości command=255 oraz address=255. A że u ciebie pokazuje się command=127 to nie dziwne skoro robisz po drodze maskowanie najstarszego bitu command=command and &b01111111

    I nie ma to kurczę nic wspólnego z twoimi wyimaginowanymi różnymi pilotami i kodami które nadają. Zamiast próbować się troszkę dalej czegoś nauczyć, dowiedzieć i poczytać w internecie jak działa RC5 żeby zrozumieć chociaż w przybliżeniu na czym polega przesyłanie sygnałów z pilotów w podczerwieni, to ty wciąż zadajesz po takich odpowiedziach to samo pytanie:

    mavi napisał:

    Gdyby ktoś mi napisał, że te wartości to przez to, że piloty nadają w innym systemie to bym tematu nie drążył. Nikt tego nie zrobił więc zakładam, że cos u mnie w ustawieniach jest coś nie tak.


    Jak to nikt nie zrobił, wszyscy już to zrobili i wszyscy wiedzą, że wartości 255 oznaczają że procedura nie odebrała RC5 (no ale TYLKO dla ciebie to oznacza, że ok, nie odebrała RC5 ale jak się zachowa przy innym pilocie. To ci podpowiadają ludzie że tak samo, niezależnie czy użyjesz innego pilota czy żadnego. A ty znowu swoje ;) .... długo tak jeszcze dasz radę ?

    A tymczasem na samej elektrodzie masz setki jak nie tysiące przykładów jak korzystać z getrc5. Nawet w helpie bascoma masz warunek:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Który sprawdza czy aby na pewno odebrałeś sygnał z pilota RC5 i to jeszcze od TV bo adres = 0 i wtedy wyświetlą ci się tylko wtedy wartości gdy zostaną odebrane poprawne kody RC5.

    W innych kodach masz warunek typu:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dzięki czemu zareagujesz już tylko na prawidłowe wartości a nie na te oznaczające że Getrc5 nic nie odebrało. Więc nie opowiadaj takich rzeczy, że ktoś miał taki sam problem i nie został rozwiązany. Bo tylko ty jeden masz taki problem. I założę się, że w twoim kolejnym poście napiszesz.

    Cytat:
    ale ja wiem, że getrc5 jest tylko do pilotów rc5, za to chciałbym wiedzieć co oznaczają te same wartości 255 i 127 które wciąż mi się pojawiają i które badam oraz jak zareaguje to na innego pilota?

    No to już ręce opadają ;)

    mavi napisał:

    Pytanie mam co do opcji w fuse bitach w programie mkAVR calculator. Zauważyłem, że wg. tego programu, jedna z opcji nie jest ustawioną tak jakby była ustawiona "fabrycznie". Czy w związku z tym mogę ją ustawić na "default value" ? Nie zablokuje tego procesora ustawiając ta wartość?


    Te wartości akurat odpowiadają za obszar zdeklarowany dla bootloadera. A korzystasz z bootloadera ??? Podejrzewam że nie - więc ustawiona wartość tych fusebitów nie ma dla ciebie ŻADNEGO znaczenia, może być DOWOLNA i to w niczym nie zmieni tego jak ci działa obecny program i RC5. Aha - no i na pewno nie zablokujesz tym procka.

    Procka to ludzie sobie blokują ustawiając źle takie fusebity jak:

    1. CKSEL - odpowiedzialne za taktowanie
    2. SPIEN - odpowiedzialny za używanie SPI
    3. RSTDISBL - odpowiedzialny za używanie pinu RESET

    0
  • #27 28 Sty 2012 16:22
    mavi
    Poziom 19  

    Przeczytałem z uwagą kolegi post i muszę jednak stwierdzić, że z nas dwojga to nie ja tu jestem uparty. Wszystkie podpowiedzi jakie do tej pory otrzymałem odnośnie mojego problemu dotyczyły kwesti złego ustawienia fuse bitów lub kwarcu. Te rzeczy miałem dobre, więc drążyłem temat dalej.

    Zarzut, że nie czytam jest bezpodstawny bo na prawdę sporo poczytałem już w necie o tym i przede wszystkim uczę się z książki, w której był podany przykladowy program.
    Słowa tam nie ma o tym że jedyną wartością jaką otrzymam to będą te, które ja mam. Program miał normlanie działać. Nie wiem co w tym dziwnego, że próbuje dociec co jest nie tak. Więc zwyczajnie nie rozumiem zarzutów w stosunku do mnie.
    Pilotów nie mam wyimaginowanych bo po prostu użyłem tego co mam w domu. I znów: nie zakadam, że wszystkie nadają w rc5 bo wśród nich są tez piloty Sony i sprzętu niemarkowego.
    Kolega mnie tu wyraźnie krytykuje a przecież dopiero w ostanim poście tak na prawdę wytłumaczone jest coś więcej na temat problemu przez który powstał ten temat. A jakoś do tej pory inni forumowicze sugerowali inne powody specyficznego działania mojego programu.

    0
  • #28 28 Sty 2012 16:47
    mirekk36
    Poziom 42  

    mirekk36 napisał:
    Ale jak ty chcesz bascomowym Getrc5 skopiować jakieś inne kody??? Niestety nie rozumiesz podstaw działania tego i stąd takie kosmiczne pomysły. Zapamiętaj sobie - że Getrc5 obsłuży ci TYLKO I WYŁĄCZNIE kody z pilota RC5 i a ni mru mru. Każdy inny standard wymaga napisania własnej obsługi.


    Widzisz ten post dużo wyżej ? już tam ci odpowiadałem na pytanie. Nie krytykuję tylko tłumaczę. A ty od tego postu w dół wciąż o to samo pytałeś dalej.

    0