logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega644p][BASCOM] odbiór RC5, nie czyta adresu i komend

fliper_katrill 10 Sie 2011 23:54 3751 26
REKLAMA
  • #1 9813117
    fliper_katrill
    Poziom 20  
    Witam!
    Oto kod programu:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Cały czas pokazuje mi komendę 127 i adres 255
    Naczytałem się odnośnie błędu odczytu między innymi na elektrodzie,że to może wina kwarcu, ustawienia fusbitów, configuracji RC5 i wszystkiego próbowałem, jak na złość nie działa... (dla tego uC nie ma za dużo postów).
    Moje ustawienia są "fabryczne" zmieniłem tylko w fusach podział zegara na 8 na wyłączone stąd wnioskuję, że pracuje on na 8MHz (czyli jak w deklaracji "crystal")
    Układ pracuje na wewnętrznym RC, nic od nowości nie zmieniałem. Konfiguracja rc5 odbywa się jak w helpie na Timerze2. Nie mam pewności co do pilota, jeśli nie on to co innego nie działa?
    Z góry dziękuję za odpowiedzi.
    PS Ja spróbuję na innym pilocie
  • REKLAMA
  • #2 9813149
    piotrva
    VIP Zasłużony dla elektroda
    1. na razie zrób ten odczyt po ludzku - w pętli głównej programu - umieszczenie tego podprogramu odczytu w przerwaniu komplikuje dodatkowo sytuację...
    2. pilot wcale nie musi działać w standardzie RC5 (jest wieeele innych standardów...) - stąd jeśli nie działa polecam iść na bazar/giełdę/do elektronicznego/wejść na alle... i tam kupić pilot na 100% RC5 za jakieś 10-20zł (żaden wydatek ;-) )
    3. oprócz fusów i konfiguracji procka i pilota problem może leżeć w podłączeniu odbiornika do procesora itp. - jednym słowem daj schemat układu
  • #3 9813904
    fliper_katrill
    Poziom 20  
    Rzuciłbym schemacik, ale jestem w pracy i nie mam. Nie przyda się raczej na nic, ponieważ układ działał z atmega32 i odbierał. Przerzucenie się na atmega644p wymusiło zmianę timerów i tu jest zonk, co do pilota to jeszcze odkopię atmega32 zaprogramuję sprawdzę czy pilot do testów nadaje w rc5 i dam znać :) Bardzo Ci dziękuję za odpowiedź na pewno się niedługo odezwę :)
  • REKLAMA
  • #4 9816362
    fliper_katrill
    Poziom 20  
    no dobra, schemat był do bani ale poprawiłem na taki:

    [ATmega644p][BASCOM] odbiór RC5, nie czyta adresu i komend

    program jak z 1 postu, pilot RC5 firmy PHILIPS no i te nieszczęsne komenda 127 adres 255, ręce załamać....
  • #5 9816441
    piotrva
    VIP Zasłużony dla elektroda
    No i widzisz, na 100% masz dobre połączenia? Testowałeś na tym atmega32?
    1. Daj kod odbioru normalnie w pętli głównej - wyeliminujesz kilka potencjalnych przyczyn błędów - kod jak w pomocy BASCOMA.
    2. sprawdź czy masz poprawnie ustawiony kwarc migając diodą co sekundę z poleceniem wait 1 - jeśli nie będzie migać co sekundę to znaczy, że fusebity do poprawy.
  • #6 9816576
    fliper_katrill
    Poziom 20  
    Dzięki za zainteresowanie, teraz idę spać ale jutro na pewno napiszę co dały zmiany :) Bardzo Ci dziękuję.
  • #7 9817338
    fliper_katrill
    Poziom 20  
    Depresja....
    Kod: text
    Zaloguj się, aby zobaczyć kod


    pilot philips, dioda mruga mniej więcej co sekundę....

    Dodano po 1 [minuty]:

    Tak się zastanawiam czemu tu jest to:
    'The GETRC5 function uses TIMER0 and the TIMER0 interrupt.

    a w helpie że Timer=2
  • REKLAMA
  • #8 9817433
    snnaap
    Poziom 25  
    Zdaje mi się że przy tym programie wyłapanie sygnału z pilota będzie bardzo trudne a mianowicie usypiasz program na 1 sek (wait 1) a następnie przez ułamkowe części sekundy chcesz odebrać kod z pilota.

    Wrzuć na początek sobie do uK przykładowy program z bascoma

    Kod: text
    Zaloguj się, aby zobaczyć kod


    i sprawdź czy Ci to działa.
    Jeżeli będzie działała wtedy możesz sobie pogrzebać w programie dodać w odpowiedni sposób diodę itp
    Pamiętaj aby zaczynać od najprostszych programów bez udziwnień.

    Pozdrawiam
  • #9 9817546
    piotrva
    VIP Zasłużony dla elektroda
    Procesor m644p jest niezbyt dobrze obsługiwany w bascomie i nie działa na nim rc5 pod timerem0, ale mnie bez problemu chodzi...
    Oto kod z mojego kursu, na 100% działający pod m644p - jeśli nie masz rs232 to zmień polecenie print na odpowiednie polecenia LCD.
    
    $regfile = "m644pdef.dat"
    
    $crystal = 16000000
    
    $baud = 9600
    Config Rc5 = Pind.2 , Timer = 2
    Enable Interrupts
    Dim Address As Byte , Command As Byte , Togglebit As Byte
    Do
    Getrc5(address , Command)
    Togglebit = Command And &B10000000
    If Togglebit <> 0 Then Togglebit = 1
    Command = Command And &B01111111
    If Address <> 255 Then
    Print "Address: " ; Address ; " Command: " ; Command ; " Togglebit: " ; Togglebit
    End If
    Loop
    End
    
    
  • #10 9817754
    fliper_katrill
    Poziom 20  
    Kod: text
    Zaloguj się, aby zobaczyć kod


    nie działa, jest tylko kursor, ty masz kwarc 16mhz ja 8, może tutaj jest coś nie tak, może jednak fusebity?

    Dodano po 29 [minuty]:

    Tak sobie myślę, że włączyłem "niedzielenie przez 8" przy fusebitach w timerze. Nigdy tego nie włączałem tylko teraz 1 raz może to to?

    Dodano po 1 [minuty]:

    może piotrva pokażesz mi swoje ustawienia fusebitów? :)
  • REKLAMA
  • #13 9818586
    sp3ots
    Poziom 38  
    Witam !
    Na razie nie zmieniaj nic we Fuse bitach, pobaw się za to tą linią:
    $crystal = 8000000
    wpisz np:
    $crystal = 1000000
    To:
    Waitms 100
    też bym zmienił, na:
    Waitms 500

    Powodzenia życzę. Stefan
  • #14 9818729
    piotrva
    VIP Zasłużony dla elektroda
    Hmm, dziwne...
    A czy taki program:
    
    $crystal=8000000
    $regfile="m644pdef.dat"
    Config Pind.2 = Output
    Do
    Portd.2=0
    Wait 1
    Portd.2=1
    Wait 1
    Loop
    

    Powoduje miganie diody podpiętej do PD5 co sekundę?
    Co do moich ustawień to w tej chwili nie mam dostępu do sprzętu, ale jak widać korzystam z zewnętrznego kwarcu. Jak będę miał po weekendzie dostęp do sprzętu to wtedy ustawię fusebity tak jak Ty i sprawdzę. Tymczasem jeśli masz możliwość sprawdź to na starym procesorze. Być może to kolejny bug BASCOMA związany z tym procesorem... A jaka wersja BASCOM?
  • #15 9818972
    fliper_katrill
    Poziom 20  
    Bascom 1.11.9.8, powiem szczerze że również mogę przełączyć na zewnętrzny kwarc bo mam 12mhz ale bardzo się boje ją zablokować nieumiejętnym wpisaniem fusów. To moja ostatnia sztuka i zostanę bez na weekend :) Spróbuję obniżyć zegar i fusy dam defaultowe. Na pewno się odezwę jak to zrobię.

    PS Przepraszam piotrva na starym (atmega32) też nie idzie to moja pomyłka pomyliłem układy.
  • #17 9824183
    fliper_katrill
    Poziom 20  
    Witam po przerwie, program działa z diodą, oczywiście mam wyłączone dzielenie zegara przez 8 w fusach. Odbiór RC5 nadal nie działa. ;(

    Dodano po 1 [minuty]:

    Może dodam bo to może być ważne (już sam nie wiem) nazwa atmegi to dokładnie: ATmega644PA-PU
  • #18 9824240
    piotrva
    VIP Zasłużony dla elektroda
    Hmm, no to jest w takim razie atmega644pA
    
    $regfile = "m644pdef.dat"
    
    $crystal = 8000000
    
    $baud = 9600
    Config Rc5 = Pind.2 , Timer = 2
    Enable Interrupts
    Dim Address As Byte , Command As Byte , Togglebit As Byte
    Do
    Getrc5(address , Command)
    Togglebit = Command And &B10000000
    If Togglebit <> 0 Then Togglebit = 1
    Command = Command And &B01111111
    If Address <> 255 Then
    Print "Address: " ; Address ; " Command: " ; Command ; " Togglebit: " ; Togglebit
    End If
    Loop
    End
    

    No taki kod działa bez problemu na kwarcu 8MHz, fusy ustawione :
    FF D8 EF (EXT, HIGH, LOW)
    Twój procesor (werja PA) rożni się od mojego (P) tylko poborem prądu: http://www.atmel.com/dyn/resources/prod_documents/doc8190.pdf
    Wniosek - jeśli powyższy program nie działa to pokaż cały schemat płytki bo o ile masz na 100% fusy dobrze ustawione, a pin działa to jedyna przyczyna błędów jaką widzę to właśnie błędy w połączeniach.
  • #19 9824258
    fliper_katrill
    Poziom 20  
    Zrobię może tak... Twój program piotrva napisałeś że działa więc go wgrałem, jedyne czym się różnią nasze programy (zakładam że podłączenie jest właściwe) to fusebity o które Cię poproszę i fakt że masz zewnętrzny kwarc a ja nie. Proszę więc odezwij się po weekendzie jeśli wcześniej nie możesz i podeślij mi swoje fusebity jak wyglądają w bascomie a ja swoje ustawię identycznie. Idąc dalej tym krokiem będziemy mieć 2 tak samo skonfigurowane uC z tym samym programem i nie ma bata musi zadziałać :) Także czekam niecierpliwie....

    Dodano po 2 [minuty]:

    piotrva czy możesz mi napisać które to w bascomie fusy? nie znam się na tym w ogóle :)
  • #20 9824310
    piotrva
    VIP Zasłużony dla elektroda
    Wklep je tu:
    http://www.engbedded.com/fusecalc/
    A otrzymasz ustawienia:
    [ATmega644p][BASCOM] odbiór RC5, nie czyta adresu i komend
    Ja mimo wszystko nadal PROSZĘ O PEŁNY SCHEMAT bo wygląda mi to na błąd na poziomie połączeń...
    Bo poprzednie programy też działać powinny i być może błędzie zakładasz, że połączenia są poprawne...
    EDIT:
    Aha, dla programu z kwarcem 8MHz (wewnętrzny) fuski były:
    E2 D8 FF. czyli:
    [ATmega644p][BASCOM] odbiór RC5, nie czyta adresu i komend
  • #21 9824474
    fliper_katrill
    Poziom 20  
    wchodząc na tę stronę powinienem wybrać atmegę644PA czy to coś zmieni odnośnie ustawień tego CKSEL i SUT? Niech będzie że chcę aby pracowała na wewnętznym RC 8Mhz

    Dodano po 4 [minuty]:

    co do schematu jest taki jak z noty katalogowej

    Dodano po 13 [minuty]:

    a może tak przede wszystkim co ozaczają te dane 6CK + 65ms co to za dane i na co mają wpływ jak je dobierać?
  • #22 9825083
    piotrva
    VIP Zasłużony dla elektroda
    było w necie 100 razy, ale napiszę 101.:
    to jest parametr SUT, który określa ile cykli zegarowych i ile czasu (w tym przypadku 6000 cykli i 65ms) ma odczekać procesor po podaniu zasilania, zanim się uruchomi (chodzi o to, aby jeśli napięcie narasta wolno zastartował wtedy, gdy napięcie będzie stabilne).
    Jeśli byłby taki jak z noty to mój program + sprawny procek + schemat z noty = działający układ.
    jak pisałem wersja P i PA równią się tylko poborem prądu - fusebity takie same, co możesz sprawdzić...
  • #23 9833132
    fliper_katrill
    Poziom 20  
    Troszkę mnie nie było, ale dzisiaj po różnych perturbacjach chcę napisać, że działa !! :) Nie fusebity, nie połączenia, nie program i nie pilot.... a w zasadzie NIE TEN PILOT. Zdziwicie się pewnie, potwierdzam, że ten pilot Philipsa najwidoczniej nie nadawał w RC5 (sprzęt na nim działa). Jak więc rozwiązałem zagadkę? Ano pilotem uniwersalnym. Pilot ten też nie działał z początku, ale przełączając go w tryb TV (ma jeszcze VCR, SAT, CAB), komendy i adresy są pięknie nadawane :). Co dobre, pilot posiada diodę LED informującą o nadawaniu, stąd wiedziałem, że to robi. Wniosek nie wszystko złoto co się świeci, dziwne... no ale takie są fakty.

    Dodano po 3 [minuty]:

    PS działa i na ATmega32 i ATmega644p
  • Pomocny post
    #24 9833362
    piotrva
    VIP Zasłużony dla elektroda
    ;-)
    Cóż, a nie mówiłem...
    Co do sprawdzania czy pilot działa (tzn. czy cokolwiek się dzieje) wystarczy jakakolwiek kamera czy byle jaki aparat. Wystarczy tylko skierować pilot na takie urządzenie i zobaczymy w aparacie normalnie tak jakby dioda normalnie świeciła, gdyż matryce w aparatach są wrażliwe na światło IR ;-)
    PS. pilot mógł nadawać np. w RC6, skoro to Philips lub innym standardzie Philipsa: http://www.sbprojects.com/knowledge/ir/rc5.php
  • #25 9833540
    fliper_katrill
    Poziom 20  
    Dziękuję Piotrze za pomoc. Chciałbym Cię jeszcze wykorzystać, a w zasadzie Twoją wiedzę. Muszę skonfigurować 3 timery:
    1. do przerwań dla RC5 (tu musi być niby timer=2)
    2. timer do pwm 1 urządzenia
    3. timer do pwm 2 urządzenia

    na tej właśnie Atmedze644p. Podpowiedz mi proszę jak potem wywołać wartość (na starszych atmegach Ocr=xxx itp.) dla tych timerów no i jak wspomniałem jak je skonfigurować? Piny to już sobie znajdę :)
  • #26 9833928
    piotrva
    VIP Zasłużony dla elektroda
    Zajrzyj do helpa BASCOM - wszystko jest tam opisane - konfiguracja timerów i zadawanie wartości PWM.
  • #27 9850676
    fliper_katrill
    Poziom 20  
    Witam wszystkich ponownie!
    Czytałem o konfiguracjach timerów, coś tam liznąłem :)
    Mam problem bo timer1 chciałbym wykorzystać jako PWM, ale miałby on stopniowo rozjaśniać diodę utrzymywać ten stan (do tego momentu proste..) a potem ŚCIEMNIĆ. Problem jest w tym czy to da się na 1 pinie Timera1 (konkretniej mam podpięte pod Pwm1b). Helpy nic o tym nie mówią, a ja się obawiam , że nic z tego.... :(
REKLAMA