-         

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

Thema: ADC-Wandlung mit ATMEGA16. Weiterarbeiten mit 10Bit und ASM

  1. #1

    ADC-Wandlung mit ATMEGA16. Weiterarbeiten mit 10Bit und ASM

    Anzeige

    Hi!

    Ich betreibe zwei Analogports am ATMEGA16, und kann diese erfolgreich einlesen. Nun hab ich einen 10-Bit großen Wert, den ich ja in zwei Register, oder in den SRAM oder sonst wo einlesen kann. Wie kann ich mit diesem Wert nun weiterarbeiten?
    In C gibts dafür ja Variablen, und einfache Rechnungen, aber in Assembler hänge ich gerade total fest. Ziel ist es einen Ausgang so lange auf "1" zu lassen bis der Wert z.B. 500 erreicht hat.

    Danke im voraus für eure Antworten

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Hallo,
    Ich weiß nicht, ob Du sowas suchst, hier ein Beispiel:

    Code:
    .equ Vergleichwert = 500 
    
    .def MessungL = R1
    .def MessungH = R2
    
    ;irgendwo im Code, oder ISR:
    
    in MessungL,ADCL
    in MessungH,ADCH
    
    ;jetzt mal vergleichen:
    
    cp MessungL,LOW(Vergleichwert)
    cpc MessungH,HIGH(Vergleichwert)
    brcs messung_war_kleiner_als_vergleichwert
    sbi PORTB,PB1
    messung_war_kleiner_als_vergleichwert:
    ;hier weiter im Code
    Also ganz einfach werden die Zwei Werte mit Hilfe von cp verglichen, wenn Vergleichwert größer war als der Wert in den zwei Messungregistern wird der CarryFlag gesetzt, und dann gesprungen, Du kannst auch mit hilfe von brlo,brsh,breq,brne und weiß was ich alles noch springen.

    Ich hoffe, das diese Ausführung was hilft...

    Gruß Sebastian

  3. #3
    Danke, bin schon nach einigen Stunden selbst drauf gekommen. Hab es nach ewiger sucherei in nem Tutorial gefunden. Aber verstanden hab ich es noch nicht ganz. Der erste vergleich ist mir klar, aber der zweite?!...

    Kannst du mir die Zeilen nochmal etwas genauer erläutern? Kann zwar einfach so weiterschreiben, aber würde schon gerne voll durchblicken was ich da mache.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Kannst du mir die Zeilen nochmal etwas genauer erläutern?
    Das könnt ich schon, aber das hab ich schonmal hier erklärt, schau Dir das mal an, wenn immer nochwas unklar ist frag dann einfach

    Gruß Sebastian

  5. #5
    Kann ich, wenn ich die Analogports 0 und 1 einlesen möchte, die anderen Ports von PortA als normale Eingänge weiterverwenden oder kann das evtl. sein das es nicht richtig funktioniert?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    52
    Beiträge
    134
    >Kann ich, wenn ich die Analogports 0 und 1 einlesen möchte, die >anderen Ports von PortA als normale Eingänge weiterverwenden oder >kann das evtl. sein das es nicht richtig funktioniert?

    Du kannst problemlos die anderen Ports und Pins als Aus- oder Eingang nutzen

  7. #7
    Empfiehlt es sich eigentlich alle Analogeingänge und evtl. auch alle normalen Eingänge mit einem Kondensator gegen Ground zu versehen?! Um evtl. ein Umschalten oder ähnl. durch Brummspannung oder sonstige Störungen zu verhindern?!

  8. #8
    Wollte nur mal schnell den Thread nach oben holen, weil ich denke die Frage eine Spalte weiter oben kann sicher schnell einer von euch beantworten.

    Danke im voraus...

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.02.2005
    Ort
    Erfurt
    Alter
    52
    Beiträge
    134
    @moonwalker99

    >Empfiehlt es sich eigentlich alle Analogeingänge und evtl. auch alle >normalen Eingänge mit einem Kondensator gegen Ground zu >versehen?!

    Analogeingänge: nur dann, wenn Du keine Wechselspannungen messen möchtest, bei Messungen von Gleichspannungen ist ein C sehr empfehlenswert.

    Digitaleingänge: nur dann, wenn es unbedingt nötig ist, meistens verzichte ich drauf und löse dieses Problem gern softwaremäßig.


    Bernhard

  10. #10
    Ich habe bei den Digitaleingängen bemerkt das manchmal Endschalter auslösen obwohl sie überhaupt nicht betätigt werden. Die Gleichspannungssignale sind optimal definiert, aber es scheint wohl irgendwie eine Störung aufzutreten. Nach Einbau der Kondensatoren hatte sich das problem erledigt. Welchen wert würdes du bei den Analogeingängen empfehlen?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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