Bascom Probleme beim Einlesen und Auswertwn von UART-String

Viper-Gtr

Neues Mitglied
27. Juli 2012
1
0
0
Sprachen
  1. BascomAVR
Hallöchehen an alle!
Ich hab ein kleines Problem... :wavey:

Ich wollte mir selber einen kleinen Roboterarm bauen, gaanz einfach mit 6 Servos :flute:
Diesen will ich via PC seriell steuern und dachte mir, warum denn nicht ´nen kleinen Atmega dafür nehmen.
Ich habe die Hardware komplett aufgebaut (ATmega8, FT232R, 6 Modellbau Servos, und eine Hand voll LEDs)

Die Servos lassen sich ganz normal über die jeweiligen Konstanten anstprechen.

Nun komme ich zu meinem Problem:
sobalt ich versuche, einen String einzulesen und zu verarbeiten, spinnen die Servos total rum.
Erst dachte ich an ein Hardware Problem, leider kann ich dies nach eineigen Tests ausschließen.

Der String der eingelesen werden soll sieht quasi so aus :
"# 1P500 # 2P500 # 3P500 # 4P500 # 5P500 # 6P500 T150" (Habe mich da ein wenig an den käuflichen China-Servo-Controllern orientiert)

Der String den ich nach der Auswertung zurück schicke sieht so aus:
"" (leider gar nichts ...)

zu allem ärger habe ich in meine Auswertung, nachträglich bei der Fehlersuche, irgendwo einen so großen Fehler eingebaut, dass es sich nicht mehr compelieren lässt :confused:
Hier einmal der Code der noch funktioniert:
Code:
$regfile "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
'-------------------------------------------------------------------------------------------------
Config Servos = 6 , Servo1 = Portb.1 , Servo2 = Portb.2 , Servo3 = Portb.3 , Servo4 = Portb.4 , Servo5 = Portb.6 , Servo6 = Portb.6 , Reload = 10 , Timer = Timer1
Config Serialin = Buffered , Size = 255
Config Com1 = 57600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'-------------------------------------------------------------------------------------------------
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
'-------------------------------------------------------------------------------------------------
Led Alias Portb.0
'-------------------------------------------------------------------------------------------------
Dim S1 As Byte
Dim S2 As Byte
Dim S3 As Byte
Dim S4 As Byte
Dim S5 As Byte
Dim S6 As Byte
Dim Eingnang As String * 10
Print "start"
'-------------------------------------------------------------------------------------------------
Enable Interrupts


Do
 Led = 1

 S1 = S1 / 77
 Servo(1) = S1
' Print "Servo 1 gestellt"
 S2 = S2 / 77
 Servo(1) = S2
' Print "Servo 2 gestellt"
 S3 = S3 / 77
 Servo(1) = S3
' Print "Servo 3 gestellt"
 S4 = S4 / 77
 Servo(1) = S4
' Print "Servo 4 gestellt"
 S5 = S5 / 77
 Servo(1) = S5
' Print "Servo 5 gestellt"
 S6 = S6 / 77
 Servo(1) = S6
' Print "Servo 6 gestellt"

Print "alle Servos gestellt"

 Led = 0
Loop

End

Ist zwar nicht so viel, aber nach dem Löschen der gesamten String Auswertung lies es sich wieder brennen.

Ich bin langsam mit meinem Latein am Ende.
Vieleicht hat einer von euch eine Idee wie ich aus meinem Eigangsstring die einzelnen Servowerte auswerten kann.
 
Also ich kenne mich mit Bascom nicht aus, deshalb hier einfach mal was mir auffällt:

Servo5 und Servo6 wird der gleiche Pin zugewiesen.
S1..S6 wird nicht initialisiert.
Ein serielles Einlesen kann ich überhaupt nicht entdecken.
 
'N Byte durch 77 zu teilen macht auch nicht so viel Sinn, oder (mögliche Ergebnisse: 0, 1, 2, 3)
Er hatte wohl vorher mehr Code, welcher sich nicht compilieren ließ...
 
Dein Code scheint doch recht unvollständig ...
Wozu das Enable Interrupt, wenn kein Interrupt definiert ist?
Die Variablen S1 .. S6 bei jedem Schleifendurchlauf durch 77 zu teilen scheint mir auch sinnfrei.
Led = 0 und als nächsten Befehl Led = 1 ??? Do Loop ist eine Schleife !!!
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)