Registerinhalte zusammenfassen/addieren

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 04 10 2024  19:43:08      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Registerinhalte zusammenfassen/addieren

    







BID = 879550

Kleinspannung

Urgestein



Beiträge: 13356
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: 5404
Wohnort: Weeze / Niederrhein
ICQ Status  

 

  

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: 12716
Wohnort: Cottbus

Wenn auch mit etwas Verspätung: http://www.newbiehack.com/MicrocontrollersADC10Bits.aspx




_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.

BID = 880370

Kleinspannung

Urgestein



Beiträge: 13356
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: 12716
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: 13356
Wohnort: Tal der Ahnungslosen


Zitat :
Offroad GTI hat am 20 Mär 2013 10:48 geschrieben :


Offtopic :
Apropos: http://www.uwe-freese.de/hardware-p......html


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)


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 182125211   Heute : 4509    Gestern : 5915    Online : 450        4.10.2024    19:43
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0298268795013