AS5311 Bascom
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: AS5311 Bascom
Ok jutro postaram się podpiąć oscyloskop do linii CLK i DO i zobaczę czy AS5311 wysyła jakieś sygnały do Atmegi32, na razie dzięki Koledzy mam nadzieję że pomożecie mi opanować ten czujnik, liczę na waszą pomoc.
pozdrawiam Jacek.
pozdrawiam Jacek.
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: AS5311 Bascom
Ogólnie to lepiej jak nawet lokalne zmienne mają inne nazwy niż globalne. Jak funkcja zwraca cos co jest globalną to naprawdę trzeba wiedzieć co sie robi bo to jest faktyczny skrót, ale pomyłka będzie kosztować...
Byval i Byref mam nadzieję że opanowane?
nazwy lokalnych w Bascom powinny sie róznić od globalnych. To z nów nie aż tak trudne.
Byval i Byref mam nadzieję że opanowane?
nazwy lokalnych w Bascom powinny sie róznić od globalnych. To z nów nie aż tak trudne.
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: AS5311 Bascom
Bartku, zobaczę czy nie mam babola sprzętowego i czy AS odzywa się do Atmegi.
pozdrawiam.
pozdrawiam.
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: AS5311 Bascom
Witam, dzisiaj podłączyłem oscyloskop do AS5311 i nagrałem filmik https://www.youtube.com/watch?v=TIQGW-Phhk0
na filmie widać że kanały A i B działają, oraz działa PWM niestety na lcd nic się nie zmienia jest to oryginalny program z tej publikacji którą znalazł w necie Paweł Pikczu.
Jedynie co zmieniłem to częstotliwość rezonatora z 10MHz na 16MHz.
Proszę o podpowiedź jak napisać sub rutynę aby działał odczyt z interfejsu szeregowego.
pozdrawiam Jacek.
na filmie widać że kanały A i B działają, oraz działa PWM niestety na lcd nic się nie zmienia jest to oryginalny program z tej publikacji którą znalazł w necie Paweł Pikczu.
Jedynie co zmieniłem to częstotliwość rezonatora z 10MHz na 16MHz.
Proszę o podpowiedź jak napisać sub rutynę aby działał odczyt z interfejsu szeregowego.
pozdrawiam Jacek.
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: AS5311 Bascom
Napiszę Tobie, że przez nawał pracy nie było wcześniej czasu na to spojrzeć a to się wydaje bajecznie proste.
To jest enkoder z wyjściem 12 bitowym. Ten Czech to robił w tym kodzie na piechotę. Podawał jeden sygnał zegarowy i sprawdzał co jest na wyjściu Data. Jeśli 1 to dodawał do zmiennej 1. W kolejnym kroku mnożył wszystko *2 i znowu po jednym cyklu zegara sprawdzał Data i tak dwanaście razy. Słaba implementacja
Nie dość, że zamiast *2 mógł użyć Shift Zmienna Left 1 to tak naprawdę tutaj można użyć Shiftin Zmienna_Word , 18
Zerknę do tego.
To jest enkoder z wyjściem 12 bitowym. Ten Czech to robił w tym kodzie na piechotę. Podawał jeden sygnał zegarowy i sprawdzał co jest na wyjściu Data. Jeśli 1 to dodawał do zmiennej 1. W kolejnym kroku mnożył wszystko *2 i znowu po jednym cyklu zegara sprawdzał Data i tak dwanaście razy. Słaba implementacja
Nie dość, że zamiast *2 mógł użyć Shift Zmienna Left 1 to tak naprawdę tutaj można użyć Shiftin Zmienna_Word , 18
Zerknę do tego.
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: AS5311 Bascom
Witam - ok jasne dziękuje.
pozdrawiam Jacek.
pozdrawiam Jacek.
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: AS5311 Bascom
Zacząłem to przerabiać i znalazłem jeden potencjalny błąd.
Tam w pętli głównej jest zdefiniowany sposób resetowania całego wskazania. Reaguje na PINC.7
Ty nigdzie PINC.7 nie konfigurujesz i tutaj jeśli pojawi się stan wysoki to resetuje wskazania.
Skonfigurowałem ten pin i podciągnąłem do plusa a w pętli reaguję na stan niski.
Sprawdź bo może to zadziała i nie będę dalej nic kombinował. Wiesz... dalej nie mam za dużo czasu
Normalnie rozwiązałbym to przez Shiftin do zmiennej Dword.
W tym czasie jak Ty będziesz sprawdzał to ja zdążę machnąć coś innego.
Tam w pętli głównej jest zdefiniowany sposób resetowania całego wskazania. Reaguje na PINC.7
Ty nigdzie PINC.7 nie konfigurujesz i tutaj jeśli pojawi się stan wysoki to resetuje wskazania.
Skonfigurowałem ten pin i podciągnąłem do plusa a w pętli reaguję na stan niski.
Sprawdź bo może to zadziała i nie będę dalej nic kombinował. Wiesz... dalej nie mam za dużo czasu
Normalnie rozwiązałbym to przez Shiftin do zmiennej Dword.
W tym czasie jak Ty będziesz sprawdzał to ja zdążę machnąć coś innego.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m32adef.dat"
- $crystal = 1600000
- $hwstack = 32
- $swstack=8
- $framesize = 64
- $projecttime = 25
- Config Submode = New
- Config Lcd = 16x4
- Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3
- Data_out Alias Pina.0 : Config Data_out = Input : Set Porta.0 'DO + pullup
- Cs Alias Porta.1 : Config Cs = Output : Set Cs 'chip select Hi=Inactive
- Clk Alias Porta.2 : Config Clk = Output : Set Clk 'clock output readed when clk is low
- Pin_reset Alias Pinc.7 : Portc.7 = 1 'pullup
- Declare Sub Poloha(byref P As Integer)
- Declare Sub Determinuj_polohu(p_old As Integer , P_new As Integer , Sm As Integer , Pp As Integer)
- Declare Sub Cti_data(byref Pozice As Integer)
- Declare Sub Ssi_init
- Declare Sub Ssi_close
- Dim Pozice As Integer
- 'Dim Poloha As Long
- Dim Vzd_pom As Long
- Dim Vzdalenost As Long
- Dim Mm2 As Integer
- Dim Draha As String * 16
- Dim Pom_str As String * 16
- Dim Pom_s As Single
- Dim Pozice_old As Integer
- Dim Pozice_new As Integer
- Dim Pozice_start As Integer
- Dim Smer As Integer
- Dim Priznak As Integer
- Dim Fix_prechodu As Bit
- Dim Pocitadlo As Integer
- Dim Ocf As Byte
- Dim Cof As Byte
- Dim Lin As Byte
- Dim Mag_inc As Byte
- Dim Mag_dec As Byte
- Dim Parita As Byte
- Dim Poms As String * 16
- Call Poloha(pozice_start)
- Pozice_old = Pozice_start
- Do
- If Pin_reset = 0 Then
- 'określ pozycję wyjściową'
- Mm2 = 0
- Call Poloha(pozice_start) 'Poloha--> Pozycja
- Pozice_old = Pozice_start
- End If
- Call Poloha(pozice_new)
- Call Determinuj_polohu(pozice_old , Pozice_new , Smer , Priznak)
- If Smer = 0 Then 'Smer--> Kierunek
- If Priznak = 0 Then
- 'Odległość rośnie w ciągu 2 m
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- Else
- 'Odległość rośnie ponad 2mm
- Incr Mm2
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- End If
- Else
- If Priznak = 0 Then
- 'Odległość spada w granicach 2mm
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- Else
- 'Odległość spada ponad 2mm
- Decr Mm2
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- End If
- End If
- Waitus 20
- 'wartość pojawia się na wyświetlaczu co 20 cykli
- Incr Pocitadlo
- If Pocitadlo > 50 Then
- Pocitadlo = 0
- Cls : Lcd Pozice_new
- Lowerline
- Pom_s = Vzdalenost / 2048
- Lcd Fusing(pom_s , "#.###")
- End If
- Pozice_old = Pozice_new
- Loop
- End
- ' ****************************
- 'určí směr pohybu a překrocění hranice 0 /-/ 4095-->określa kierunek ruchu i przekroczenie granicy 0 / - / 4095
- ' ****************************
- Sub Determinuj_polohu(p_old As Integer , P_new As Integer , Sm As Integer , Pp As Integer)
- 'Sm ... směr
- ' 0 = vzdaluji se od reference-->Odchodzę od referencji
- ' 1 = přibližuji se-->zbliżam się
- 'Pp ... příznak přechodu přes 4095-->Pp ... przekraczanie flagi ponad 4095
- ' 0 = nepřekročil jsem 4095-->nie przekroczyłem 4095
- ' 1 = překročil jsem přes 4095-->przekroczyłem 4095
- Dim Delta As Single
- Dim Sgn_delta As Single
- Dim Abs_delta As Single
- Delta = P_new - P_old
- Abs_delta = Abs(delta)
- Sgn_delta = Sgn(delta)
- Select Case Delta
- 'delta je kladné nebo nula-->delta jest dodatnia lub zero
- Case Is >= 0
- If Abs_delta < 1000 Then
- 'vzdálenost roste a jsem v rozsahu 2 mm-->odległość rośnie i jestem w zakresie 2 mm
- Sm = 0 : Pp = 0
- Else
- 'vzdálenost klesá a překročil jsem 2 mm-->odległość maleje i przekroczyłem 2 mm
- Sm = 1 : Pp = 1
- End If
- 'delta je záporné-->delta jest ujemna
- Case Else
- If Abs_delta < 1000 Then
- 'vzdálenost klesá a jsem v rozsahu 2 mm-->odległość maleje i jestem w zakresie 2 mm
- Sm = 1 : Pp = 0
- Else
- 'vzdálenost klesá a překročil jsem 2 mm-->odległość maleje i przekroczyłem 2 mm
- Sm = 0 : Pp = 1
- End If
- End Select
- End Sub
- ' ****************************
- 'vyčte polohu z čipu-->odczytaj pozycję z chipa
- ' ****************************
- Sub Poloha(byref P As Integer)
- 'inicializace čipu-->inicjalizacja chipa
- Ssi_init
- 'čtení hodnoty-->wartość odczytu
- Call Cti_data(p)
- 'ukončení komunikace s čipem-->zakończenie komunikacji z chipem
- Ssi_close
- End Sub
- ' ****************************
- 'Přečte data z měřiče, bit po bitu-->Odczytuje dane z licznika, bit po bicie
- ' ****************************
- Sub Cti_data(byref Pozice As Integer)
- Dim Pom As Byte
- 'Pin 2 portu A jsou hodiny-->'Pin 2 portu A to zegar
- 'Proměnná Pozice vrací hodnotu-->Zmienna Pozice zwraca wartość
- Pozice = 0
- 'D11
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D10
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D9
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D8
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D7
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D6
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D5
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D4
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D3
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D2
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D1
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'D0
- Pozice = Pozice * 2
- Reset Porta.2
- If Pinc.0 = 1 Then
- Pozice = Pozice + 1
- End If
- Set Porta.2
- 'čtení stavových bitů-->odczytaj bity statusu
- 'OCF
- 'Waitus 10
- Reset Porta.2
- Ocf = Pinc.0
- Set Porta.2
- 'COF
- 'Waitus 10
- Reset Porta.2
- Cof = Pinc.0
- Set Porta.2
- 'LIN
- 'Waitus 10
- Reset Porta.2
- Lin = Pinc.0
- Set Porta.2
- 'Mag_INC
- 'Waitus 10
- Reset Porta.2
- Mag_inc = Pinc.0
- Set Porta.2
- 'Mag_DEC
- 'Waitus 10
- Reset Porta.2
- Mag_dec = Pinc.0
- End Sub
- ' ****************************
- ' ****************************
- Sub Ssi_init
- 'A.1 CS ¨¨¨¨¨______
- 'A.2 CLK ¨¨¨¨¨¨¨__¨¨
- ' us 2 1 1 1
- 'PortA.2 CLK ... clock
- Set Porta.2
- 'PortA.1 CS ... chip select
- Set Porta.1
- Waitus 2
- Reset Porta.1
- Waitus 1
- Reset Porta.2
- Waitus 1
- Set Porta.2
- Waitus 1
- End Sub
- ' ****************************
- ' ****************************
- Sub Ssi_close
- 'A.1 CS ___¨¨¨¨
- 'A.2 CLK _¨¨¨¨¨¨
- ' us 1 2
- 'čtu ^
- 'PortA.2 CLK ... clock
- 'PortA.1 CS ... chip select
- 'Parita
- Set Porta.2
- Parita = Pinc.0
- Waitus 1
- Set Porta.1
- Waitus 2
- End Sub
- ' ****************************
- niveasoft
- Posty: 1216
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: AS5311 Bascom
Jeszcze coś rzuciło mi się w oczy. Data_out to niby Pina.0 a czytany był Pinc.0
Zmieniłem w kodzie wszystko na Aliasy i tak proponuję robić bo łatwiej uniknąć błędów.
Teraz pin danych to PINA.0. Jak chcesz inny to zmień tylko Alias u góry.
Zmieniłem też Pozice = Pozice * 2 na Shift Pozice , Left , 1
BTW. Ten czeski kod to taki mały potworek Ahahahahaha
Zmieniłem w kodzie wszystko na Aliasy i tak proponuję robić bo łatwiej uniknąć błędów.
Teraz pin danych to PINA.0. Jak chcesz inny to zmień tylko Alias u góry.
Zmieniłem też Pozice = Pozice * 2 na Shift Pozice , Left , 1
BTW. Ten czeski kod to taki mały potworek Ahahahahaha
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m32adef.dat"
- $crystal = 1600000
- $hwstack = 32
- $swstack=8
- $framesize = 64
- $projecttime = 35
- Config Submode = New
- Config Lcd = 16x4
- Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3
- Data_out Alias Pina.0 : Config Data_out = Input : Set Porta.0 'DO + pullup
- Cs Alias Porta.1 : Config Cs = Output : Set Cs 'chip select Hi=Inactive
- Clk Alias Porta.2 : Config Clk = Output : Set Clk 'clock output readed when clk is low
- Pin_reset Alias Pinc.7 : Portc.7 = 1 'pullup
- Declare Sub Poloha(byref P As Integer)
- Declare Sub Determinuj_polohu(p_old As Integer , P_new As Integer , Sm As Integer , Pp As Integer)
- Declare Sub Cti_data(byref Pozice As Integer)
- Declare Sub Ssi_init
- Declare Sub Ssi_close
- Dim Pozice As Integer
- 'Dim Poloha As Long
- Dim Vzd_pom As Long
- Dim Vzdalenost As Long
- Dim Mm2 As Integer
- Dim Draha As String * 16
- Dim Pom_str As String * 16
- Dim Pom_s As Single
- Dim Pozice_old As Integer
- Dim Pozice_new As Integer
- Dim Pozice_start As Integer
- Dim Smer As Integer
- Dim Priznak As Integer
- Dim Fix_prechodu As Bit
- Dim Pocitadlo As Integer
- Dim Ocf As Byte
- Dim Cof As Byte
- Dim Lin As Byte
- Dim Mag_inc As Byte
- Dim Mag_dec As Byte
- Dim Parita As Byte
- Dim Poms As String * 16
- Call Poloha(pozice_start)
- Pozice_old = Pozice_start
- Do
- If Pin_reset = 0 Then
- 'określ pozycję wyjściową'
- Mm2 = 0
- Call Poloha(pozice_start) 'Poloha--> Pozycja
- Pozice_old = Pozice_start
- End If
- Call Poloha(pozice_new)
- Call Determinuj_polohu(pozice_old , Pozice_new , Smer , Priznak)
- If Smer = 0 Then 'Smer--> Kierunek
- If Priznak = 0 Then
- 'Odległość rośnie w ciągu 2 m
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- Else
- 'Odległość rośnie ponad 2mm
- Incr Mm2
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- End If
- Else
- If Priznak = 0 Then
- 'Odległość spada w granicach 2mm
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- Else
- 'Odległość spada ponad 2mm
- Decr Mm2
- Vzd_pom = Mm2 * 4096 : Vzd_pom = Vzd_pom - Pozice_start
- Vzdalenost = Vzd_pom + Pozice_new
- End If
- End If
- Waitus 20
- 'wartość pojawia się na wyświetlaczu co 20 cykli
- Incr Pocitadlo
- If Pocitadlo > 50 Then
- Pocitadlo = 0
- Cls : Lcd Pozice_new
- Lowerline
- Pom_s = Vzdalenost / 2048
- Lcd Fusing(pom_s , "#.###")
- End If
- Pozice_old = Pozice_new
- Loop
- End
- ' ****************************
- 'určí směr pohybu a překrocění hranice 0 /-/ 4095-->określa kierunek ruchu i przekroczenie granicy 0 / - / 4095
- ' ****************************
- Sub Determinuj_polohu(p_old As Integer , P_new As Integer , Sm As Integer , Pp As Integer)
- 'Sm ... směr
- ' 0 = vzdaluji se od reference-->Odchodzę od referencji
- ' 1 = přibližuji se-->zbliżam się
- 'Pp ... příznak přechodu přes 4095-->Pp ... przekraczanie flagi ponad 4095
- ' 0 = nepřekročil jsem 4095-->nie przekroczyłem 4095
- ' 1 = překročil jsem přes 4095-->przekroczyłem 4095
- Dim Delta As Single
- Dim Sgn_delta As Single
- Dim Abs_delta As Single
- Delta = P_new - P_old
- Abs_delta = Abs(delta)
- Sgn_delta = Sgn(delta)
- Select Case Delta
- 'delta je kladné nebo nula-->delta jest dodatnia lub zero
- Case Is >= 0
- If Abs_delta < 1000 Then
- 'vzdálenost roste a jsem v rozsahu 2 mm-->odległość rośnie i jestem w zakresie 2 mm
- Sm = 0 : Pp = 0
- Else
- 'vzdálenost klesá a překročil jsem 2 mm-->odległość maleje i przekroczyłem 2 mm
- Sm = 1 : Pp = 1
- End If
- 'delta je záporné-->delta jest ujemna
- Case Else
- If Abs_delta < 1000 Then
- 'vzdálenost klesá a jsem v rozsahu 2 mm-->odległość maleje i jestem w zakresie 2 mm
- Sm = 1 : Pp = 0
- Else
- 'vzdálenost klesá a překročil jsem 2 mm-->odległość maleje i przekroczyłem 2 mm
- Sm = 0 : Pp = 1
- End If
- End Select
- End Sub
- ' ****************************
- 'vyčte polohu z čipu-->odczytaj pozycję z chipa
- ' ****************************
- Sub Poloha(byref P As Integer)
- 'inicializace čipu-->inicjalizacja chipa
- Ssi_init
- 'čtení hodnoty-->wartość odczytu
- Call Cti_data(p)
- 'ukončení komunikace s čipem-->zakończenie komunikacji z chipem
- Ssi_close
- End Sub
- ' ****************************
- 'Přečte data z měřiče, bit po bitu-->Odczytuje dane z licznika, bit po bicie
- ' ****************************
- Sub Cti_data(byref Pozice As Integer)
- Dim Pom As Byte
- 'Pin 2 portu A jsou hodiny-->'Pin 2 portu A to zegar
- 'Proměnná Pozice vrací hodnotu-->Zmienna Pozice zwraca wartość
- Pozice = 0
- 'D11
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D10
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D9
- Pozice = Pozice * 2
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D8
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D7
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D6
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D5
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D4
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D3
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D2
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D1
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'D0
- Shift Pozice , Left , 1
- Reset Clk
- If Data_out = 1 Then
- Pozice = Pozice + 1
- End If
- Set Clk
- 'čtení stavových bitů-->odczytaj bity statusu
- 'OCF
- 'Waitus 10
- Reset Clk
- Ocf = Data_out
- Set Clk
- 'COF
- 'Waitus 10
- Reset Clk
- Cof = Data_out
- Set Clk
- 'LIN
- 'Waitus 10
- Reset Clk
- Lin = Data_out
- Set Clk
- 'Mag_INC
- 'Waitus 10
- Reset Clk
- Mag_inc = Data_out
- Set Clk
- 'Mag_DEC
- 'Waitus 10
- Reset Clk
- Mag_dec = Data_out
- End Sub
- ' ****************************
- ' ****************************
- Sub Ssi_init
- 'A.1 CS ¨¨¨¨¨______
- 'A.2 CLK ¨¨¨¨¨¨¨__¨¨
- ' us 2 1 1 1
- 'PortA.2 CLK ... clock
- Set Clk
- 'PortA.1 CS ... chip select
- Set Cs
- Waitus 2
- Reset Cs
- Waitus 1
- Reset Clk
- Waitus 1
- Set Clk
- Waitus 1
- End Sub
- ' ****************************
- ' ****************************
- Sub Ssi_close
- 'A.1 CS ___¨¨¨¨
- 'A.2 CLK _¨¨¨¨¨¨
- ' us 1 2
- 'čtu ^
- 'PortA.2 CLK ... clock
- 'PortA.1 CS ... chip select
- 'Parita
- Set Clk
- Parita = Data_out
- Waitus 1
- Set Cs
- Waitus 2
- End Sub
- ' ****************************
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: AS5311 Bascom
super prezent na święta Bartku https://www.youtube.com/watch?v=SZ68yft1MHc
działa tak jak trzeba wielkie dzięki.
pozdrawiam Jacek.
działa tak jak trzeba wielkie dzięki.
pozdrawiam Jacek.
- Jacek
- Posty: 384
- Rejestracja: 25 kwie 2016, 19:14
Re: AS5311 Bascom
Witam w nowym roku, mała aktualizacja https://www.youtube.com/watch?v=I1iVYxS_r3A
AS5311 odczytuje i przesyła do edytora Nextion i w symulacji jest odczyt tak jak na wyświetlaczu lcd, trochę niezręcznie przesuwam czujnik ale to tylko testy jeszcze raz dziękuję wszystkim i życzę zdrowia i pomyślności w nowym roku.
pozdrawiam Jacek.
AS5311 odczytuje i przesyła do edytora Nextion i w symulacji jest odczyt tak jak na wyświetlaczu lcd, trochę niezręcznie przesuwam czujnik ale to tylko testy jeszcze raz dziękuję wszystkim i życzę zdrowia i pomyślności w nowym roku.
pozdrawiam Jacek.