www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Probleme bascom


Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich will gewisse Analogwerte im uC wandeln und es an einem port 
ausgeben. Ich habe einen Atmega16 im TQFP gehäuse.

könnt ihr mal drüberschauen?


$regfile = "m16def.dat"
$crystal = 1000000
$baud = 9600
$hwstack = 32                                               ' default
use 32 for the hardware stack
$swstack = 10                                               'default use
10 for the SW stack
$framesize = 40                                             'default use
40 for the frame space


Config Porta = Input
Config Portb = Output

Config Adc = Single , Prescaler = Auto
Start Adc

Print "START CONVERTER"
Dim W As Integer

Do

      W = Getadc(0)

      Select Case W
         Case Is >= 205 : Portb = &B00000001
         Case Is >= 232 : Portb = &B00000010
         Case Is >= 259 : Portb = &B00000011
         Case Is >= 286 : Portb = &B00000100
         Case Is >= 313 : Portb = &B00000101
         Case Is >= 340 : Portb = &B00000110
         Case Is >= 367 : Portb = &B00000111
         Case Is >= 394 : Portb = &B00001000
         Case Is >= 421 : Portb = &B00001001
         Case Is >= 448 : Portb = &B00001010
         Case Is >= 475 : Portb = &B00001011
         Case Is >= 502 : Portb = &B00001100
         Case Is >= 529 : Portb = &B00001101
         Case Is >= 556 : Portb = &B00001110
         Case Is >= 583 : Portb = &B00001111
         Case Is >= 610 : Portb = &B00011111
         Case Is >= 637 : Portb = &B00101111
         Case Is >= 664 : Portb = &B00111111
         Case Is >= 691 : Portb = &B01001111
         Case Is >= 718 : Portb = &B01011111
         Case Is >= 745 : Portb = &B01101111
         Case Is >= 772 : Portb = &B01111111
         Case Is >= 799 : Portb = &B10001111
         Case Is >= 826 : Portb = &B10011111
         Case Is >= 853 : Portb = &B10101111
         Case Is >= 880 : Portb = &B10111111
         Case Is >= 907 : Portb = &B11001111
         Case Is >= 934 : Portb = &B11011111
         Case Is >= 961 : Portb = &B11101111
         Case Is >= 988 : Portb = &B11111111
      End Select
      Print W
Loop
End

Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja:


Ich bekomme keine ausgangssignale

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Config Porta = Input
Config Portb = Output

...schau bei Roboternetz.de

Bascom hat eine eigenartige Input/Output - regelung.
Deine stimmt nicht.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es bei bascom zulässig in den case Labels eine Bedingung anzugeben? 
Kann auf die Schnelle mit Google nichts darüber finden.

Autor: Harry Up (harryup)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,
in deiner select case wird es auch keine Ausgangssignale geben, wenn W 
unter 205 ist, dafür gibt es keine Anweisung (könnte ja heissen: case is 
< 205). Für alle Werte, die über 205 liegen, ist in jedem Fall die erste 
Bedingung (case is >= 205) gültig. Bei allen Werten darüber (z.B. 610) 
kann die entsprechende Anweisung nicht ausgeführt werden, weil die erste 
gültige ja schon mit der ersten (>= 205) ausgeführt wird.
Die case Verzweigung ist für den angedachten Zweck (Bereich1: 205-232, 
Bereich2: 232-259, etc) richtig gecodet, die Zuweisungen müssen aber 
absteigend erfolgen, so dass die erste Bedingung dem höchsten Bereich 
entspricht.

select case W
   case is >= 980 : Anweisung     ' Wertebereich 980 - 1024
   case is >= 950 :               ' Wertebereich 950 - 979
   .
   .
end select

So herum tät ein Schuh draus werden. Gilt übrigens nicht nur für Bascom, 
das Problem einer unlogischen Definition ergäbe in jeder anderen Sprache 
dasselbe Resultat.
Grüssens, harry

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antworten


Es klappt...

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.