Feiler
16.02.2008, 20:15
Servus!
Und schon wieder habe ich ein Problem mit meinem AVR...
Das Problem ist folgendes: Ich möchte zu meinem AVR Daten senden - was auch soweit wunderbar funktioniert. Wenn ich nun die Daten auswerten möchte, sprich den Instr() Befehl nutzen will reagiert der Controller nicht mehr.
Ich habe testweise mal einen Eingang als Auswahlschalter programmiert, der mir die Variable ("Datenstring") füllt. Solange ich das mit diesem Eingang laufen lasse funktioniert alles wunderbar.
Erst wenn ich das ganze über den UART, sprich RS485/RS232 laufen lassen will macht der Controller nichts mehr. Woran könnte das liegen?
Hier noch der Quellcode (Beim Test mit dem Eingang habe ich vor Loop noch ein waitms 100 stehen gehabt):
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600
'Port A
Config Porta = Input
Porta 0# = 1 'Setzt internen Pull-Up
Porta 0.1 = 1 'Setzt internen Pull-Up
Porta 0.2 = 1 'Setzt internen Pull-Up
Porta 0.3 = 1 'Setzt internen Pull-Up
Porta 0.4 = 1 'Setzt internen Pull-Up
Porta 0.5 = 1 'Setzt internen Pull-Up
Porta 0.6 = 1 'Setzt internen Pull-Up
Porta 0.7 = 1 'Setzt internen Pull-Up
'Port B
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
'Port C
Config Portc = Output
'Port D
Config Portd = Output
'LightCOM! Bus (RS485) Einstellen
Rs485 Alias Portd.2
Rs485 = 0 'Karte ist als Slave geschalten
'Ports Benennen
Ausg_1 Alias Portc.7
Ausg_2 Alias Portc.6
Ausg_3 Alias Portc.5
Ausg_4 Alias Portc.4
Ausg_5 Alias Portc.3
Ausg_6 Alias Portc.2
Ausg_7 Alias Portc.1
Ausg_8 Alias Portc.0
Ausg_9 Alias Portd.7
Ausg_10 Alias Portd.6
Ausg_11 Alias Portd.5
Ausg_12 Alias Portd.4
Ausg_13 Alias Portd.3
Ausg_14 Alias Portb.4
Ausg_15 Alias Portb.3
Ausg_16 Alias Portb.2
Ausg_17 Alias Portb.1
Ausg_18 Alias Portb.0
Adr_1 Alias Pina.7
Adr_2 Alias Pina.6
Adr_4 Alias Pina.5
Adr_8 Alias Pina.4
Adr_16 Alias Pina.3
Adr_32 Alias Pina.2
Adr_64 Alias Pina.1
Adr_128 Alias Pina.0
Ausg_1 = 1
Ausg_18 = 1
'Variablen zuweisen
Dim Var_adresse As Integer 'Gibt die Adresse der Karte zurück
Dim Empfzeichen As Byte
Dim Datenstring As String * 7
Datenstring = ""
Dim Var_sucheadresse As String * 4
Dim Var_posdaten As Integer
Dim Var_pos As Integer
Do
'Boardadresse abfragen
Var_adresse = 0
Select Case Adr_1 'Adresse + 1
Case 0: Var_adresse = Var_adresse + 1
End Select
Select Case Adr_2 'Adresse + 2
Case 0: Var_adresse = Var_adresse + 2
End Select
Select Case Adr_4 'Adresse + 4
Case 0: Var_adresse = Var_adresse + 4
End Select
Select Case Adr_8 'Adresse + 8
Case 0: Var_adresse = Var_adresse + 8
End Select
Select Case Adr_16 'Adresse + 16
Case 0: Var_adresse = Var_adresse + 16
End Select
Select Case Adr_32 'Adresse + 32
Case 0: Var_adresse = Var_adresse + 32
End Select
Select Case Adr_64 'Adresse + 64
Case 0: Var_adresse = Var_adresse + 64
End Select
Select Case Adr_128 'Adresse + 128
Case 0: Var_adresse = Var_adresse + 128
End Select
'Ausgänge auswerten
Empfzeichen = Inkey()
Select Case Empfzeichen
Case 13:
Select Case Var_adresse
Case 0 To 9: Var_sucheadresse = "A00" + Str(Var_adresse)
Case 10 To 99: Var_sucheadresse = "A0" + Str(Var_adresse)
Case Is >= 100: Var_sucheadresse = "A" + Str(Var_adresse)
End Select
Var_posdaten = InStr(Datenstring, Var_sucheadresse)
If Var_posdaten > 0 Then
Var_pos = Var_posdaten + 4
If Mid(Datenstring, Var_pos, 3) = "Aus" Then
Ausg_1 = 1
ElseIf Mid(Datenstring, Var_pos, 3) = "Ein" Then
Ausg_1 = 0
End If
End If
Datenstring = ""
Case Else: Datenstring = Datenstring + Chr(Empfzeichen)
End Select
Loop
Gruß, Sven
Und schon wieder habe ich ein Problem mit meinem AVR...
Das Problem ist folgendes: Ich möchte zu meinem AVR Daten senden - was auch soweit wunderbar funktioniert. Wenn ich nun die Daten auswerten möchte, sprich den Instr() Befehl nutzen will reagiert der Controller nicht mehr.
Ich habe testweise mal einen Eingang als Auswahlschalter programmiert, der mir die Variable ("Datenstring") füllt. Solange ich das mit diesem Eingang laufen lasse funktioniert alles wunderbar.
Erst wenn ich das ganze über den UART, sprich RS485/RS232 laufen lassen will macht der Controller nichts mehr. Woran könnte das liegen?
Hier noch der Quellcode (Beim Test mit dem Eingang habe ich vor Loop noch ein waitms 100 stehen gehabt):
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 9600
'Port A
Config Porta = Input
Porta 0# = 1 'Setzt internen Pull-Up
Porta 0.1 = 1 'Setzt internen Pull-Up
Porta 0.2 = 1 'Setzt internen Pull-Up
Porta 0.3 = 1 'Setzt internen Pull-Up
Porta 0.4 = 1 'Setzt internen Pull-Up
Porta 0.5 = 1 'Setzt internen Pull-Up
Porta 0.6 = 1 'Setzt internen Pull-Up
Porta 0.7 = 1 'Setzt internen Pull-Up
'Port B
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
'Port C
Config Portc = Output
'Port D
Config Portd = Output
'LightCOM! Bus (RS485) Einstellen
Rs485 Alias Portd.2
Rs485 = 0 'Karte ist als Slave geschalten
'Ports Benennen
Ausg_1 Alias Portc.7
Ausg_2 Alias Portc.6
Ausg_3 Alias Portc.5
Ausg_4 Alias Portc.4
Ausg_5 Alias Portc.3
Ausg_6 Alias Portc.2
Ausg_7 Alias Portc.1
Ausg_8 Alias Portc.0
Ausg_9 Alias Portd.7
Ausg_10 Alias Portd.6
Ausg_11 Alias Portd.5
Ausg_12 Alias Portd.4
Ausg_13 Alias Portd.3
Ausg_14 Alias Portb.4
Ausg_15 Alias Portb.3
Ausg_16 Alias Portb.2
Ausg_17 Alias Portb.1
Ausg_18 Alias Portb.0
Adr_1 Alias Pina.7
Adr_2 Alias Pina.6
Adr_4 Alias Pina.5
Adr_8 Alias Pina.4
Adr_16 Alias Pina.3
Adr_32 Alias Pina.2
Adr_64 Alias Pina.1
Adr_128 Alias Pina.0
Ausg_1 = 1
Ausg_18 = 1
'Variablen zuweisen
Dim Var_adresse As Integer 'Gibt die Adresse der Karte zurück
Dim Empfzeichen As Byte
Dim Datenstring As String * 7
Datenstring = ""
Dim Var_sucheadresse As String * 4
Dim Var_posdaten As Integer
Dim Var_pos As Integer
Do
'Boardadresse abfragen
Var_adresse = 0
Select Case Adr_1 'Adresse + 1
Case 0: Var_adresse = Var_adresse + 1
End Select
Select Case Adr_2 'Adresse + 2
Case 0: Var_adresse = Var_adresse + 2
End Select
Select Case Adr_4 'Adresse + 4
Case 0: Var_adresse = Var_adresse + 4
End Select
Select Case Adr_8 'Adresse + 8
Case 0: Var_adresse = Var_adresse + 8
End Select
Select Case Adr_16 'Adresse + 16
Case 0: Var_adresse = Var_adresse + 16
End Select
Select Case Adr_32 'Adresse + 32
Case 0: Var_adresse = Var_adresse + 32
End Select
Select Case Adr_64 'Adresse + 64
Case 0: Var_adresse = Var_adresse + 64
End Select
Select Case Adr_128 'Adresse + 128
Case 0: Var_adresse = Var_adresse + 128
End Select
'Ausgänge auswerten
Empfzeichen = Inkey()
Select Case Empfzeichen
Case 13:
Select Case Var_adresse
Case 0 To 9: Var_sucheadresse = "A00" + Str(Var_adresse)
Case 10 To 99: Var_sucheadresse = "A0" + Str(Var_adresse)
Case Is >= 100: Var_sucheadresse = "A" + Str(Var_adresse)
End Select
Var_posdaten = InStr(Datenstring, Var_sucheadresse)
If Var_posdaten > 0 Then
Var_pos = Var_posdaten + 4
If Mid(Datenstring, Var_pos, 3) = "Aus" Then
Ausg_1 = 1
ElseIf Mid(Datenstring, Var_pos, 3) = "Ein" Then
Ausg_1 = 0
End If
End If
Datenstring = ""
Case Else: Datenstring = Datenstring + Chr(Empfzeichen)
End Select
Loop
Gruß, Sven