PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MD 25 Board Drehrichtung ändern



hartlralph
01.11.2010, 13:46
Hallo zusammen,

ich habe ein kleines Problem mit dem MD25 Board. Solange ich mit meinem Bascam Programm Dehzahlwerte zwischen 129 und 255 vorgebe funktioniert mein Programm einwanfrei. Sobald ich allerdings Drehzahlwerte in die andere Richtung vorgebe 0-127 übernimmt der Motor zwar einmal die Drehzahl allerdings hängt sich dann meine Bascom Programm auf. Verwende einen ATmega88 mit Hardware I2C.

hier noch kurz der Quelltext, vielleich sieht ja jemand spontan wo das roblem liegt.

$regfile = "m88def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$lib "i2c_twi.lbx" ' Für Hardware TWI

$crystal = 8000000 'Quarzfrequenz
$baud = 19200


Config Scl = Portc.5 'Ports fuer IIC-Bus
Config Sda = Portc.4
Config Portb.6 = Output
Config Twi = 400000 ' Init TWBR und TWSR
Config I2cdelay = 10

Tast1 Alias Pind.2
Tast2 Alias Pind.3
Tast3 Alias Pind.4
Config Tast1 = Input
Config Tast2 = Input
Config Tast3 = Input
Config Portb.6 = Output
Config Portb.7 = Output
Led1 Alias Portb.6
Led2 Alias Portb.7
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
I2cinit
Dim Wert As Byte


Do

If Tast1 = 0 Then
I2cstart
I2cwbyte &HB0
I2cwbyte 16 'Leseregister festlegen
I2cwbyte 32 'Leseregister festlegen

I2cstart
I2cwbyte &HB0
I2cwbyte 15 'Leseregister festlegen
I2cwbyte 0 'Leseregister festlegen


I2cstop
I2cstart
I2cwbyte &HB0
I2cwbyte 0 'Leseregister festlegen
I2cwbyte 128 'Leseregister festlegen
I2cstop



End If

If Tast2 = 0 Then

I2cstart
I2cwbyte &HB0
I2cwbyte 0 'Leseregister festlegen
I2cwbyte 255
I2cstop


End If


If Tast3 = 0 Then

I2cstart
I2cwbyte &HB0
I2cwbyte 0 'Leseregister festlegen
I2cwbyte 0
I2cstop
Set Led1

End If
Loop
End

Vielen Dank schon mal im vorraus.

MfG Ralph

WL
02.11.2010, 13:22
If Tast1 = 0 Then
I2cstart
I2cwbyte &HB0
I2cwbyte 16 'Leseregister festlegen
I2cwbyte 32 'Leseregister festlegen

>>>hier fehlt meiner Meinung nach das "I2cstop"


I2cstart
I2cwbyte &HB0
I2cwbyte 15 'Leseregister festlegen
I2cwbyte 0 'Leseregister festlegen


I2cstop
I2cstart
I2cwbyte &HB0
I2cwbyte 0 'Leseregister festlegen
I2cwbyte 128 'Leseregister festlegen
I2cstop



End If

hartlralph
03.11.2010, 12:03
Danke für deine Antwort. Allerdings ist das nicht mein Problem. Der Stop befehl ist warscheinlich beim rumprobieren irgendwie rausgeflogen.
Grundsätlich funktioniert das Programm ja. Nur wenn ich Werte zwischen 0 und 127 als Drehzahl vorgebe tretten Probleme auf.

WL
04.11.2010, 14:35
Config Twi = 400000 ' Init TWBR und TWSR
Config I2cdelay = 10

Versuch' mal nur:
Config Twi = 100000
mehr als 100Khz mag das Ding nicht.