-         

Ergebnis 1 bis 4 von 4

Thema: Port config ATmega128

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.07.2007
    Ort
    Roboland
    Alter
    41
    Beiträge
    70

    Port config ATmega128

    Anzeige

    Hallo ich hab folgendes Problem
    ich müsste eine Motorsteuerung ansteuern und treffe denke ich den Port nicht die Angaben unten sind für den zu programmierenden Port.

    Ich hoffe es geht so mit den angegebenen Daten !

    das Motorboard hatt ID Slave 88 ich hoffe diese stimmt überein.

    ATmega128

    i2C-Bus

    Pin 1 SCL (Taktleitung) Port PD0
    Pin 3 SDA(Datenleitung) Port PD1
    Pin 5 +5V
    Pin 7 +5V
    Pin 9 unbelegt andere Boards liefern hier manchmal die Batterie Spannung
    Pin 2,4,6,8 GND
    Pin 10 Unbelegt,andere Boards liefrn hier manchmal die Batterie Spannung

    Folgendes unten lässt sich compilieren hab aber den rest weiter nach unten weggelassen

    Code:
    
    Declare Function Tastenabfrage() As Byte
    
    $regfile = "m128def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 64
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    Config Scl = Portd.0                                        'Ports fuer IIC-Bus
    Config Sda = Portd.1
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Porta.7 = 1                                                 'Pullup Widerstand ein
    Dim Taste As Byte
    Dim Ton As Integer
    
    I2cinit
    Start Adc
    Sound Portg.2 , 400 , 450                                   'BEEP
    Sound Portg.2 , 400 , 250                                   'BEEP
    Sound Portg.2 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control  V1.4 *****"
    Print "Demoprogramm um Zusatzboard RN-Schrittmotor zu testen/demonstrieren"
    Print
    '  -------------- Ende 128 Funk übliche _____________________
    
    
    
    'Befehle im Schrittmotorbetrieb
    'Ein RN-Schrittmotor Befehl besteht immer aus 7 Bytes, auch wenn einige Befehle
    'weniger Parameter benötigen. Wenn weniger Bytes erforderlich sind, werden die unnötigen
    'Bytes mit beliebigen Wert gefüllt und ignoriert. .Die konstante Zahl erleichtert und
    'beschleunigt die Interpretation und Verarbeitung!
    
    
    
    Const Befehl_ausschalten = 51
    Const Befehl_drehrichtung = 52
    Const Befehl_geschwindigkeit = 53
    Const Befehl_endlosdrehung = 54
    Const Befehl_schrittzahlabrufen = 102
    Const Befehl_versionstatus = 255
    
    Const Motor_1 = 1
    Const Motor_2 = 2
    
    
    Const I2crnmotorslaveadr = &H58
    Const I2crnmotorsreadlaveadr = &H59
    
    
    Dim I2cdaten(7) As Byte
    Dim Lowbyte As Byte
    Dim Highbyte As Byte
    Dim Richtung As Bit
    
    
    Dim Schritte As Long
    Dim Temp As Byte
    Dim Ltemp As Long
    Dim Umdrehungen As Single
    Dim Fahrstrecke As Word
    
    Dim Geschwindigkeit As Byte

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    wo liegt gleich das Problem ?

    Dein Codeauschnitt macht so noch nix, ausser die ganzen Variablen definieren, den Beep am Anfang und ein paar Zeilen Text per UART ausgeben.
    Das eigentliche Programm ist nicht vorhanden !

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.07.2007
    Ort
    Roboland
    Alter
    41
    Beiträge
    70
    Ich schreib es dir gerne dazu ich sitz schon lange da ich hab das vom RN umgeschrieben und wie folgt sieht es aus ich hoffe mittlerweile das es jemals funktioniert der Signal Ton zum schluss ist hörbar aber es überträgt sich nicht zum Motor Steuerboard leider gab es genau für den Port kein Test Programm das man hätte umschreiben können.

    zieh es am besten in den Compiler wegen den Bemerkungen die dabi stehen

    Declare Function am Anfang mach ich weck!

    Code:
    Declare Function Tastenabfrage() As Byte
    
    $regfile = "m128def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 64
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    Config Scl = Portd.0                                        'Ports fuer IIC-Bus
    Config Sda = Portd.1
    
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Porta.7 = 1                                                 'Pullup Widerstand ein
    Dim Taste As Byte
    Dim Ton As Integer
    
    I2cinit
    Start Adc
    Sound Portg.2 , 400 , 450                                   'BEEP
    Sound Portg.2 , 400 , 250                                   'BEEP
    Sound Portg.2 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control  V1.4 *****"
    Print "Demoprogramm um Zusatzboard RN-Schrittmotor zu testen/demonstrieren"
    Print
    '  -------------- Ende 128 Funk übliche _____________________
    
    
    
    'Befehle im Schrittmotorbetrieb
    'Ein RN-Schrittmotor Befehl besteht immer aus 7 Bytes, auch wenn einige Befehle
    'weniger Parameter benötigen. Wenn weniger Bytes erforderlich sind, werden die unnötigen
    'Bytes mit beliebigen Wert gefüllt und ignoriert. .Die konstante Zahl erleichtert und
    'beschleunigt die Interpretation und Verarbeitung!
    
    
    
    Const Befehl_ausschalten = 51
    Const Befehl_drehrichtung = 52
    Const Befehl_geschwindigkeit = 53
    Const Befehl_endlosdrehung = 54
    Const Befehl_schrittzahlabrufen = 102
    Const Befehl_versionstatus = 255
    
    Const Motor_1 = 1
    Const Motor_2 = 2
    
    
    Const I2crnmotorslaveadr = &H58
    Const I2crnmotorsreadlaveadr = &H59
    
    
    Dim I2cdaten(7) As Byte
    Dim Lowbyte As Byte
    Dim Highbyte As Byte
    Dim Richtung As Bit
    
    
    Dim Schritte As Long
    Dim Temp As Byte
    Dim Ltemp As Long
    Dim Umdrehungen As Single
    Dim Fahrstrecke As Word
    
    Dim Geschwindigkeit As Byte
    
    
    
    
    Richtung = 0
    Geschwindigkeit = 100
    
    
    Do
    
    Wait 2
                I2cdaten(1) = Befehl_endlosdrehung
                I2cdaten(2) = Motor_1
                I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
             Wait 2
                Toggle Richtung
                I2cdaten(1) = Befehl_drehrichtung
                I2cdaten(2) = Motor_1
                I2cdaten(3) = Richtung
                I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
    
    
             Wait 2
    
                If Geschwindigkeit > 40 Then
                  Geschwindigkeit = Geschwindigkeit - 20
                Else
                  Geschwindigkeit = Geschwindigkeit - 1
                End If
                Print "Geschwindigkeitsstufe: " ; Geschwindigkeit
                I2cdaten(1) = Befehl_geschwindigkeit
                I2cdaten(2) = Motor_1
                I2cdaten(3) = Geschwindigkeit
                I2cdaten(4) = 0
                I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
    
    
             Wait 2
    
                 I2cdaten(1) = Befehl_schrittzahlabrufen
                 I2cdaten(2) = Motor_1
                 I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
    
                 I2cstart
                 I2cwbyte I2crnmotorsreadlaveadr
                 I2crbyte Temp , Ack
                 Schritte = Temp
                 I2crbyte Temp , Ack
                 Ltemp = Temp * 256
                 Schritte = Schritte + Ltemp
                 I2crbyte Temp , Ack
                 Ltemp = Temp * 65536
                 Schritte = Schritte + Ltemp
                 I2crbyte Temp , Nack
                 Ltemp = Temp * 16777216
                 Schritte = Schritte + Ltemp
                 I2cstop
                 Print "Schrittanzahl:" ; Schritte
                 Umdrehungen = Schritte / 200
                 Print "Umdrehungen: " ; Umdrehungen
                 Fahrstrecke = Umdrehungen * 31.4
                 Print "Der Roboter ist " ; Fahrstrecke ; " cm gefahren "
    
    
    
              Wait 2
                I2cdaten(1) = Befehl_ausschalten
                I2cdaten(2) = Motor_1
                I2csend I2crnmotorslaveadr , I2cdaten(1) , 7
    
    
          Wait 2
    
          Sound Portg.2 , 1000 , 1000                           'BEEP
    
    
       Waitms 100
    Loop
    
    End

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    28.07.2007
    Ort
    Roboland
    Alter
    41
    Beiträge
    70
    Die Hälfte von dem ganzen würde schon reichen Hauptsache die Motoren drehen sich mal ,es muss auch kein Print dabei sein!

    Wie schon gesagt das ist das Test Programm für die Motor Steuerung umgeschrieben vom Rn Board

    Ich hab so viel gemacht aber im end evekt nichts



    Tausend Dank !!!!

Berechtigungen

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