Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Assembler für Byteport und schrittmotoren Kategorie: Programmierung ASM (von Rene Jahn - 20.12.2010 19:27)
Rene Jahn nutzt:  CC1-M-Unit V1.1
hallo leute,

habe nach langer zeit mich mal wieder mit meiner ccontrol 1 und somit meinem kleinen roboter-auto beschäftigt. soweit funktioniert alles recht gut, er erkennt hindernisse fährt zurück und dreht um.

hardware:
kleiner metallrahmen (metallbaukasten)
2 schrittmotoren
2 leistungstreiber (l293d)
1 sharp mess-sensor (gp2d12)

jetzt möchte ich gern mal testen die schrittmotoren über assembler anzusteuern - aber irgendwie weiß ich nicht recht wie? habe zwar schon ein kleines assembler prog zusammen aber die schrittmotoren zabbeln nur.

kann ich einfach das bitmuster der basic tabellen in assembler übernehmen?

danke euch für die hilfe - mfg rene & frohes fest euch allen ....


 
mein basic-code (läuft gut)

'############################################################
'#
'# LODERO Steuerprogramm
'# 13.12.2010
'# lodero.bas
'#
'# © 2001 - 2010 René Jahn
'#
'############################################################
'#
'# Definitionen der Port
'# Definitionen der Variablen
   Define MotorPort        Byteport[1]  'Motor links und rechts
   Define LEDPort          Byteport[2]  'LED (rote LED = Stoplicht)

   Define GP2_Sensor       AD[1]'IR Abstandssensor
                                '
                                'ca. 10cm = 240
                                'ca. 15cm = 170
                                'ca. 20cm = 140
                                'ca. 30cm = 100

   Define tabstep          Word 'Schritte für Tabellen (Bitmuster MotorPort)
   Define steps            Word 'Schritte für Motoren
   Define speed            Word 'Geschwindigkeit für Motoren (Voll- oder Halbschritt)
                                '
                                'Vollschritt
                                '100 Schritte = 1/2 Umdrehung (ca. 8,5 cm Fahrweg)
                                '200 Schritte =   1 Umdrehung (ca. 17 cm Fahrweg)
                                '
                                'Halbschritt
                                '100 Schritte = 1/4 Umdrehung (ca. 4,2 cm Fahrweg)
                                '200 Schritte = 1/2 Umdrehung (ca. 8,5 cm Fahrweg)
                                '400 Schritte =   1 Umdrehung (ca. 17 cm Fahrweg)
                                '
                                'Halbschritt
                                '210 Schritte =  90° Drehung
                                '420 Schritte = 180° Drehung
                                '840 Schritte = 360° Drehung

   Define i                Word 'Zähler

'###########################################################
'#
'# Initialisierung
'# alle Ports Off
#init
     MotorPort = &B00000000
     LEDPort = &B00000000



'############################################################
'#
'# Initialisierung der Messschleife
#initloop
    steps = GP2_Sensor 'Abstand als Schritte übernehmen

    'ca. 15 cm Entfernung
    If GP2_Sensor <= 170 Then gosub go_low Else gosub go_back

goto initloop

'###########################################################
'#
'# Funktionen zum Fahren
#go_high
   For i = 1 to steps
       tabstep = tabstep + 1
       looktab m_voll, (tabstep and 3), MotorPort
   Next
   return

#go_low
   For i = 1 to steps
       tabstep = tabstep + 1
       looktab m_halb, (tabstep and 7), MotorPort
   Next
   return

#go_back
   For i = 1 to steps
       tabstep = tabstep - 1
       looktab m_halb, (tabstep and 7), MotorPort
   Next
   return

#go_backturn
   For i = 1 to steps
       tabstep = tabstep - 1
       looktab m_halb, (tabstep and 7), MotorPort
   Next


   return

#turn_left
   For i = 1 to steps
       tabstep = tabstep + 1
       looktab turn_halb, (tabstep and 7), MotorPort
   Next
   return

#turn_right
   For i = 1 to steps
       tabstep = tabstep - 1
       looktab turn_halb, (tabstep and 7), MotorPort
   Next
   return

'############################################################
'#
'# Tabellen (Bitmuster) für Schrittmotoren
'beide Motoren
table m_voll 'schnell
      85 153 170 102
tabend
table m_halb 'langsam
      85 17 153 136 170 34 102 68
tabend

'Drehen
table turn_voll 'schnell
      86 154 169 101
tabend
table turn_halb 'langsam
      84 22 146 138 168 41 97 69
tabend

'Motor Links
table ml_voll 'schnell
      5 9 10 6
tabend
table ml_halb 'langsam
      5 1 9 8 10 2 6 4
tabend

'Motor Rechts
table mr_voll 'schnell
      80 144 160 96
tabend
table mr_halb 'langsam
      80 16 144 128 160 32 96 64
tabend

 Antwort schreiben

Bisherige Antworten:

Re: Assembler für Byteport und schrittmotoren (von Jürgen - 21.12.2010 19:05)
    Re: Assembler für Byteport und schrittmotoren (von Rene Jahn - 27.12.2010 20:09)