Werte Mehrwisser (als ich )
Ich möchte zwischen 2 AtMega 168 Zahlen von 1-1023 (10Bit-Analaogwert) in eine Richtung schicken. Das geniale dabei ist, dass ich 2 Stromkreise so, via Optokoppler trennen könnte.
Soweit bin ich aber noch nicht. Ich stehe bereits an, weil bei der Übermittlung die Zahlen über 255, Störungen beim Empfang auslösen (Ich sehe den Überlauf auf "0"). So nehme ich an, dass nur 8 Bit übermittelt werden.
Was mich aber wundert, in meinen gekauften Fibeln u.a. von Stefan Hoffmann, sehe ich, dass er in einem Beispiel die Zahlen 1023 sendet plus Sonderzeichen und es geht auch.
Die Beschaltung (HW) funktioniert (abgekupfert von einem andern Projekt; aber mit 2 AtMega32).
Frage an die Spezialisten: Was mache ich falsch, das nur 8 Bit übermittelt werden.
Die beiden BAS.-Dateien habe ich unten beigelegt (Aus Übersichtsgründen Unwesentliches rausgelöscht)
Ich danke im Voraus für die Hilfe, verbunden mit AHA-Erlebnissen. Freundlicher Gruss Lindi13
SENDEN:
$regfile = "m168def.dat"
$crystal = 1000000
$baud = 1200
dim strom2 as word
Strom2 = 250
Waitms 100
'START PROGRAMM-LOOP
'===================
Do
Printbin Strom2
If Strom2 >= 1023 Then 'soweit kommt es momentan gar nicht!
Strom2 = 0
End If
Incr Strom2
Waitms 1000
Loop
End
EMPFANGEN: (LCD weggelassen. Die zeigt mehr als 8 Bit an )
$regfile = "m168def.dat"
$crystal = 1000000
$baud = 1200
Dim Strom2 As Word
Waitms 100
Do
If Ischarwaiting() = 1 Then
Strom2 = inkey() ' Auch versucht mit: Strom2 = Waitkey()
End If
If Strom2 > 0 Then
Locate 1 , 1 '(Achtung: da LCD funktioniert, habe ich die Deklaration rausgelöscht)
Lcd "B:"
Locate 1 , 3
Select Case Strom2
Case Is >= 10000 : Lcd Strom2
Case Is >= 1000 : Lcd " " ; Strom2
Case Is >= 100 : Lcd " " ; Strom2
Case Is >= 10 : Lcd " " ; Strom2
Case Is >= 0 : Lcd " " ; Strom2
End Select
End If
Waitms 500
Loop
End
Ich möchte zwischen 2 AtMega 168 Zahlen von 1-1023 (10Bit-Analaogwert) in eine Richtung schicken. Das geniale dabei ist, dass ich 2 Stromkreise so, via Optokoppler trennen könnte.
Soweit bin ich aber noch nicht. Ich stehe bereits an, weil bei der Übermittlung die Zahlen über 255, Störungen beim Empfang auslösen (Ich sehe den Überlauf auf "0"). So nehme ich an, dass nur 8 Bit übermittelt werden.
Was mich aber wundert, in meinen gekauften Fibeln u.a. von Stefan Hoffmann, sehe ich, dass er in einem Beispiel die Zahlen 1023 sendet plus Sonderzeichen und es geht auch.
Die Beschaltung (HW) funktioniert (abgekupfert von einem andern Projekt; aber mit 2 AtMega32).
Frage an die Spezialisten: Was mache ich falsch, das nur 8 Bit übermittelt werden.
Die beiden BAS.-Dateien habe ich unten beigelegt (Aus Übersichtsgründen Unwesentliches rausgelöscht)
Ich danke im Voraus für die Hilfe, verbunden mit AHA-Erlebnissen. Freundlicher Gruss Lindi13
SENDEN:
$regfile = "m168def.dat"
$crystal = 1000000
$baud = 1200
dim strom2 as word
Strom2 = 250
Waitms 100
'START PROGRAMM-LOOP
'===================
Do
Printbin Strom2
If Strom2 >= 1023 Then 'soweit kommt es momentan gar nicht!
Strom2 = 0
End If
Incr Strom2
Waitms 1000
Loop
End
EMPFANGEN: (LCD weggelassen. Die zeigt mehr als 8 Bit an )
$regfile = "m168def.dat"
$crystal = 1000000
$baud = 1200
Dim Strom2 As Word
Waitms 100
Do
If Ischarwaiting() = 1 Then
Strom2 = inkey() ' Auch versucht mit: Strom2 = Waitkey()
End If
If Strom2 > 0 Then
Locate 1 , 1 '(Achtung: da LCD funktioniert, habe ich die Deklaration rausgelöscht)
Lcd "B:"
Locate 1 , 3
Select Case Strom2
Case Is >= 10000 : Lcd Strom2
Case Is >= 1000 : Lcd " " ; Strom2
Case Is >= 100 : Lcd " " ; Strom2
Case Is >= 10 : Lcd " " ; Strom2
Case Is >= 0 : Lcd " " ; Strom2
End Select
End If
Waitms 500
Loop
End