www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommazahlen in Bascom?


Autor: Jan Weber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe folgendes Problem:
Um ein Servoansteuerung zu programmieren muss ichvon 1ms bis 2ms
warten.
Diese Zeitspanne definiert die Stellung des Servos.
Wie kann ich Kommazahlen in eine Variabele Formen bringen?
Hier mein prog das nicht funzt:

$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
declare sub serv(a as integer)
dim a as integer
dim b as integer
dim i as integer
dim y as integer

do
for y = 0 to 100
call serv(y)
wait 2
next
for y = 100 to 0 step -1
call serv(y)
wait 2
loop


sub serv(a as integer)                   "a = zahl 0-100
a = a / 100                              "a = zahl 0 - 1
a = a + 1                                "a = zahl 1 - 2
b = a / 2
b = 20 - b                               "b = zahl 19,5 - 20

for I = 1 to 100
portd.0 = 0
waitms B
portd.0 = 1
waitms A
next
end sub

Leider kann man nicht waitus benutzen weil hier die wartezeit nicht
variabel sein darf. Hat jemand eine Idee was ich machen kann?
Mit freundlichen Grüßen
Jan Weber

PS: Der Befehl "Servo" von Bascom ist für mich nichst ausreichend,
weil das Servo da ca. 10grad große schritte macht.

Autor: Sebastian Heyn (basti_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für bascom fragen besser roboternetz.de/phpBB2 verwenden...
erfahrungsgemäß sind da mehr bascom benutzer

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kommazahlen kann man mit dim var as single generieren.

Unter BASCOM gibt es schon Routinen für die Servoansteuerung.
such mal unter config servo

Autor: Jan Weber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Danke!
werd ich direckt mal mit single versuchen.
möcht nicht den Servo Befehl benutzen, weil das Servo dann 10Grad
schritte macht!
MfG
Jan

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warten ist immer schlecht ....der
AVR kann dann nichts anderes machen .
Besser einen Interrupt alle (100ms ?)
diese zählen und je nach Servostellung Portpin
setzen oder rücksetzen


außerdem mußt du das Servosignal immer „halten“ und
kannst das nicht nur mal kurz aufrufen ,
wenn die Impulse ausfallen verändert auch das Servo seine
Stellung wieder (oder ist das heute anders als früher?)

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@HansHans: Was soll der Interrupt alle 100ms machen, wenn das Signal nur
1-2ms lang ist? ;)
Da Servos auf einen Impuls warten, verharren sie auch in ihrer letzten
Position, sofern von Aussen keine Kraft einwirkt.

@Jan: (Hast du was mit Football zutun?) Kannst du nicht einen der Timer
benutzen und dann per Compare-Register /-Interrupt die Signale
erzeugen?
Bei jedem Timer-Überlauf werden die Pins gesetzt, bei Erreichen des
Compare-Wertes (nicht CTC), wird der jeweilige Pin gelöscht.
Der Mega8 sollte das können (ob Bascom sowas unterstützt, weiß ich
nicht. In C geht es [problemlos]...)

Autor: HansHans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-- >Was soll der Interrupt alle 100ms machen, wenn das Signal nur 1-2ms
lang ist?
OK, ist logisch war halt nicht genau bedacht, dann halt schneller ....
-- >Da Servos auf einen Impuls warten, verharren sie auch in ihrer
letzten Position.
Das macht die sache einfacher ,
dann nehme ich meine Aussage zurück ....
Das Servo welches ich hier habe läuft in die Endlage :-(

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.