Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC-Wandlung mit ATMEGA16. Weiterarbeiten mit 10Bit und ASM
moonwalker99
14.03.2006, 11:47
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
Hallo,
Ich weiß nicht, ob Du sowas suchst, hier ein Beispiel:
.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
moonwalker99
14.03.2006, 18:19
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.
Kannst du mir die Zeilen nochmal etwas genauer erläutern?
Das könnt ich schon, aber das hab ich schonmal hier (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=11488&highlight=assembler+anf%E4nger)erklärt, schau Dir das mal an, wenn immer nochwas unklar ist frag dann einfach
Gruß Sebastian
moonwalker99
18.03.2006, 10:24
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?
Bernhard.Erfurt
22.03.2006, 01:02
>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
moonwalker99
22.03.2006, 15:59
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?!
moonwalker99
23.03.2006, 08:42
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...
Bernhard.Erfurt
23.03.2006, 08:47
@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
moonwalker99
23.03.2006, 11:14
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?
Bernhard.Erfurt
23.03.2006, 12:03
>Welchen wert würdes du bei den Analogeingängen empfehlen?
Ich würde ein RC-Glied bevorzugen, z.B. R= 1....10k und C=1...10µF
Bernhard
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.