www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR: Bascom / waitms / mit Variable


Autor: Tony Hartig (maxton)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bascom 1.11.9.3, ATMega32, STK500

Hallo,

ich hänge an folgendem Problem und komme nicht weiter:
Über einen ATMega32 lese ich am ADC0 ein analoges Signal ein, bearbeite 
es und will den Wert in einem waitms-Befehl verarbeiten:
Dim Adc0 As Word
Dim Adc01 As Single
Dim Tdelay As Single 

Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56

Start Adc

Begin:

Do

Adc0 = Getadc(0)

Adc01 = Adc0

Adc01 = Adc01 / 100

Adc01 = Round(adc01)

Tdelay = 10 + Adc01

LCD Tdelay 'funktioniert; gewollter ganzzahliger Wert zwischen 10 und 20

PORTB.0 = 1

waitms Tdelay

PORTB.1 = 1

Loop

End
Leider wird der wait-Befehl einfach übersprungen und an beiden Ausgängen 
liegt gleichzeitig ein Signal an. Woran kann es liegen?

Das Programm ist so nicht vollständig, ich habe nur das dargestellt, was 
für das Problem interessant sein sollte. Kann Bascom mit "wait" 
überhaupt Variablen verarbeiten? Dass es nicht geht, habe ich bisher nur 
über den "waitus"-Befehl in der Hilfe lesen können.

Gruß,

maxton

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weil wait und delay  außerhalb von initialisierungen  eh unsinnig sind 
^^
und tunlichst vermieden werden sollten

Autor: Tony Hartig (maxton)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das hilft mir nicht unmittelbar weiter, aber danke.
Ob es die feinste Art der Programmierung ist, sei dahin gestellt. Nur 
wenn es mit einem festen Zahlenwert geht, sollte es doch auch mit einer 
Variable gehen!?

Autor: E.T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
statt waitms tdelay:

for i = 1 to tdelay
   waitms 1
next i

der Fehler durch die paar mikrosekunden für die For-SChleife dürfte 
gering sein und sinkt mit steigendem Systemtakt noch weiter.

Autor: E.T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. und falls Deine Ports auch irgendwann wieder 0 werden sollen müßtest 
Du sie natürlich auch irgendwo wieder ausschalten.. :-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
funktioniert nicht, weil der Wert für waitms ein Word (16Bit) sein muss 
und kein Single (32Bit).

Autor: Tony Hartig (maxton)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch. Damit sollte ich schon mal weiterkommen.

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.