mikrocontroller.net

Forum: Projekte & Code 16bit Limiter in assembler ATMEGA8


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
anbei ein Limiter für 16bit Werte (atmega8)
Ist das effektiv oder geht es besser?
Kommentare erwünscht!

;--------------------------------------------------------
; Limitieren in r19:r18 auf +/-450
;
  ldi  r16,lo8(450)  ; pos Limit definieren
  ldi  r17,hi8(450)
  cp  r18,r16       ; Vergleiche
  cpc  r19,r17
  brmi  lim2
  mov  r18,r16   ; ggf. limit in r19:r18 setzen
  mov  r19,r17
   rjmp  ausgabe2
lim2:
  com  r16       ; Negation des Limits in r17:r16
  com  r17
  subi  r16,0xFF
  sbci  r17,0xFF
  cp  r18,r16   ; Vergleiche
  cpc  r19,r17
  brpl  ausgabe2
  mov  r18,r16   ; ggf. neg. Limit in r19:r18 setzen
  mov  r19,r17
ausgabe2:

;-----------------------------------------------------------------


Gruß
Stefan

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal ganz kurz erläutern für was man das braucht?
(Bin in dem Gebiet eher Anfänger und immer offen für neue "Techniken")

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas wird benötigt um z.B. Stellgrößen in einem Regelkreis sowohl 
positiv als auch negativ auf einen bestimmten Betrag zu begrenzen.

Ich verwende das hier um bei der Ansteurung eines Servos den Maximalweg 
zu begrenzen.

Eine weitere Anwendung ist z.B. die Limitierung des Integral-Anteils bei 
einem PID-Regler.
..........

Autor: Wolfram Quehl (quehl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sieh Dir mal die Anweisung NEG an, statt COM und SUB.

mfg

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für 8-Bit Operation hätte ich schon NEG (2-complement) verwendet, aber 
für 16bit muß ich das wohl byteweise machen. Daher zweimal COM in 
Verbindung mit SUBI und SBCI.

Trotzdem Danke
Stefan

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.