-
Port config ATmega128
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
-
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 !
:-k
-
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
-
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 :roll: evekt nichts
Tausend Dank !!!!