Witam.
Wykonałem sterownik zaworu na silniku krokowym którym steruje µC attina2313.
W celu zamknięcia lub otwarcia zaworu do sterownika wysyłana jest liczba 60 (zamknij) i 55 (otwórz). Te liczby wysyłam z drugiej attiny 2313 przez polecenie:
I niby wszystko działa za każdym razem lecz jest jeden problem. Za każdym razem po 22 wysłaniach zamknij otwórz wysłanie 23 razu, którym jest komenda otwarcia sterownik zaworu już nie reaguje.
Na pewno nie jest to wina nadajnika bo go resetowałem i nic nie pomogło, zawór dalej nie reaguje.
Poniżej zamieszczam kod od attiny w sterowniku zaworu.
Wykonałem sterownik zaworu na silniku krokowym którym steruje µC attina2313.
W celu zamknięcia lub otwarcia zaworu do sterownika wysyłana jest liczba 60 (zamknij) i 55 (otwórz). Te liczby wysyłam z drugiej attiny 2313 przez polecenie:
Sto = 55
Print Sto ; Chr(13);I niby wszystko działa za każdym razem lecz jest jeden problem. Za każdym razem po 22 wysłaniach zamknij otwórz wysłanie 23 razu, którym jest komenda otwarcia sterownik zaworu już nie reaguje.
Na pewno nie jest to wina nadajnika bo go resetowałem i nic nie pomogło, zawór dalej nie reaguje.
Poniżej zamieszczam kod od attiny w sterowniku zaworu.
$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 2400
Echo Off
Config Serialin = Buffered , Size = 3 , Bytematch = 13
'Config Serialout = Buffered , Size = 15
Config Input = Cr , Echo = Off
Enable Interrupts
Config Pinb.3 = Output 'cztery wyjścia na krokowca
Config Pinb.2 = Output
Config Pinb.1 = Output
Config Pinb.0 = Output
Config Pinb.4 = Input ' wejście krańcówki
Portb = &B10000
'*********************************DEKLARACJA ZMIENNYCH*******************************
Dim Czas As Byte
Dim A As Byte
Dim Licz As Byte
Dim Zawon As Byte
Dim Zawoff As Byte
Dim K As Byte
Dim Stopt As Byte
Dim Flaga As Bit
Zawon = 222
Zawoff = 55
Stopt = 44
Licz = 0
'*************************************************************************************
Wait 2
For A = 1 To 255
Portb = Lookup(licz , Tab)
Waitms 1
Incr Licz
If Licz = 4 Then
Licz = 0
End If
If Pinb.4 = 0 Then
Exit For
End If
Next
Portb = &B10000
Print Zawoff ; Chr(13);
Powrot:
'******************************PETLA GŁOWNA******************************************
Do
If Flaga = 1 Then
Input K
If K = 55 Then
Gosub Otwieranie
End If
End If
Loop
End
Otwieranie:
Licz = 1
For A = 1 To 160
Portb = Lookup(licz , Tab)
Waitms 2
Decr Licz
If Licz = 255 Then
Licz = 3
End If
Next
Portb = &B10000
Print Zawon ; Chr(13);
K = 0
Do
If Flaga = 1 Then
Input K
If K = 60 Then
Print Stopt ; Chr(13);
Gosub Zamykanie
End If
End If
Loop
Zamykanie:
Licz = 3
For A = 1 To 160
Portb = Lookup(licz , Tab)
Waitms 2
Incr Licz
If Licz = 4 Then
Licz = 0
End If
If Pinb.4 = 0 Then
Exit For
End If
Next
Portb = &B10000
Print Zawoff ; Chr(13);
K = 0
Clear Serialin
Goto Powrot
Tab:
Data &B11001 , &B11100 , &B10110 , &B10011
Serial0charmatch:
Set Flaga
Return