Registerinhalte zusammenfassen/addieren Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Registerinhalte zusammenfassen/addieren |
|
|
|
|
BID = 879550
Kleinspannung Urgestein
     
Beiträge: 13374 Wohnort: Tal der Ahnungslosen
|
|
Hallo Männers!
Ich bräuchte mal etwas Hilfe/Denkanstösse bei binärer Arithmetik.
Irgendwie war ich da wohl grad Kreide holen...
Wenn ich den ADC (beim Mega8) mit 10 Bit laufen lasse,(mit 8 Bit kann ichs im Schlaf)hab ich dann im Register ADCH die ersten 8 Bit,im Register ADCL (Bit 7 und 6) dann die restlichen beiden.
Wie addiere ich das dann,das es zum Schluss als Wert in einer Variablen steht?
Ich könnte/kann mir es einfach machen,da ich eh nur mit Bascom arbeite.
Da mach ich dann:
Dim X as Word
X = Getadc(0)
Den Rest macht Bascom,bzw. der Compiler.
Aber ich möchte gern verstehen,was da passiert,bzw "gerechnet" wird.
Für den Fall,das ich das mal händisch machen will/muß.
Danke!
Eilt aber nicht.
Edit:
Wo ist eigentlich Jornbyte abgeblieben?
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
[ Diese Nachricht wurde geändert von: Kleinspannung am 14 Mär 2013 22:44 ] |
|
BID = 879554
clembra Inventar
     
Beiträge: 5402 Wohnort: Weeze / Niederrhein
|
|
Tach Kleinspannung,
ich würde mal sagen mit einem Carry-Bit (carry=tragen, befördern) und reichlich Rechts-Schieberei. Etwa nach dem Muster: (H:High, L:Low, J..A=>ADC-Bits)
H:JIHGFEDC, L:BA000000
High-Byte nach rechts schieben (LSR) - Bit C ist im Carry-Bit (SREG)
Low-Byte nach rechts rollen (ROR) - Bit C aus Carry-Bit wird angehängt, 0 kommt ins Carry-Bit
H:0JIHGFED, L:CBA00000
High-Byte nach rechts schieben
Low-Byte nach rechts rollen
H:00JIHGFE, L:DCBA0000
....
H:000000JI, L:HGFEDCBA
Der Trick ist, dass man vorher zwei 8Bit-Register hat und anschließend zwar eine Variable hat, diese aber 16bit breit ist. Normalerweise kann man einfach Low und High-Byte aneinander hängen, durch die Anordnung am "oberen Ende" muss geschoben werden.
Edit/Korrektur: Nicht Transfer-Bit, sondern Carry-Bit.
_________________
Reboot oder be root, das ist hier die Frage.
[ Diese Nachricht wurde geändert von: clembra am 14 Mär 2013 22:58 ] |
|
BID = 879567
perl Ehrenmitglied
       
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| das es zum Schluss als Wert in einer Variablen steht? |
Dazu musst du dir erst einmal eine Variable zulegen, in welche die 10 Bit hineinpassen. Der 8-Bit µC kan das ja nicht per se.
Vorzugsweise werden das wohl 2 Byte sein, aber wenn du Gleitkommaarithmetik damit machen willst, braucht man standardmäßig 4 Byte oder sogar das Doppelte.
Das Schöne am Gleitkomma ist, daß der Programmierer sich nicht viele Gedanken zu machen braucht, das Üble, daß dabei sehr viel Programmspeicher und RAM gebraucht wird, und die Berechnungen langsam sind, sofern der Prozessor nicht entsprechende Hardware an Bord hat.
Bleiben wir bei 2 Byte Ganzzahlen, dann ist die nächste Frage, ob man damit den Wertebereich 0..64k abdecken will (unsigned) oder -32k..+32k (signed). Ist diese Entscheidung einmal gefallen, dann sollte man sich im ganzen Programm daran halten, sonst kommt man schnell in Teufels Küche.
Prinzipiell können diese beiden Bytes an beliebigen Speicherstellen stehen, aber es ist zweckmäßig wenn sie benachbart sind.
Außerdem sollte man sich überlegen, ob man das höherwertige Byte an der höheren Adresse (Intel, Little-Endian) aufbewahren will, oder an der niedrigeren (Motorola, IBM, Big-Endian) Das ist zunächst einmal Geschmacksache, die RISC-Prozessoren wie AVR und PIC können beides gleich gut, aber es kann in Verbindung mit weitere Hardware oder Gleitkommaformaten interessant werden.
Das Zusammenschieben oder -rotieren der Bytes, wie es clembra gezeigt hat, ist dann die leichteste Übung.
|
BID = 879947
Offroad GTI Urgestein
     
Beiträge: 12819 Wohnort: Cottbus
|
|
BID = 880370
Kleinspannung Urgestein
     
Beiträge: 13374 Wohnort: Tal der Ahnungslosen
|
Zitat :
Offroad GTI hat am 16 Mär 2013 23:05 geschrieben :
|
Wenn auch mit etwas Verspätung:
|
Ich schrieb doch schon:
"Eilt aber nicht"
Ich hab auch nicht jeden Tag Zeit und Lust,mich mit sowas zu beschäftigen.
Außerdem geht der ganze Bit,Byte und Binärkram sowieso verdammt schwer in meine Birne rein.
Und das es die ganzen Datenblätter nur auf englisch gibt(was ich nie wirklich gelernt habe) vereinfacht die Sache nun auch nicht gerade.
Aber der Link war gut.
Damit,(und mit den Aussagen deiner Vorschreiber) bin ich wenigstens so in etwa dahintergestiegen.
Zumindest auf dem Mega8 tut es jetzt so wie ich will,beim Tiny13 noch irgendwie nicht so ganz.
Bin aber grad dabei,mich in letzteren "einzuarbeiten",weil oft reichen ja für kleinere Sachen drei oder vier I/O Pins,und da ist es ja absoluter overkill und Platzverschwendung, nen Mega8 auf die Platine zu braten.
Aber bisher war der Mega8 der einzige,den ich so halbwegs "konnte".
Dank euch erstmal,wenn demnächst meine grauen Zellen mal wieder überfordert sein werden,erlaube ich mir euch wieder zu belästigen.
P.S.
Wo Jornbyte sich versteckt ,habt ihr mir immer noch nicht verraten.
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
[ Diese Nachricht wurde geändert von: Kleinspannung am 19 Mär 2013 22:33 ]
|
BID = 880397
Offroad GTI Urgestein
     
Beiträge: 12819 Wohnort: Cottbus
|
Offtopic :
|
Zitat :
| weil oft reichen ja für kleinere Sachen drei oder vier I/O Pins, und da ist es ja absoluter overkill und Platzverschwendung, nen Mega8 auf die Platine zu braten. | Apropos: http://www.uwe-freese.de/hardware-p......html |
|
BID = 880420
Kleinspannung Urgestein
     
Beiträge: 13374 Wohnort: Tal der Ahnungslosen
|
Zitat :
Offroad GTI hat am 20 Mär 2013 10:48 geschrieben :
|
|
Der war gut!
Ob ihm schon mal einer veraten hat,das es auch ausgereicht hätte,den Summer und die LED direkt an die Schalter zu hängen?
Und das der µC interne Pullups hat,scheint er auch nicht zu wissen.
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein)
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 12 Beiträge im Durchschnitt pro Tag heute wurden bisher 1 Beiträge verfasst © x sparkkelsputz Besucher : 185671535 Heute : 916 Gestern : 5614 Online : 302 7.10.2025 3:40 2 Besucher in den letzten 60 Sekunden alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0596148967743
|