PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Port config ATmega128



Astro
21.02.2008, 16:14
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





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

linux_80
21.02.2008, 18:14
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

Astro
21.02.2008, 19:01
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!




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

Astro
21.02.2008, 19:32
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 !!!!