www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hysterese im Programm?!


Autor: Michael T (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
hab mir Programm zu recht gemacht das mit dem Mega8 eine Spannung
überwacht.

vergleich:
                   ldi  div0,low(400)
       ldi  div1,high(400)
       cp   erg0,div0
       cpc  erg1,div1
       brge schalten
       sbi  PORTD,LED
                   ret

schalten:
                   cbi  PORTD,LED
       ret

Doch wie bekomme ich eine Hysterese hin damit die Led im Grenzbereich
nicht flagert?

Wäre für jeden Tip dankbar.

Gruß Michael T

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein Tip:

lern C

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja ok will mal ned gemein werden, den Hystere Bereich erweiter, du
hast ja nen Oberen Punkt an dem dein Zustand dann wirklich "Ein" wird
und einen unteren an dem es dann "Aus" wird. Prinzip eines 1Punkt
Reglers,

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"lern C"

das ist aber nicht die Lösung des Problems.


Lösung:

manche 2 Vergleiche, je nachdem, ob die LED an oder aus ist.

Pseudocode:

if( LED = an ){
  if( i < min )
    LED = aus
}else{
  if( i > max )
    LED = an
}

Peter

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleich noch ein vergleich mit... sagen wir 420

vergleich > 420 -->led an-->schalten_an
vergleich > 400 -->led an, wert speichern, vergleich mit vorwert wenn

                   DIF>10-->schalten_an  DIF<10-->nich schalten
vergleich < 400 -->led aus-->schalten_aus


nur ne idee

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so z.b.
vergleich:
    ldi     div0,low(400)
    ldi     div1,high(400)
    cp      erg0,div0
    cpc     erg1,div1
    brlo    led_high                ;< 399  sbi PORTD,LED
    ldi     div0,low(401)
    ldi     div1,high(401)
    cp      erg0,div0
    cpc     erg1,div1
    brsh    led_low                 ;>= 401 cbi PortD,LED
    ret

led_low:
    cbi     PORTD,LED
    ret
led_high
    sbi     PORTD,LED
    ret

Autor: Michael T (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle.
Hab das ganze jetzt so gelöst:

ergleich:
       sbic PORTD,LED         ;Überspring nächsten Sprungbefehl
       rjmp led_ein           ;wenn LED im PORTD aus ist
       rjmp led_aus

led_aus:
                   ldi  div0,low(400)     ;Den Wert 400 zum
       ldi  div1,high(400)    ;vergleichen laden
       cp   erg0,div0         ;und mit dem Ergebnis der
       cpc  erg1,div1         ;A/D Wandlung vergleichen
       brlo led_aus1          ;Ist Ergebnis < Led aus
                   ret                    ;zurück

led_aus1:
                   sbi  PORTD,LED         ;Led aus
       ret                    ;zurück

led_ein:
                   ldi  div0,low(404)     ;Den Wert 404 zum
                   ldi  div1,high(404)    ;vergleichen laden
       cp   erg0,div0         ;und mit dem Ergebnis der
       cpc  erg1,div1         ;A/D Wandlung vergleichen
       brsh led_ein1          ;Ist Ergebnis >= Led ein
                   ret

led_ein1:
                   cbi  PORTD,LED         ;Led ein
       ret                    ;zurück

Gruß
    Michael T

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.