Skocz do zawartości

Błąd w programie, RC5 bascom


Pomocna odpowiedź

Napisano

Tak jak w temacie, napisałem prosty program na atmege32 i nie wiem co w nim nie tak, problem polega na tym, że na lcd wyświetla się cały czas (bez względu na to czy naciskam coś na pilocie czy nie) adres = 255 , komenda = 255.

$regfile = "m32def.dat"
$crystal = 11059200

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcdmode = Port
Cursor Off Noblink

Config Rc5 = Pind.6
Enable Interrupts
Dim Address As Byte , Command As Byte


Do
Getrc5(address , Command)

If Address = 0 Then
Command = Command And &B01111111
End If

Cls
Lcd "ADRES :" ; Address
Lowerline
Lcd "KOMENDA :" ; Command

Waitms 500

Loop
End

Czemu mnie nie dziwi, że to nie działa ?

Bo BASCOM tak ma. Komenda GETRC5, była tworzona do starszych ATMeg, i jeżeli jakiś procesor nie jest z nimi zgodny budową Timerów, i rejestrami SFR, to się wysypie. Inna sprawa, że odbiornik musi być podpięty do dobrego przerwania.

CONFIG RC5 - pozwala to niby zmienić, ale nie daję głowy że zawsze dobrze zadziała.

Ważny też jest Timer 0.

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.

Ostatecznie pilot którego używasz, nie nadaje w RC5, tez tak miałem 😉. To nie jest wbrew pozorom popularny standard w pilotach.

  • 2 tygodnie później...

Uruchamiasz to na jakimś zestawie czy samemu podłączyłeś czujnik? Może masz źle podłączonego TSOPa, są dwie wersje z zamienionymi dwoma pinami - przynajmniej tak było w tej mniejszej wersji czujników.

  • 5 miesiące później...

Bascom czyta komendę getrc5 bardzo dobrze jest po prostu błąd w programie.

wystarczy dodać

if command <>255 then..........

i tyle

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...