PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Servobefehl



dynamex2k
30.04.2006, 22:32
Hallo,
Ich will mit einer mega8 ein Servo ansteuern. Dies soll über i2c geschehen.
Dazu habe ich mir die i2cslave.lib von MCS Electronics gekauft. Die Lib greift auf den Timer0 zu.
Mein Problem besteht nun darin, das ich den Servobefehl nicht anwenden kann, da er auch auf den Timer0 zugreift. Die Lösung wäre das Servo über Timer1 anzusteuern. Hat jemand nen Quelltext dazu?

linux_80
30.04.2006, 23:09
Hallo,

kann man die Slavelib nicht so configurieren, das die mit Hardware- TWI läuft, dann brauchts nämlich keinen Timer ?!

Timer ist nur für Soft-TWI, der Mega8 kann das aber schon Hardwaremässig.

sulu
01.05.2006, 06:49
Ganz kurz ne zwischen Frage:
Kann man das so machen, oder kann man keine Servoposition abfregen?

servo(1) = 50
waitms 2000
servo(1) = 150
if servo (1) = 110 then .....


Dim A As Word
Dim B As Word
Dim C As Word

Config Servos = 2 , Servo1 = Porta.0 , Servo2 = Porta.1 , Reload = 10
Config Pina.0 = Output
Config Pina.1 = Output
Config Pina.2 = Output
Enable Interrupts
A Alias Servo(1)
B Alias Servo(2)
Move:
Do

A = 51
A = 52
A = 53
A = 54
A = 55
A = 56
A = 57
A = 58
A = 59
A = 60
A = 61
A = 62
A = 63
A = 64
A = 65
A = 66
If A = 51 Then B = 101
If A = 52 Then B = 102
If A = 53 Then B = 103
If A = 54 Then B = 104
If A = 55 Then B = 105
If A = 56 Then B = 106
If A = 57 Then B = 107
If A = 58 Then B = 108
If A = 59 Then B = 109
If A = 60 Then B = 110
If A = 61 Then B = 111
If A = 62 Then B = 113
If A = 63 Then B = 114
If A = 64 Then B = 115
If A = 65 Then B = 116
If A = 66 Then B = 117



Waitms 1000
A = 65
A = 64
A = 63
A = 62
A = 61
A = 60
A = 59
A = 58
A = 57
A = 56
A = 55
A = 54
A = 53
A = 52
A = 51
If A = 51 Then B = 101
If A = 52 Then B = 102
If A = 53 Then B = 103
If A = 54 Then B = 104
If A = 55 Then B = 105
If A = 56 Then B = 106
If A = 57 Then B = 107
If A = 58 Then B = 108
If A = 59 Then B = 109
If A = 60 Then B = 110
If A = 61 Then B = 111
If A = 62 Then B = 113
If A = 63 Then B = 114
If A = 64 Then B = 115
If A = 65 Then B = 116
If A = 66 Then B = 117

Waitms 1000
Loop
[/code]

dynamex2k
01.05.2006, 09:27
Hallo,

kann man die Slavelib nicht so configurieren, das die mit Hardware- TWI läuft, dann brauchts nämlich keinen Timer ?!

Timer ist nur für Soft-TWI, der Mega8 kann das aber schon Hardwaremässig.


Kannst du mir eventuell einen Tip geben, wie man die lib so configuriert?

Danke schon mal für die schnelle Antwort.

PicNick
01.05.2006, 09:31
Beim Bascom isses meistens so, daß es zwei Libraries gibt, eine für SW-I2C und eine für HW. letztere muß man ev. durch "$LIB= " dazutun.
Name dieser Lib (muttu gucken) wahrscheinlich irgendwas mit "xx_TWI.LBX" . Das ist aber Spekulation.

hrei
01.05.2006, 09:34
Hallo,



kann man die Slavelib nicht so configurieren, das die mit Hardware- TWI läuft, dann brauchts nämlich keinen Timer ?!


man kann, besser gesagt, es wird gleich eine passende LIB mit dem Namen "i2C_twi-slave.lbx" mitgeliefert. Da werden dann keine Timer verschwendet und die Library ist auch insgesamt leichter zu handhaben.

@sulu
Die Sevoposition läßt sich so nicht auslesen.

@dynamex2k

Wie die Libs benutzt werden, steht in den Beispielprogrammen und den PDFs.

Grüße
Henrik

PicNick
01.05.2006, 09:38
@Hrei, wie immer ein Wissender: Ist bei der Bascom-Slave Library eigentlich ein Multimasterbetrieb abgedeckt ?

hrei
01.05.2006, 09:45
Hallo Robert,

Ist bei der Bascom-Slave Library eigentlich ein Multimasterbetrieb abgedeckt ?
Leider, leider nein :-(. BTW: Es werden auch nur die kompilierten Versionen der LIBs mitgeliefert. Für Modifikationen etwas unbequem.

Grüße
Henrik

PicNick
01.05.2006, 09:54
*grmpf*, danke. D.h., ich muß mir das eh' selber schreiben. (Für die paar € hätt sich das nicht ausgezahlt). Naja, vielleicht kann's ja dann noch wer brauchen. Schönen Feiertag noch !

dynamex2k
01.05.2006, 13:43
habe das ganze mit der hardware twi gelöst
funktionier super.
danke für eure Hilfe