-
        

Ergebnis 1 bis 6 von 6

Thema: Getadc(6.

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    03.12.2008
    Alter
    23
    Beiträge
    438

    Getadc(6.

    Anzeige

    Hi,
    Wenn ich ein Programm mit dem ADC schreibe reklamiert der Compiler immer und zwar weil ich das hier schreibe:
    Code:
    W = Getadc(6.
    Der ADC wurde initialisiert und auch die Variable W
    Der Compiler schreibt dann:
    Code:
    (or) missing [W = GETADC(6.]
    An was könnte es liegen?

    Grüsse!
    Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
    (Leonard da Vinci)

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.10.2004
    Ort
    Baoding
    Alter
    37
    Beiträge
    687
    Code:
    W = Getadc(6)
    [/code]
    Signatur??? kann ich mir nicht leisten!!!

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    03.12.2008
    Alter
    23
    Beiträge
    438
    Hi,
    Danke für die Hilfe! Nun gehts...
    Leider geht, das Programm selbst immer noch nicht wie ich wollte... es hat jetzt zwar nichts mit dem Getadc zu tun, aber ich poste es dochmal hier:
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    Config Porta.0 = Output
    Config Adc = Single , Prescaler = Auto , Refernce = Internal
    Start Adc
    
    Declare Sub _betriebsspannung().
    Const Ref = 5 / 1023
    Dim Volt As Single
    Dim Betriebsspannung as Single
    
    Main:
    Do
    Call _betriebsspannung()
    Porta.0 = 0
    While Volt < 8
    Porta.0 = 1
    waitms 500
    Wend
    Loop
    End
    
    Sub _betriebsspannung
    
    Local W as Word
    W = Getadc(1)
    Betriebsspannung = W * Ref
    Betriebsspannung = Betriebsspannung * 5.2941
    Volt = Betriebsspannung
    
    End Sub
    Mein Ziel wäre es nun, dass sobald die Spannung am ADC1 unter 8 Volt sinkt, eine LED am Porta.0 leuchtet...
    Muss ich da Hardware mässig noch was machen, damit die Spannung erkennen werden kann?

    Liebe Grüsse!
    Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
    (Leonard da Vinci)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Nach langer Pause (bin im prüfungsstress) melde ich mich auch mal wieder.

    Code:
    $regfile = "m32def.dat"
    $framesize = 60
    $swstack = 60
    $hwstack = 60
    $crystal = 1000000
    
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcdbus = 4
    Config Adc = Single , Prescaler = Auto
    Start Adc
    Config Portc.5 = Output
    Config Portc.4 = Output
    Config Portc.3 = Output
    Config Portb.2 = Output
    Config Pinb.1 = Input
    Dim W As Integer
    Dim A As Single
    Dim B As Single
    Dim C As Single
    Dim D As Single
    Dim E As Single
    Declare Sub Piep()
    Declare Sub Spannung()
    
    
    
    Portb.1 = 1
    
    Do
       W = Getadc(1)
       If 390 < W Then
          Portc.3 = 1                                           'Grün
       End If
       If 340 < W And W < 390 Then
          Portc.4 = 1                                           'Gelb
       End If
       If W < 340 Then
          Portc.5 = 1
          Call Piep                                             'Rot
       End If
       Call Spannung
    Loop
    
    End
    
    
    Sub Piep()
       Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Up , Prescale = 1
       Pwm1b = 180
       Wait 1
       Pwm1b = 0
       Wait 1
    End Sub
    
    Sub Spannung()
       A = 4.95 / 1024
       C = W * A
       D = C * 100
       E = Round(d)
       E = E / 100
       B = E * 3
       Cursor Off
       Cls
       Locate 1 , 1
       Lcd Fusing(b , "#.##") ; "V"                             'Spannung
       Wait 1
    End Sub
    Also ich lese die spannung von einem Spannunsteiler ab (3x 10k) dadurch sind 15V möglich. Für dich düfte wohl nur Spannung interressant sein. Die Zeile B = E * 3 ist eben weil ich die Spannung durch 3 teile und sie nun wieder verdreifacht werden muss.Das Grün, Gelb,... sind nur leds um die spannung in drei farben darzustellen wie sie ca ist. Piep() dient dazu ein warnsignal auszugeben wenn die spannung zu tief ist.

    mfg

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    03.12.2008
    Alter
    23
    Beiträge
    438
    Hi,
    Schön dass du dich wieder einmal meldest!
    Danke für das Programm!
    Aber eigentlich würde ich noch gerne wissen was an meinem Programm falsch ist... Was muss ich da ändern? Damits funktioniert? Denn ich finde das noch ganz gut, wenn ich da die Variable Volt habe...

    Grüsse!
    Wer keine Illusionen mehr hat, wird weiterhin existieren, aber aufgefhört haben zu leben.
    (Leonard da Vinci)

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von Da_Vinci13
    Hi,

    Call _betriebsspannung()
    Porta.0 = 0
    While Volt < 8
    Porta.0 = 1
    waitms 500
    Wend
    Ein Problem wird sein, dass wenn du einmal eine Spannung <8 gelesen hast, du nicht mehr aus der While herauskommst, weil du nicht wieder neu einliest.
    Probier es mal so:

    Code:
       While Volt < 8
          Porta.0 = 1
          Waitms 500
          Call _betriebsspannung()
       Wend

    Gruß

    Rolf

Berechtigungen

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