- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: AD Wandler will nicht :-/

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585

    AD Wandler will nicht :-/

    Anzeige

    Praxistest und DIY Projekte
    Hallo!
    ATmega8: AVCC, AGND und AREF sind geschalten!
    VCC und GND natürlich auch!
    Mein Programm:

    $regfile = "m163def.dat"

    Config Adc = Single , Prescaler = Auto
    Config Portb = Output
    Start Adc

    Dim W As Word , Channel As Byte

    Channel = 5
    Do
    W = Getadc(channel)
    If W > 0 then Portb.0 = 0 else Portb.0 = 1
    Loop
    End

    Aber es tut sich einfach nichts, wenn ich den PC.5 beschalte! (Sprich AD-Channel 5)
    Was kann ich nur tun?
    Habe am PC.5 genau 5V vom Netz mit 10k Widerstand vorgeschalten.

    Der ADWandler scheint aber einfach nicht zu reagieren!
    Wie kann ich den richtig benutzen?
    Bitte helft mir, möchte den Chip nicht abrauchen!

    MfG,
    ShadowPhoenix

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    hattest du nicht mal irgendwann geschrieben du benutzt einen ATMega8 oder ATMega16?
    Ich bin mir nicht 100% sicher, aber $regfile = "m163def.dat" hört sich für mich irgendwie so an, als wäre das für einen ATMeag163.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    58
    Beiträge
    247
    Hallo

    Welchen uC hast du den jetzt ??

    $regfile = "m163def.dat" ????

    M8 oder einen M163. Kann so nicht gehen, da der 163 für den ADC eine andere Interruptadresse verwendet.

    Trag mal ein und probiere nochmal, falls du einen MEGA 8 hast.
    $regfile = "m8def.dat"


    MFG
    Dieter

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    Ok!
    Mein Code schaut nun so aus:

    $regfile = "m8def.dat"
    Config Adc = Single , Prescaler = Auto
    Config Portb = Output
    Dim W As Word , Channel As Byte

    Start Adc
    Do
    W = Getadc(5)
    If W > 0 then Portb.0 = 0 else Portb.0 = 1
    Loop
    End

    Nur die Led leuchtet von Anfang an, das heißt: W ist von Anfang an größer als 0!
    Aber warum?
    Der ADWandler sollte doch Anfangs den Wert 0 haben?
    Habe auch schon IF W > 10 then... probiert!

    Aber W scheint auch von Anfang an größer als 10 zu sein...
    Was kann ich nur tun?

    MfG,
    ShadowPhoenix

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Warum gibst du den Wert "W" in deinem Programm nicht einfach mal mit "Print W" auf die serielle Schnittstelle aus und guckst ihn die an?
    Das ist vielleicht etwas aussagekräftiger als die LED.

    Bist du sicher, dass die LED bei Portb.0=1 leuchtet und bei Portb.0=0 aus ist? Ich glaube das könnte eventuell auch umgekehrt sein.

    Wenn 0 = Low bedeutet, würde das heisssen, dass der Port bei 0 auf GND liegt. Wenn die LED "oben" an 5V und "unten" am Port hängt, würde sie dann bei 0 leuchten und bei 1 ausgehen.

    (kann aber sein, dass ich mal wieder völlig daneben liege)

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    58
    Beiträge
    247
    Hallo

    Ober schreibst du doch, du hast 5 Volt an PIN C 5. Dann ist w natürlich immer > 0.

    5 Volt w = 1023 ,
    2,5 Volt w = 512
    0 Volt w = 0

    MFG
    Dieter

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    @recycle

    Hmm, wie kann ich mit PrintW den Wert anzeigen lassen?
    Besser: WO wird der Wert dann angezeigt?
    Einfach nur PrintW... hmm ich hab leider kein HyperTerminal!

    Du hast recht, bei 0 leuchtet meine Led, und bei 1 ist sie aus!
    Aber ich schrieb doch:

    [ WENN W grösser als 0 ist, DANN leuchte (0) ]

    @Dino Dieter

    Das Problem ist, die Led leuchtet auch, wenn ich 0V an PC.5 habe!
    Schau, ich möchte einfach nur abfragen, ob PC.5 größer ist als 0, also ob mehr als 0.000 V anliegen.
    Wenn ja, dann soll die Led leuchte, wenn nicht, dann soll die LED nicht leuchten!
    Ich bekomm das irgendwie nicht hin
    W ist immer größer als 0!

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Besser: WO wird der Wert dann angezeigt?
    Einfach nur PrintW... hmm ich hab leider kein HyperTerminal!
    Werte die du mit "Print" ausgibst werden im Terminal-Programm ausgegeben. Dass du kein "Hyperterminal" hast, sollte wohl nicht so das Problem sein, da in Bascom ein Terminalprogramm integriert ist.

    Das Problem ist, die Led leuchtet auch, wenn ich 0V an PC.5 habe!
    Was verstehst du unter "0V"? Beschaltest du den Pin für 0V gar nicht, oder legst du ihn auf Masse?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    28.04.2004
    Ort
    Nähe Köln
    Alter
    58
    Beiträge
    247
    Hallo

    Dann teste doch erstmal PORTB.0 ob er noch geht.

    do
    PORTB.0 = 0
    wait 1
    PORTB.0 = 1
    wait 1
    loop

    Habe das Programm getestet und es geht so.

    Schaff dir mal eine RS232 Verbindung zum PC. Ist doch super zum Fehler suchen.

    MFG
    Dieter

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    @recycle
    Mit 0V meine ich garnicht angeschlossen.
    Hmm nur das Terminalprogramm funzt irgendwie nicht.
    Es wird garnichts angezeigt, egal was ich ausgeben will!

    @Dieter
    RS232 hab ich keinen Programmierer usw..
    Ich arbeite mit Parallelport, ist doch kein Problem, oder?
    Der Portb funktioniert einwandfrei!

    W scheint andauernd über 0V zu sein!
    Der AVR ist neu!

    Was kann ich nur tun? (
    MfG,
    ShadowPhoenix

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress