@linux_80
Kannst du mal deinen "Sende"-Code posten?
Also den Code, womit du per Print beliebig viele Befehle sendest.
Bei mir sendet das Programm anscheinend nur einmal.
Druckbare Version
@linux_80
Kannst du mal deinen "Sende"-Code posten?
Also den Code, womit du per Print beliebig viele Befehle sendest.
Bei mir sendet das Programm anscheinend nur einmal.
Aja,
SendeCode hab ich jetz keinen, habs mit dem PC probiert,
aber ich denke, das deine Schleife zum senden doch sehr viele Prints macht in der Zeit in der der Eingang 0 ist.
Was hängt da an den Eingängen, sind die Taster entprellt,
evtl. den Code so umstellen, das der Print nur ausgeführt wird, wenn der Eingang von 1 auf 0 wechselt, und da auch nur einmal.
Kannst Du zum testen die AVRs mit dem PC verbinden, stelle mir so die Fehlersuche einfacher vor.
"Kannst Du zum testen die AVRs mit dem PC verbinden, stelle mir so die Fehlersuche einfacher vor."
Hm jetzt nicht, kann daweil nicht löten.
"aber ich denke, das deine Schleife zum senden doch sehr viele Prints macht in der Zeit in der der Eingang 0 ist.
Was hängt da an den Eingängen, sind die Taster entprellt,
evtl. den Code so umstellen, das der Print nur ausgeführt wird, wenn der Eingang von 1 auf 0 wechselt, und da auch nur einmal. "
Jo das tut sie definitiv! Kannst du mir einen Beispielcode geben, so wie du es meinst?
Die Taster sind standard auf high (1 +), und wenn der Taster gedrückt wird auf low (0 GND)
Meine neuen Codes, funktioniert immer noch nicht:
Code:$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config Pind.5 = Input
Config Pind.6 = Input
Dim X As Integer
Dim Y As Integer
X = 1
Y = 2
Main:
Do
If Pind.5 = 0 Then Goto Send1
If Pind.6 = 0 Then Goto Send2
Loop
Send1:
Print X
Goto Main
Send2:
Print Y
Goto Main
Code:$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config Portb = Output
Dim X As Integer
Portb.5 = 0
Main:
Do
Input , X
If X = 1 Then Goto Loop1
If X = 2 Then Goto Loop2
Loop
Loop1:
Portb.5 = 1
Goto Main
Loop2:
Portb.5 = 0
Goto Main
Nach anlegen von Spannung an beide AVR kann ich genau einmal einen Taster drücken, beide reagieren, aber nach einem Tastendruck ist schluss.
Was ist da nur falsch?
Hallo,
Du springst aus einer Do...Loop Schleife einfach mit einem Goto heraus. Das geht natürlich nicht. Do...Loop verläßt man mit Exit Loop. In Deinem Programm kommt der Programmcounter ja sofort durcheinander. Das kann also nur einmal funktionieren.Zitat:
Zitat von ShadowPhoenix
Ändere Deine Labels in Subs und schon geht es.
Henrik
Moin,
gegenüber dem alten code hat sich aber nicht wirklich was geändert.
Ich hab das jetzt doch mal einegetippt, den Sendecode,
und muss sagen das der ja läuft, hab den Taster zwar nur mit 'nem Kabel gegen Masse simuliert und die ausgabe zum PC gesendet, aber es kommt was, nicht nur einmal.
Ich kann meine Boards jetzt nicht zusammenhängen, da ich nur ein Netzteil da hab.
Ja, krutzitürken, sapperlot...Zitat:
Zitat von linux_80
Ein solches Konstrukt kann nicht funktionieren:
Main:
Do
Input , X
If X = 1 Then Goto Loop1
If X = 2 Then Goto Loop2
Loop
Loop1:
Portb.5 = 1
Goto Main
Loop2:
Portb.5 = 0
Goto Main
Bitte, nochmal gaaanz von vorne anfangen und die grundlegenden Regeln der Behandlung von Schleifenkonstrukten erlernen.
Henrik
Ist schon recht,
ich meinte ja auch den ShadowPhoenix.
Ohjee, wusste ich es doch, mein Code ist peinlich =)
Wo lerne ich denn am besten Basic für Bascom? Gibt es da eine Seite?
Meine neuen Codes, funktioniert immer noch nicht :(
Code:$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config Pind.5 = Input
Config Pind.6 = Input
Declare Sub Send1
Declare Sub Send2
Dim X As Integer
Dim Y As Integer
X = 1
Y = 2
Do
Debounce Pind.5 , 0 , Send1 , Sub
Debounce Pind.6 , 0 , Send2 , Sub
Loop
Sub Send1:
Print X
End Sub
Sub Send2:
Print Y
End Sub
Code:$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config Portb = Output
Declare Sub Loop1
Declare Sub Loop2
Dim X As Integer
Portb.5 = 0
Do
Input , X
If X = 1 Then Gosub Loop1
If X = 2 Then Gosub Loop2
Loop
Sub Loop1:
Portb.5 = 1
End Sub
Sub Loop2
Portb.5 = 0
End Sub
Hmm, habe doch gosub verwendet... trotzdem reagiert der AVR nur auf einen Tastendruck!
EDIT: Mit Sub, geht aber nicht!