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

[ATtiny2313][Bascom] Rc5 - Częstotliwość

xamrex 08 Sty 2011 22:19 2120 4
  • #1 8979146
    xamrex
    Poziom 28  
    Witam,

    Otóż wykorzystuję licznik Timer0, do liczenia (aby wygenerować liczbę pseudolosową NIE wykorzystuję do przerwań!)
    Więc wydaje mi się, że może być wykorzystywany razem z odbiorem RC5
    Jak naciśnie się przycisk na pilocie, to
    ___rseed = Timer0
    Czyli podstawa generatora RDM, jest taka jak licznik,po prostu wygeneruje mi się l za każdym razem (bo nikt nie naciska w tym samym momencie tego przycisku) losowa liczba.

    Mam teraz dziwny problem
    Mam Attiny2313 pracujący na wewnętrznym oscylatorze 8MHz, który może być dzielony przez 8,
    Więc raz jest 1Mhz, a raz mogę ustawić 8Mhz.

    Teraz gdy mam taki kod:

    $regfile = "attiny2313.dat"
    $crystal = 1000000
    Config Lcd = 16 * 2
    
    
    Rem Konfiguracja Lcd
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portd.1 , Rs = Portd.0
    
    Config Rc5 = Pind.2
    Enable Interrupts
                                            'tu zmień
    Config Timer0 = Timer , Prescale = 1
    
    Rem Ustawienie Zmiennych
    Dim Address As Byte , Command As Byte ,
    Dim ___rseed As Word
    Dim Wylosowana As Byte
    Dim Ok As Byte
    
    Do
    Getrc5(address , Command)
    Command = Command And &B01111111
    Cls
    Lcd Command
    Lowerline
    Loop
    
    End
    

    To mogę odbierać Wszystkie przyciski z klawiatury,
    Natomiast gdy przestawię
    Config Timer0 = Timer , Prescale = 1 na
    Config Timer0 = Timer , Prescale = 8 lub 64 lub 256 lub 1024

    To działa mi większość klawiszy (tak z 90%)
    ale nie działa mi przycisk OK, i przewijanie do tyłu (używam pilota do magnetowidu)


    Gdy kwarc ustawię na 8Mhz
    To aby działały wszystkie przyciski muszę ustawić
    Config Timer0 = Timer , Prescale = 8 a nie działają wartości takie jak:
    Config Timer0 = Timer , Prescale = 1 lub 64 lub 256 lub 1024


    Dlaczego tak się dzieje??
  • #2 8979297
    mirekk36
    Poziom 42  
    To jest związane wprost z dzieleniem częstotliwości taktowania timera na potrzeby RC5. A że sam jeszcze na razie nie opanowałeś w ogóle tego tematu to i próbujesz tylko tak w ciemno zmieniać te wartości bez wiedzy jak to faktycznie działa. Stąd takie dziwne zachowania dla ciebie wynikają.
  • #3 8979945
    Konto nie istnieje
    Poziom 1  
  • #4 8980396
    xamrex
    Poziom 28  
    Tutaj mam tekst z Helpa Bascoma
    W czasie działania funkcji używany jest licznik TIMER0 i związane z nim przerwanie. Licznik ten jest służy do generacji wymaganych opóźnień podczas próbkowania sygnału. TIMER0 może być dalej używany przez program, lecz należy się liczyć z wynikłymi opóźnieniami, gdy wykonywana będzie funkcja GETRC5(). Jest tylko jeden warunek: przerwania licznika TIMER0 nie mogą być używane.
    
    

    Ja NIE używam przerwań, więc myślę, że wszystko powinno działać.
  • Pomocny post
    #5 8980429
    mirekk36
    Poziom 42  
    No toż pewnie, że możesz używać tzn odczytywać wartości z latającego licznika. Ale jeśli zaczynasz się już nim bawić w ten sposób, że chcesz go resetować w locie (czyli zapisywać), że chcesz zmieniać preskaler na inne wartości niż ustawiony został za pomocą polecenia ConfigRC5 (a został tylko ty tego nie widzisz) to nie dziw się, że potem coś ci nie działa dekodowanie RC5 ;) ..... bo to jest troszkę tak jakbyś wyszarpnął sobie dywanik spod nóg a potem się dziwił dlaczego się przewróciłeś.

    Tyle że efekt działania wyszarpnięcia dywanika spod własnych nóg znasz a zasady działania timerów od podstaw nie - i tu jest ta różnica.

    A w tym helpie niestety nie wyrażono się doś jasno mówiąc że wystarczy tylko nie używać przerwań. Przyjęto bowiem domyślnie jako "oczywistą oczywistość", że ktoś ma już podstawową wiedzę o timerach sprzętowych na tyle że będzie wiedział iż resetowanie timera może zakłócić działanie procedur, które w oparciu o niego działają a podobnie ze zmianą preksalera ;)
REKLAMA