-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: C-Controll Mega 32 / RS232 [Ich bin anfänger]

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119

    C-Controll Mega 32 / RS232 [Ich bin anfänger]

    Anzeige

    Schönen Abend zusammen.
    Ich hoffe, dass ich dieses Thema am richtigen Ort erstellt habe!

    Ich habe mir eine C-Controll Pro Unit Mega 23 gekauft!
    Hier der Link:
    http://www.conrad.ch/goto.php?artikel=198206

    Nun zu meinem Problem

    Ich möchte über RS 232 4 Bytes ausgeben

    Immer zuerst #s und dann 2 Variabeln..

    Leider ist in der Hilfe (vom IDE) nur eine Beispiel Ausgabe in C..
    Von C verstehe ich nun leider mal noch weniger als von BASIC

    Daher die Frage, kann mir jemand einen funktionierenden CODE in BASIC draus mach??

    Code:
    void main(void)
    
    {
    
        int i;
    
        char str[10];
    
     
    
        str="test";
    
        i=0;
    
        // Initialisiere Schnittstelle mit 19200baud, 8 Bit, 1 Stop Bit, keine Parität
    
        Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200);
    
     
    
        while(str[i]) Serial_Write(0,str[i++]);  // Gib den String aus
    
    }
    Ich habe es einmal so Probiert:
    Code:
    Sub ServosdirectMove(Servonumber As Byte, Servopos As Byte)
    
    
    
    Dim i As Integer
    Dim Str1 (5) As Char
    
    Str1= "#s" : Servonumber : Servopos
    i=0
    
    Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600)
    
    Do While
    'und da habe ich keine Ahnung wie machen
    
    End While
    
    
    
    
    
    End Sub
    Ich benötige das übrigens für einen
    http://www.shop.robotikhardware.de/s...products_id=23

    Hoffe, mir kann jemand weiter helfen..
    Danke für eure AW schon im voraus

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119
    Hallo nochma

    Sind diese Zeillen bei allen "Dialekten" gleich oder braucht man die, um es sauber ins Basic übersetzen zu können??

    Syntax

    void Serial_Write(byte serport, byte val);

    Sub Serial_Write(serport As Byte, val As Byte)

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119
    Hallo
    Was ist an meiner Frage denn Falsch??

    Ein bisschen programmiererfahrung (ActionScript, S5,) habe ich schon..

    Aber da blicke ich echt nicht durch...diesen String geht einfach nicht so, wie ich will...(ne möchte)

    Kann mir keiner weiter helfen??

    Bitte um ehrliche AW

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Naturp,

    schau dir doch bei Robotikhardware auf der von dir verlinkten Seite 'mal das Basic Beispiel an (unter dem Link "Doku mit Bascom Beispiel").

    Name: servotreibertestrns1.bas

    Das ist zwar Bascom, läßt sich aber gut nach CCBASIC übersetzen.

    Gruß Dirk

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119
    Zitat Zitat von Dirk
    Hallo Naturp,

    schau dir doch bei Robotikhardware auf der von dir verlinkten Seite 'mal das Basic Beispiel an (unter dem Link "Doku mit Bascom Beispiel").

    Name: servotreibertestrns1.bas

    Das ist zwar Bascom, läßt sich aber gut nach CCBASIC übersetzen.

    Gruß Dirk
    Nun, ich will zwar nicht unhöflich sein, aber auf diese Jdee kam ich auch schon..

    Aber da hab eich schnell mal Probleme:

    1.) Mit was öffne ich die Datei ..

    2.) Im PDF steht was von "byval" wath is dens das??

    3.) Die initialisierungn
    Ich weiss:
    -9600 Baud..

    Ich weiss nicht:
    -Wie viel stop Bit
    -Wie viel Bit
    -Was für ein Parity

    lange habe ich gehoft, einfach alles durchprobieren währe die lösung..
    nach dem 20 Versuch habe ich aber aufgegeben

    Im beispiel steht:

    Print "#s" ; Chr(servonummer) ; Chr(position)

    Und warum funktioniert das so nicht:
    Serial_WriteText(0,"#s" ; Servonumber ; Servopos)


    Nach über 5 Stunden nur an dieser Komunikation ausprobieren und noch immer keine Ahnung wie ich es lösen könnte schwindet meine Geduld immer mehr..

    Sobald ich den String ausgebe, kriege ich auf dem Osziloskop ein total verhaktes Signal...

    Hoffe, jemand kann mir weiterhelfen..
    “C++ is an insult to the human brain.”
    Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Naturp,

    Nun, ich will zwar nicht unhöflich sein, aber auf diese Jdee kam ich auch schon..
    Du bist sehr höflich, hattest aber auch nicht erwähnt, dass du das Basic Beispiel kennst, sondern - im Gegenteil - offenbar ausgehend von C eine Umsetzung in Basic versucht.

    Zu 1) Die .bas Datei kannst du mit dem Windows-Editor öffnen.
    Zu 2) Erstmal egal. Nimm am besten am Anfang keine Sub, sondern sende den String im Hauptprogramm, um zu testen, ob überhaupt ein Servo reagiert.
    Zu 3) Empfehlung: Klammer dich erstmal nicht an die Initialisierung, sondern an den Rest des Programms. Dann suchst du in der CCBASIC Anleitung den Serial_init Befehl und stellst ihn auf 9600 Baud, 8 Datenbits, keine Parität und 1 Stopbit ein.

    Sobald ich den String ausgebe, kriege ich auf dem Osziloskop ein total verhaktes Signal...
    Das wäre auf meinem Oszi auch nicht anders, weil das eine wenig hilfreiche Methode ist, eine fehlerhafte Programmierung zu erkennen. Was willst du denn da erkennen?

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119
    Zitat Zitat von Dirk

    Zu 3) Empfehlung: Klammer dich erstmal nicht an die Initialisierung, sondern an den Rest des Programms. Dann suchst du in der CCBASIC Anleitung den Serial_init Befehl und stellst ihn auf 9600 Baud, 8 Datenbits, keine Parität und 1 Stopbit ein.
    Das steht so schon in meinem ersten Beitrag....

    Serial_Init(0,SR_8BIT Or SR_1STOP Or SR_NO_PAR,SR_BD9600)

    Das ist ja so weit ok..

    Aber ich kann den String nicht ausgeben-Ich weiss nicht wie.....

    Kann mir jemand ein Beispiel in Basic geben, wie ich -sagen wir mal- #s 1 170 über RS232 ausgeben kann...

    Ich weiss nicht, wie ich das mit diesem Befehl ausgeben kann:

    [Direkt aus der Hilf evom IDE kopiert]


    Syntax
    void Serial_Write(byte serport, byte val);
    Sub Serial_Write(serport As Byte, val As Byte)
    Beschreibung

    Ein byte wird zur seriellen Schnittstelle geschickt.

    Parameter

    serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..)

    val der auszugebende byte Wert


    oder dann doch das?


    Syntax

    void Serial_WriteText(byte serport,char text[]);
    Sub Serial_WriteText(serport As Byte,ByRef Text As Char)

    Beschreibung


    Es werden alle Zeichen des char array bis zur terminierenden Null auf der seriellen Schnittstelle ausgegeben.



    Parameter
    serport Schnittstellennummer (0 = 1.serielle, 1 = 2.serielle etc..)
    text char array



    Bitte help
    “C++ is an insult to the human brain.”
    Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Naturp,

    man kann es wie im Beispiel aus der Anleitung mit einem Textarray machen oder mit der Ausgabe einzelner Zeichen:
    Code:
    Serial_Write(serport, 35)                ' #
    Serial_Write(serport, 83)                ' s
    Serial_Write(serport, servo_number)      ' Servonummer 1..10
    Serial_Write(serport, servo_position)    ' Servoposition 1..255
    Serial_Write(serport, 0x0A)              ' Zeilenvorschub
    Klappt das?

    Gruß Dirk

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119
    Zitat Zitat von Dirk
    Hallo Naturp,

    man kann es wie im Beispiel aus der Anleitung mit einem Textarray machen oder mit der Ausgabe einzelner Zeichen:
    Code:
    Serial_Write(serport, 35)                ' #
    Serial_Write(serport, 83)                ' s
    Serial_Write(serport, servo_number)      ' Servonummer 1..10
    Serial_Write(serport, servo_position)    ' Servoposition 1..255
    Serial_Write(serport, 0x0A)              ' Zeilenvorschub
    Klappt das?

    Gruß Dirk
    So habe ich es schon mal probiert...
    allerdings ohne Zeilen Vorschub..

    Nun, es geht nicht..aber ich hab eglaub eine idee woran es liegen könnte..

    Das Servo zuckt zwischen durch, und immer wenn es das macht, wups sind die LED für einen Augenblick abwesend!

    Ich stelle mir das so vor:
    Das Programm startet, läst das Servo laufen, und dann (gerade wegen dem Servo) bricht die Spannung ein..!

    Morgen programmier ich das ganze mal so um, dass ich ein LED einschalte, es dann wieder ausschalte, und dann das Servo bewege!

    Sollte wirklich die Spannung zusammenbrechen, so wird das LED beim "neustart" wieder leuchten...

    Ich warte erstma ab, bis das Netzteil, das ich bestellt habe da ist, dann guke ich weiter!

    Danke für die Geduldigen AWs
    “C++ is an insult to the human brain.”
    Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.01.2010
    Alter
    22
    Beiträge
    119
    Hallo

    Und es funktioniert..nicht!!!

    Ich hoffe, dass mir jemand helfen kann!

    Hier nochmal die Links zu den Teilen, die ich verwenden

    CC-Mega 32 bei Conrad
    http://www.conrad.ch/goto.php?artikel=198206

    CC-Mega 32 in eigener Schaltung

    http://www.c-control-pro.de/Archiv/M...tand_alone.pdf

    Dann den RNS1 oder eben Atmel AT90S2313
    http://www.shop.robotikhardware.de/s...products_id=23


    Das Ganze mal in meinem Schaltplan ist unten zu finden..
    Falls jemand einen Fehler sieht, bitte melden...

    Kurze INFO:
    Jeder, der den Schaltplan anschaut, wird mercken, dass eine Leitung von RS232 über einen Schalter geht! Das ist nur dazu da, weill ich zum Programmieren und zum betrieb die ein e Leitung eben 2mal brauche..

    Sobald als möglich werde ich noch den Code in BASIC hochladen!
    ICH KANN DEN FEHLER EINFACH NICHT FINDEN!!!PLEASE HELP!!
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken mein_test_schaltplan.png  
    “C++ is an insult to the human brain.”
    Niklaus Wirth, entwickelte unter anderem die Programmiersprache PASCAL

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •