-
        

Ergebnis 1 bis 10 von 10

Thema: Analogwert einlesen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.05.2005
    Beiträge
    9

    Analogwert einlesen

    Anzeige

    Hallo,
    ich habe da ein Problem mit dem Einlesen eines Analogwertes mit Bascom.
    Das Programm sollte eigendlich den Wert am Port c0.0 einlesen und am Terminalfenster ausgeben. Mein Problem ist halt, das überhaupt keinen Wert einlesen kann, als wenn der Port nicht aktiviert ist, aber ich weiss einfach nicht weshalb. Kann das was mit den Fusebits zu tun haben?

    Ich selber habe das Board von Myavr.de und den Mega8.


    Kann mir da vielleicht jemand einen heissen Tip geben, was das Problem sein könnte?


    Code:
    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 9600
    
    
    Dim Result As Word
    Dim Sresult As Single
    Dim Channel As Byte
    
    Config Portb = Output
    Portb = &HFF
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Set Sfior.adhsm
    
    Channel = 0
    
    Start Adc
    
    Do
       Gosub Flash
       Result = Getadc(channel)
       Print "Ch:" ; Channel ; "count:" ; Result ;
       Sresult = Result * 5
       Sresult = Result / 1024
       Print "Volt: " ; Fusing(sresult , "#.###")
       Waitms 50
    
    Loop
    
    
    End
    
    
    Flash:
       Reset Portb.0
       Waitms 10
       Set Portb.0.0
       Return

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    im simulator läuft das ganze einwandfrei... ist mit der hardware alles in ordnung? hast du die zu messende spannung am richtigen pin angeschlossen?

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    25.05.2005
    Beiträge
    9
    hi,
    bei mir läufts auch, aber die simulation zeigt bei mir immer 0.0 Volt an. habe auch schon aus verzeifung alle es an alle ports angeschossen, ohne jeglichen erfolg. Habs auch mal bei jemand anderes mit dem mega 32 probiert, aber da gings auch nicht.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    [quote="scream!!!!"]hi,
    bei mir läufts auch, aber die simulation zeigt bei mir immer 0.0 Volt an.[quote]

    regler im "hardware simulation" fenster hochgedreht?


    ansonsten teste mal, ob der port überhaupt eingermaßen in ordnung ist, indem du ihn zb als ausgang schaltest und ne led blinken lässt, bzw als eingang und nen taster dran...

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Avcc ist auch angeschlossen?
    Lass mal den Teil Reference = Avcc weg und probier es nochmal.
    Die zu messende Spannung liegt am ADC als Spannungsteiler zu Masse an? (Nicht direkt die Spannung auf den ADC geben. Das funktioniert nicht)

    Geht es am AVR nicht oder im Simulator nicht? Soll es nur am Simulator laufen?

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    Hallo,

    muss mich dann doch noch mal einmischen:

    Sresult = Result * 5
    Sresult = Result / 1024
    Print "Volt: " ; Fusing(sresult , "#.###")

    Da kann dann ja nur 0,0 rauskommen.

    gemeint ist vermutlich:

    result = Result * 5
    result = Result / 1024
    sresult = result
    Print "Volt: " ; Fusing(sresult , "#.###")

    edit: Besser..

    Sresult = result * 5
    Sresult = Sresult / 1024
    Print "Volt: " ; Fusing(sresult , "#.###")

    Das Reference = Avcc sollte beim Mega8 wirklich weggelassen werden, dürfte aber auch keine negativen Auswirkungen haben.

    Henrik

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Sehr guter Einwand

    Ist nur die Frage ob Word und Single und Fusing dann einfach so zusammenarbeiten. Ist auch eine weitere mögliche Fehlerquelle, die man ausschliessen sollte wenn es so noch nicht funktioniert.

    Noch ein Tipp:
    Da du mehrmals messen willst empfiehlt es sich ADC nicht als "Single" sondern als "Free" laufen zu lassen. Damit werden die Messungen etwas schneller durchgeführt.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    Zitat Zitat von Marco78
    Sehr guter Einwand

    Ist nur die Frage ob Word und Single und Fusing dann einfach so zusammenarbeiten. Ist auch eine weitere mögliche Fehlerquelle, die man ausschliessen sollte wenn es so noch nicht funktioniert.
    Das funktioniert, keine Bange. Solange das Word vor der formatierten Ausgabe in eine Single-Variabe gewandelt wird (und das passiert durch einfache Zuweisung - vergl. Hilfe) gibt es da keine Probleme.

    Henrik

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich glaub', du kannst noch ein's draufsetzen und die const-Zahl vom Compiler vorher ausrechnen lassen (oder vom Taschenrechner), damit er zur Laufzeit nicht zweimal Floatrechnen muß
    const fact = 5 / 1024
    sResult = result ' konversion in Float
    sResult = sResult * fact ' rechnen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    25.05.2005
    Beiträge
    9
    HI, danke für eure Hilfe. Nun läuft es auch.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •