Florian.
23.05.2005, 16:33
Hallo,
seit ein paar Tagen kann ich vom AVR zum PC über die serielle Schnittstelle nicht mehr senden. Ich verwende den Mega8 und als Pegelwandler den MAX232. Als ich zum ersten Mal den Print Befehl benutzt habe, hat er auf anhieb funktioniert und ich konnte im Terminalprogramm die vom Avr gesendeten Zeichen empfangen. Als ich es ein weiteres Mal versuchen wollte habe ich es nicht mehr geschafft. In Bascom habe ich im Menü alles nach der Anleitung von www.myavr.de (habe das sisy myavr Board) konfiguriert.
Mein Code sah bei beiden Versuchen wie folgt aus:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
Do
Print "12"
Loop
end
Ich habe keine Einstellungen diesbezüglich verändert. Ich habe es auch schon mit anderen PCs versucht.
Kann ich irgendwie überprüfen (an den Pins?) ob der Avr überhaupt die Zeichen sendet und ob der Max232 seine Arbeit auch richtig tut? Ich wüsste zwar nicht wieso er aufeinmal nicht mehr funktionieren sollte, aber ich kann mir fast nichts anderes mehr vorstellen.
Ich habe gleich noch eine zweite Frage, die vielleicht nicht ganz zur Überschrift passt, allerdings möchte ich auch nicht noch einen Thread eröffnen. Der Hintergrund weshalb ich überhaupt etwas vom avr zum PC senden möchte ist folgender:
Ich habe ein Programm zum auswerten eines CNY70 geschrieben. Das Programm soll die Impulse (ein Impuls pro Umdrehung) pro Sekunde messen und das ganze dann in Umdrehungen/Minute umrechnen. Also eine Drehzahlmessung. Weil ich noch kein LCD habe um die Drehzahl auszugeben, und das Programm richtig zu testen, dachte ich mir, ich schicke den Wert einfach an den PC.
Vielleicht kann von Euch mal jemand kurz den Code überfliegen ob das so theoretisch überhaupt funktionieren kann.
$regfile = "m8def.dat"
$crystal = 3686400
Dim Zaehlerstand As Byte
Dim A As Integer
Dim Drehzahl As Integer
Const Timervorgabe = 61936
Config Timer1 = Timer , Prescale = 1024
On Timer1 Timer
Timer1 = Timervorgabe
Enable Timer1
Enable Interrupts
Do
Drehzahl = A * 60
Print "Drehzahl=" ; Drehzahl
Loop
End
Timer:
Timer1 = Timervorgabe
Zaehlerstand = Zaehlerstand + 1
A = Zaehlerstand
Zaehlerstand = 0
Return
Im Simulator habe ich es nicht geschafft den Int0 zu beeinflussen, so dass ich das ganze Programm im Simulator testen könnte.
Ich Danke Euch jetzt schon mal
Florian
seit ein paar Tagen kann ich vom AVR zum PC über die serielle Schnittstelle nicht mehr senden. Ich verwende den Mega8 und als Pegelwandler den MAX232. Als ich zum ersten Mal den Print Befehl benutzt habe, hat er auf anhieb funktioniert und ich konnte im Terminalprogramm die vom Avr gesendeten Zeichen empfangen. Als ich es ein weiteres Mal versuchen wollte habe ich es nicht mehr geschafft. In Bascom habe ich im Menü alles nach der Anleitung von www.myavr.de (habe das sisy myavr Board) konfiguriert.
Mein Code sah bei beiden Versuchen wie folgt aus:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600
Do
Print "12"
Loop
end
Ich habe keine Einstellungen diesbezüglich verändert. Ich habe es auch schon mit anderen PCs versucht.
Kann ich irgendwie überprüfen (an den Pins?) ob der Avr überhaupt die Zeichen sendet und ob der Max232 seine Arbeit auch richtig tut? Ich wüsste zwar nicht wieso er aufeinmal nicht mehr funktionieren sollte, aber ich kann mir fast nichts anderes mehr vorstellen.
Ich habe gleich noch eine zweite Frage, die vielleicht nicht ganz zur Überschrift passt, allerdings möchte ich auch nicht noch einen Thread eröffnen. Der Hintergrund weshalb ich überhaupt etwas vom avr zum PC senden möchte ist folgender:
Ich habe ein Programm zum auswerten eines CNY70 geschrieben. Das Programm soll die Impulse (ein Impuls pro Umdrehung) pro Sekunde messen und das ganze dann in Umdrehungen/Minute umrechnen. Also eine Drehzahlmessung. Weil ich noch kein LCD habe um die Drehzahl auszugeben, und das Programm richtig zu testen, dachte ich mir, ich schicke den Wert einfach an den PC.
Vielleicht kann von Euch mal jemand kurz den Code überfliegen ob das so theoretisch überhaupt funktionieren kann.
$regfile = "m8def.dat"
$crystal = 3686400
Dim Zaehlerstand As Byte
Dim A As Integer
Dim Drehzahl As Integer
Const Timervorgabe = 61936
Config Timer1 = Timer , Prescale = 1024
On Timer1 Timer
Timer1 = Timervorgabe
Enable Timer1
Enable Interrupts
Do
Drehzahl = A * 60
Print "Drehzahl=" ; Drehzahl
Loop
End
Timer:
Timer1 = Timervorgabe
Zaehlerstand = Zaehlerstand + 1
A = Zaehlerstand
Zaehlerstand = 0
Return
Im Simulator habe ich es nicht geschafft den Int0 zu beeinflussen, so dass ich das ganze Programm im Simulator testen könnte.
Ich Danke Euch jetzt schon mal
Florian