- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Probleme mit ADC und digitalen Eingängen an Port B und D

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2007
    Ort
    Bruchsal
    Beiträge
    6

    Probleme mit ADC und digitalen Eingängen an Port B und D

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo zusammen

    Ich habe erst kürzlich angefangen in die Bascom Programierung für die Atmel Prozesoren einzusteigen.

    Ich habe einen ATMega32, schreibe die Programme in Bascom und nutze Ponyprog2000 als Prommer-Tool.

    Einfache digitale E/A Programme klappen soweit ganz gut.
    Jetzt habe ich mich an die analogen Eingänge gewagt.
    Ich habe einen Spannungsteiler mit 10k Poti an Pin PA0 angeschlossen und habe über den Befehl x=GETADC(0) auch schon Werte einlsesen können. Über Vergleiche von Constanten mit dem gelesenen Analogwert habe ich dann an Port C verschiedene LEDs angesprochen.Soweit so gut...

    Jetzt wollte ich aber in disesm Programm auch digitale Eingänge nutzen.
    Da Port D noch komplett frei ist wollte ich Pin PD7 nutzen um an PC7 eine LED anzusprechen. Aber der Pin PD7 reagiert nicht als Eingang.
    Ich habe auch schon diverse andere Pins von Port D und B probiert....keiner geht.
    Ohne den ADC gehen sie aber....könnt ihr mir weiterhelfen?

    hier noch mein Code:


    Code:
    $regfile = "m32def.dat"                                     ' we use the M32
    $crystal = 8000000
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    'Ausgangs/Eingangsport deklarieren
    Config Portc = Output
    Config PortD = Input
    'Ausgangs/Eingangsport auf Pull-UP
    Portc = 255
    Portd = 255
    
    'Now give power to the chip
    Start Adc
    
    'Variablendeklaration
    Dim W As Word
    
    'Programmschleife
    Do
    ' Analogwert vom Channel PA0 einlesen
      W = Getadc(0)
    
    'Auswertung wie hoch der Pegel ist und anschließenden
    'Aktivierung der dementsprechenen LEDs
      If W > 100 Then
       Portc.0 = 0
      Else
       Portc.0 = 1
      End If
    
      If W > 200 Then
       Portc.1 = 0
      Else
       Portc.1 = 1
      End If
    
      If W > 300 Then
       Portc.2 = 0
      Else
       Portc.2 = 1
      End If
    
      If W > 400 Then
       Portc.3 = 0
      Else
       Portc.3 = 1
      End If
    
      If W > 500 Then
       Portc.4 = 0
      Else
       Portc.4 = 1
      End If
    
      If W > 600 Then
       Portc.5 = 0
      Else
       Portc.5 = 1
      End If
    
      If W > 700 Then
       Portc.6 = 0
      Else
       Portc.6 = 1
      End If
    
      If portd.7 = 0 Then
       Portc.7 = 0
      Else
       Portc.7 = 1
      End If
    
    Loop
    
    End
    Ich hoffe ich habe meinen ersten Beitrag ordentlich verfasst und ihr könnt mir weiterhelfen.

    Gruß Manuel

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    wie hast Du den Schalter am Eingang angeschlossen ?

    So wie das Programm ausschaut, muss der Schalter auf Vcc sein (oder garkeine Verbindung) wenn nix gedrückt ist, und auf Masse ziehen, wenn er gedrückt ist.

    Oder lass mal das PortD = 255 weg, wenn der Schalter anders angeschlossen ist, dann kanns aber sein das der Eingang zum flattern anfängt !

    Ausserdem frägt man Eingänge mit PinX ab nicht mit PortX

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2007
    Ort
    Bruchsal
    Beiträge
    6
    Der Schalter ist auf Masse angeschlossen. und wenn ich ihn betätige dann messe ich auch dass er auf masse liegt. Das problem ist ja schon das das der Befehl Portd = 255 gar keine wirkung zeigt...normal sollte dann ja Hi-Potential am Pin anliegen bis der Schalter gedrücket wird und den Pin gen Masse zieht.

    Portd = 255 habe ich auch schon mal weggelassen.

    Ich werds morgen aber mal mit VCC probieren und Pinx abfrage statt Portx.

    Danke für den Tip. Werd das morgen nochmal gründlich ausprobieren.

    Aber prinzipiell gehts....einen binären I/O abzufragen/zuzuweißen wenn der ADC aktieviert ist oder?

    Ich meld mich morgen mit Ergebnissen...

    Gruß Manuel

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    27.12.2007
    Ort
    Bruchsal
    Beiträge
    6
    Hallo

    Jetzt funktioniert es, ich habe den falschen Befehl benutzt.
    mit PINx funktioniert es...auch wenn der ADC aktiviert ist.

    Ich hatte leider nicht viel Zeit weiterzutesten, aber am Wochenende gehts weiter, und dann probier ich auch mal die Komunikation mit RS232 über MAX232 aus.

    Nochmals vielen Dank Linux_80

Berechtigungen

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

Solar Speicher und Akkus Tests