Witam,
usiluje napisac kawalek kodu dla atmegi16 wysylajacy zliczany czas w ms do pc przez usb, w zasadzie wsio mam napisane oprocz jednego bardzo drazniacego mnie fragmentu, z ktorym nie moge sobie poradzic.
Zliczam czas w przerwaniu w zmiennej typu long. Natomiast przesyl leci bajtami, wiec musze to jakos po ludzku zrzutowac. Strasznie sie z tym mecze i szczerze mowiac juz mi rece opadaja
Czas mam na 3 bajtach, wiecej nie potrzebuje, w zasadzie to czy na 3 czy na 4rech to nie ma roznicy bo i tak mi to nie chce zadzialac
Mam cos takiego
Dim Wiadomosc_wysylana_tab(10) As Byte At &H0060
Dim Czas As Long
Dim Wsk As Word
Dim Temp_long as Long
Dim Temp_byt as Byte
Wsk = &H60
Temp_long = Czas
Temp_byt = Temp_long And &HFF 'wyluskujemy najmlodszy bajt czasu
Out Wsk , Temp_byt
Incr Wsk
Temp_long = Czas
Shift Temp_long , Right , 8
Temp_byt = Temp_long And &HFF 'wyluskujemy 2gi bajt czasu
Out Wsk , Temp_byt
Incr Wsk
Temp_long = Czas
Shift Temp_long , Right , 16
Temp_byt = Temp_long And &HFF 'wyluskujemy 3ci bajt czasu
Out Wsk , Temp_byt
Nastepnie wysylam te 3 bajty w ramce do kompa i niestety nic w nich nie ma. Jesli zamiast powyzeszego przypisania w kolejnych krokach wrzuce np
out wsk, 65
to wszystko jest OK, ramka dochodzi i jest czytelna, wnioskuje zatem, ze cos jest nie tak albo z odczytem z pamieci albo z rzutowaniem.
W ukladzie nie mam LCD, wiec nie mam jak tego sobie sprawdzic, a na diodzie troszke ciezko
Czy moze ktos zna odpowiedz na moje pytanie, jak to zrobic, zeby dzialalo?
Z gory bardzo dziekuje
pzdr
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięout/inp => czytanie/zapis do pamieci i long=>byte pomo
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Nie prościej w ten sposób:
Kod: Zaznacz cały
Dim Wiadomosc_wysylana_tab(10) As Byte
Dim Czas As Long
Dim Wsk As Word
Dim Temp_long as Long
Dim Temp_byt as Byte
Czas = 1000 ' tylko do testów
Temp_long = Czas
Temp_byt = Temp_long And &HFF 'wyluskujemy najmlodszy bajt czasu
Wiadomosc_wysylana_tab(1) = Temp_byt
Shift Temp_long , Right , 8
Temp_byt = Temp_long And &HFF 'wyluskujemy 2gi bajt czasu
Wiadomosc_wysylana_tab(2) = Temp_byt
Shift Temp_long , Right , 16
Temp_byt = Temp_long And &HFF 'wyluskujemy 3ci bajt czasu
Wiadomosc_wysylana_tab(3) = Temp_byt
End
Dzieki za podpowiedz, ale nie moge tego zrobic tak statycznie jak to napisales powyzej. Musze to miec przez wskaznik bo w tej strukturze beda jeszcze inne dane i nie moge miec tego na sztywno.
Rozwiazalem to inaczej, czas zrobilem jako tablice bajtow, napisalem funkcje do liczenia czasu w takeij tablicy:
Inkrementuj_licznik_1ms:
Incr Czas_tab(1)
If Czas_tab(1) = &HFF Then
Incr Czas_tab(2)
Czas_tab(1) = 0
End If
If Czas_tab(2) = &HFF Then
Incr Czas_tab(3)
Czas_tab(2) = 0
End If
If Czas_tab(3) = &HFF Then
Czas_tab(3) = 0
End If
Return
a wpisywanie w pamiec zmienilem tak:
Wsk = &H60
Out Wsk , Czas_tab(1) 'najmlodszy bajt z czasem
Incr Wsk
Out Wsk , Czas_tab(2) 'srodkowy bajt z czasem
Incr Wsk
Out Wsk , Czas_tab(3) 'najstarszy bajt z czasem
no i dziala, dzieki za zainteresowanie, wyszlo na to, ze musialem sie przespac z tym problemem i rano juz wiedzialem jak to zrobic, najwazniejsze, ze dziala
pzdr, szpulek
Rozwiazalem to inaczej, czas zrobilem jako tablice bajtow, napisalem funkcje do liczenia czasu w takeij tablicy:
Inkrementuj_licznik_1ms:
Incr Czas_tab(1)
If Czas_tab(1) = &HFF Then
Incr Czas_tab(2)
Czas_tab(1) = 0
End If
If Czas_tab(2) = &HFF Then
Incr Czas_tab(3)
Czas_tab(2) = 0
End If
If Czas_tab(3) = &HFF Then
Czas_tab(3) = 0
End If
Return
a wpisywanie w pamiec zmienilem tak:
Wsk = &H60
Out Wsk , Czas_tab(1) 'najmlodszy bajt z czasem
Incr Wsk
Out Wsk , Czas_tab(2) 'srodkowy bajt z czasem
Incr Wsk
Out Wsk , Czas_tab(3) 'najstarszy bajt z czasem
no i dziala, dzieki za zainteresowanie, wyszlo na to, ze musialem sie przespac z tym problemem i rano juz wiedzialem jak to zrobic, najwazniejsze, ze dziala
pzdr, szpulek
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 32 gości