program ma wysyłać bity. I wysyła, tylko nie takie jak bym chciał. w tym przypadku na linii wyjściowej dostaje coś takiego: 1, około 3ms przerwy, 1010101010101011, przerwa 6ms, 101. czas trwania stanu wysokiego się zgadza, tylko czemu dostaje taką sieczkę?? sygnał zegarowy ma okres około 400us.
sprawdziłem jeszcze co sie dzieje dla takich wartosci:
Wartosc(1) = &B00000000 dostaje 2 impulsy o czasie trwania 400us w odleglosci 10ms
Wartosc(1) = &B11111111 dostaje 2 impulsy, pierwszy jak w poprzednim przypadku a drugi dlugi i konczy sie po m10ms. czyli jest jakas zaleznosc...tylko nie wiem czemu nie dostaje takich bitow jak w Wartosc(1) = &B10101010...
Poprawiłem tytuł:
https://www.elektroda.pl/rtvforum/topic1015361.html
[c_p]
$regfile = "m16def.dat"
$crystal = 16000000
Dim Wartosc(1) As Byte
Dim Databyte As Byte ' bajt wysylany
Dim Dana As Byte ' licznik
Dim Bitpointer As Byte ' wskaznik aktualnie wysylanego bitu
Config Pind.3 = Input ' pin zewnetrznego zegara
Config Pind.1 = Output ' Pind.1 liniaTxD
Iowy Alias Portd.1
On Int1 Seriout 'przerwanie
Config Int1 = Rising ' jak je wyzwalamy
'########## tabela z wysylanymi bajtami ##################
Wartosc(1) = &B10101010
'#####\ustawiamy wartosci startowe ################
Dana = 1
Bitpointer = 0
Databyte = Wartosc(1)
nop
nop
nop
nop
Enable Interrupts ' uruchamiamy przerwania
Enable Int1
Do 'Forever loop
Loop
End
Seriout: ' przerwanie
Disable Interrupts
Iowy = Databyte.bitpointer 'Send bit out
Incr Bitpointer
If Bitpointer = 8 Then 'wyzeruj go i zacznij zliczac od poczatku
Bitpointer = 0 'Reset po
Incr Dana ' przesun sie w bajtach wyjsciowych o 1 w gore
Databyte = Wartosc(dana) ' przypisz dane z do bajta wsylanego
End If
Enable Interrupts
Returnsprawdziłem jeszcze co sie dzieje dla takich wartosci:
Wartosc(1) = &B00000000 dostaje 2 impulsy o czasie trwania 400us w odleglosci 10ms
Wartosc(1) = &B11111111 dostaje 2 impulsy, pierwszy jak w poprzednim przypadku a drugi dlugi i konczy sie po m10ms. czyli jest jakas zaleznosc...tylko nie wiem czemu nie dostaje takich bitow jak w Wartosc(1) = &B10101010...
Poprawiłem tytuł:
https://www.elektroda.pl/rtvforum/topic1015361.html
[c_p]