Moin
Ich habe Probleme mit "Inputbin" und einer Zeitschleife. Ist agal ob Wait oder mit Timer. Es werden zyklisch pro Sekunde 15 Byte übertragen. Nach dem RESET wird immer nur der erste richtig in Array geschrieben.
Danach immer nur Nullen. Ohne Zeitschleife vorweg, ist alles OK. Das Programm ist nur zum Testen. Kann man mir da weiterhelfen?
73s
HaJo
$regfile = "attiny2313.dat"
$crystal = 12000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 9600
$eeprom
Config Portd.2 = Output
Portd.2 = 0 ' SN75176 ist auf Empfang geschaltet
Config Portd.5 = Input ' Heller Alias Portd.5
Config Portd.6 = Input ' Dunkler Alias Portd.6
Portd.5 = 1 ' Eingang mit Pullups Versehen
Portd.6 = 1 ' Eingang mit Pullups Versehen
Open "COMD.4:9600,8,n,1" For Output As #1 ' PinD.4 ist TXD ( Software UART)
Dim Rs485_daten_array(15) As Byte' At Rs485_data als Array zum bearbeiten
Declare Sub Warten 'Sub Prozedur Zeitscheife
Dim St_bit_1 As Byte ' St_Bit als die Bit-Variable
Config Timer1 = Timer , Prescale = 1024 'Konfiguriere Timer1
On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
Enable Interrupts
Print #1, "------"
Call Warten ' Warteschleife von 5 Sek
'----------------------------------------------------------------------------------------------------------------------------------------------------
Do
Inputbin Rs485_daten_array(1),15
Print #1, rs485_daten_array(2)
Loop
'----------------------------------------------------------------------------------------------------------------------------------------------------
Isr_von_timer1: 'ISR von Timer1
St_bit_1.3 = 1 ' Erkennbit für Zeitschleife
Print #1, "ISR"
Return
'****************************************************************************************************************************************************
SUB Warten
Enable Timer1
Timer1 = 6942
Print #1, "Warte"
Warte:
If St_bit_1.3 = 0 Then
Goto Warte
Else
St_bit_1.3 = 0
End If
Disable Timer1
End Sub
End
Ich habe Probleme mit "Inputbin" und einer Zeitschleife. Ist agal ob Wait oder mit Timer. Es werden zyklisch pro Sekunde 15 Byte übertragen. Nach dem RESET wird immer nur der erste richtig in Array geschrieben.
Danach immer nur Nullen. Ohne Zeitschleife vorweg, ist alles OK. Das Programm ist nur zum Testen. Kann man mir da weiterhelfen?
73s
HaJo
$regfile = "attiny2313.dat"
$crystal = 12000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 9600
$eeprom
Config Portd.2 = Output
Portd.2 = 0 ' SN75176 ist auf Empfang geschaltet
Config Portd.5 = Input ' Heller Alias Portd.5
Config Portd.6 = Input ' Dunkler Alias Portd.6
Portd.5 = 1 ' Eingang mit Pullups Versehen
Portd.6 = 1 ' Eingang mit Pullups Versehen
Open "COMD.4:9600,8,n,1" For Output As #1 ' PinD.4 ist TXD ( Software UART)
Dim Rs485_daten_array(15) As Byte' At Rs485_data als Array zum bearbeiten
Declare Sub Warten 'Sub Prozedur Zeitscheife
Dim St_bit_1 As Byte ' St_Bit als die Bit-Variable
Config Timer1 = Timer , Prescale = 1024 'Konfiguriere Timer1
On Timer1 Isr_von_timer1 'verzweige bei Timer1 überlauf zu Isr_von_Timer1
Enable Interrupts
Print #1, "------"
Call Warten ' Warteschleife von 5 Sek
'----------------------------------------------------------------------------------------------------------------------------------------------------
Do
Inputbin Rs485_daten_array(1),15
Print #1, rs485_daten_array(2)
Loop
'----------------------------------------------------------------------------------------------------------------------------------------------------
Isr_von_timer1: 'ISR von Timer1
St_bit_1.3 = 1 ' Erkennbit für Zeitschleife
Print #1, "ISR"
Return
'****************************************************************************************************************************************************
SUB Warten
Enable Timer1
Timer1 = 6942
Print #1, "Warte"
Warte:
If St_bit_1.3 = 0 Then
Goto Warte
Else
St_bit_1.3 = 0
End If
Disable Timer1
End Sub
End