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

szpulek
-
-
Posty:15
Rejestracja:6 maja 2004, o 15:55
Lokalizacja:Gliwice
Kontaktowanie:
out/inp => czytanie/zapis do pamieci i long=>byte pomo

Postautor: szpulek » 3 maja 2005, o 01:17

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

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 3 maja 2005, o 19:02

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

szpulek
-
-
Posty:15
Rejestracja:6 maja 2004, o 15:55
Lokalizacja:Gliwice
Kontaktowanie:

Postautor: szpulek » 3 maja 2005, o 19:42

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

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 4 maja 2005, o 13:45

To zastosuj zmienną, która będzie wskaźnikiem w strukturze danych. Przypisanie będzie wtedy:

tablica(wsk) = cośtam

szpulek
-
-
Posty:15
Rejestracja:6 maja 2004, o 15:55
Lokalizacja:Gliwice
Kontaktowanie:

Postautor: szpulek » 5 maja 2005, o 13:45

znow sie zgodze, ale odwolujac sie w ten sposob, nigdy nie bede wiedzial ile mam elementow w tablicy..
pisze juz teraz czysto hipotetycznie, gdyz program skonczylem, wszystko dziala i szef jest zadowolony :)
pzdr

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości