-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Interrupt ADC

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.04.2006
    Ort
    Stade
    Alter
    34
    Beiträge
    19

    Interrupt ADC

    Anzeige

    Mahlzeit,

    ich habe vor, den Interrupt des ADC's zu verwenden, doch leider wird dieser Interrupt nicht durch die Analogports ausgelöst ...

    Siehe Code:

    Code:
    $regfile = "m32def.dat"
    $crystal = 8000000
    $baud = 19200
    
    Config Adc = Free , Prescaler = Auto , Reference = Avcc
    
    Start Adc
    
    Enable Interrupts
    Enable Adc
    On Adc Auswertung
    
    Do
     nop
    Loop
    
    Auswertung:
    Disable Adc
    
     Print Getadc(0)
    
    Enable Adc
    Return
    Return
    Hat jemand eine Idee, wie ich den Interrupt für Analogeports benutze ?

    Danke und Gruß

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.04.2005
    Beiträge
    178
    Hallo Night_MaKu,

    ein ADC Interrupt wird dann ausgelöst, wenn eine Analog-Digital-Wandlung abgeschlossen ist. Da du im Hauptprogramm keinen Wandler-Vorgang startest, wird der Interrupt nie ausgelöst. Wenn du den Wandlervorgang in der Interruptroutine für den ADC auslöst, kriegst du eine Endlos-Schleife, da der Interrupt immer wieder sich selbst aufruft, wenn die A/D-Wandlung fertig ist.
    Welcher Zustand des Eingangs soll denn den Interrupt auslösen? Oder besser, was willst du denn messen?

    felack

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.04.2006
    Ort
    Stade
    Alter
    34
    Beiträge
    19
    Hallo felack,

    ich habe an einem Analogport einen Druckfühler. Der Druckfühler liefert Pulse im Bereich von 0V / 4V mit einer Frequenz von 0,5Hz - 2Hz. Es sind bereitz alle Digitalports belegt, sodas ich einen AD-Port ähnlich eines Digitalports benutzen möchte. Mit anderen Worten, ich will die Pulse am AD-Port zählen.

    Gruß
    Matthias

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    Zitat Zitat von Night_MaKu
    Hallo felack,

    ich habe an einem Analogport einen Druckfühler. Der Druckfühler liefert Pulse im Bereich von 0V / 4V mit einer Frequenz von 0,5Hz - 2Hz. Es sind bereitz alle Digitalports belegt, sodas ich einen AD-Port ähnlich eines Digitalports benutzen möchte. Mit anderen Worten, ich will die Pulse am AD-Port zählen.

    Gruß
    Matthias
    Dann gehe doch den einfachen Weg und konfiguriere den Port einfach als Digitalport und werte ihn z.B. mit PULSEIN aus. Da hat der nix dagegen, auch wenn er ais A/D-Eingang dienen kann.

    Grüße
    Henrik

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    11.04.2006
    Ort
    Stade
    Alter
    34
    Beiträge
    19
    Hallo Henrik,

    leider werden einige AD-Ports auch als AD-Ports genutzt.

    Gruß
    Matthias

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

    leider werden einige AD-Ports auch als AD-Ports genutzt.

    Gruß
    Matthias
    Das stört nicht. Gemischter Betrieb ist ohne Probleme möglich.

    Grüße
    Henrik

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    11.04.2006
    Ort
    Stade
    Alter
    34
    Beiträge
    19
    Hallo Henrik,

    also:

    Code:
    Config Adc = Free , Prescaler = Auto , Reference = Avcc 
    
    config porta.0 = input
    Richtig so ?

    Gruß
    Matthias

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

    Bingo! - Genau so!

    Viel Erfolg und Grüße
    Henrik

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    11.04.2006
    Ort
    Stade
    Alter
    34
    Beiträge
    19
    Hallo Henrik,

    das war einfach ...

    jetzt das nächste Problem. Da leider alle Digitalports belegt sind und diese Messung leider eine zeitkritisch Sache von vielen ist, hab ich jetzt wohl ein "kleines" Problem. Ich habe ich schon versucht "Pulsein" zu verwenden, funktioniert auch, bremst aber leider. Währe auch nicht das Problem, aber andere "Subs" und "Functions" sind Zeitabhängig und müssen jede Sekunde aufgerufen werden, welches den Schwierigkeitsgrad leit erhöht ...

    Gruß
    Matthias

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.04.2005
    Beiträge
    178
    Wenn das ganze zeitkritisch ist, solltest du den Drucksensor an Int0, Int1 oder Int2 anschließen und den Impuls per Interrupt auswerten. Leider hat der ATmega32 ja keinen Pin Change Interrupt.

    felack

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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