mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmierfrage


Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte eine unsigned variable von 12 bit in zwei Variablen teilen:
die erste von 8 Bit und die zweite von 4 Bit.
wie kann ich es mit C programmieren?
übrigens es geht um Microcontroller Programmierung:ATmega

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme jetzt einfach mal an, dass Du einmal die unteren 8bit und zum 
anderen die oberen 4bit der 12bit variablen meinst ?!

In diesem Fall:

unsigned int  12bit_var
unsigned char lower;
unsigned char upper;

lower = (unsigned char)(12bit_var & 0x00FF);
upper = (unsigned char)(12bit_var & 0x0F00);

Autor: Obelix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt keinen standard 4Bit Typen.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eher so:
unsigned uint16_t     v12bit_var
unsigned uint8_t      lower;
unsigned uint8_t      upper;

lower = (uint8_t) ( v12bit_var & 0x00FF);
upper = (uint8_t) ( (v12bit_var & 0x0F00) >> 8 );

Autor: AVR-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Stefan

hast bei upper das shiften vergessen ;)
upper = (unsigned char)((12bit_var & 0x0F00) >> 8);

Autor: Miu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Matthias,

das wollt ich grad auch anmerken, dass das net so einfach ist, wie 
Stefan das beschrieben hat

Autor: AVR-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mist. War zu langsam ;)

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
junfes,ich bin durch einander gekommen.
könnt ihr mir bitte jede Zeile erklären?
danke.

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
übrigens die 16 Bit Variable ist schon in 2Byte terlegt!!!!

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
übrigens die 16 Bit Variable ist schon in 2Byte zerlegt!!!!

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>übrigens die 16 Bit Variable ist schon in 2Byte terlegt!!!!

Achso. Ja, wie hast denn das gemacht, poste das doch mal

Autor: AVR-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die 16-Bit Variable schon in zwei einzelne Bytes zerlegt hast wo 
ist dann das Problem? Wie oben schon geschrieben wurde gibt es keine 
4-Bit Datentypen.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mathe Fan wrote:
> übrigens die 16 Bit Variable ist schon in 2Byte zerlegt!!!!
Ach je, der Mathe Fan wieder. Bitte kauf Dir endlich ein C-Buch! Und 
lies es auch. Dann erkennst Du vielleicht auch, dass Du die Variable, 
wenn sie denn schon in zwei Byte-Variablen aufgeteilt ist, nicht weiter 
aufteilen kannst. Ein Byte ist die kleinste unter C auf einem 
8-Bit-System ansprechbare Einheit.

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein,ich habe sie nicht zerlegt,das ist der Timer1 und ist schon in 2 
Bytes zerlegt.
und ich hab eine Variable mit 12 Bits,die ich in 2 Teile zerlegen muss:8 
und 4 Bits.und so kann ich den Inhalt des Timers in der 2 Teilen 
kopieren.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mathe Fan wrote:
> nein,ich habe sie nicht zerlegt,das ist der Timer1 und ist schon in 2
> Bytes zerlegt.
> und ich hab eine Variable mit 12 Bits,die ich in 2 Teile zerlegen muss:8
> und 4 Bits.und so kann ich den Inhalt des Timers in der 2 Teilen
> kopieren.
In C kannst Du auf 16-Bit-I/O-Register (bis auf wenige Ausnahmen) direkt 
als solche zugreifen. Dafür brauchst Du die Variable nicht zu zerlegen. 
Und ein Tiomer-I/O-Register ist KEINE Variable, sondern ein 
I/O-Register.

EDIT:
Und versuch bitte mal, Deine Anfragen so zu formulieren, dass es für 
andere auch ohne tausend Rückfragen verständlich ist. Wenn Du erst 
schreibst, Du weißt nicht, wie Du eine Variable aufteilen kannst, und 
dann sagst, die Variable sei schon aufgeteilt, dann macht das wenig 
Sinn.

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey du johnny-m ich weiß es schon und deine verdammte scheiße Hilfe 
brauche ich auch nicht.
ein arrogante mensch wie du hab ich niemamls begegnet.
ich bin anfänger und motiviert Microcontroller zu programmieren.
eins muss dir klar sein,ich lass mich nicht so schnell von jemandem wie 
du demotivieren!!!!!!!!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mathe Fan wrote:
> hey du johnny-m ich weiß es schon und deine verdammte scheiße Hilfe
> brauche ich auch nicht.
> ein arrogante mensch wie du hab ich niemamls begegnet.
> ich bin anfänger und motiviert Microcontroller zu programmieren.
> eins muss dir klar sein,ich lass mich nicht so schnell von jemandem wie
> du demotivieren!!!!!!!!
OK, damit ist alles gesagt!

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich formuliere meine Frage:

ich will ersten 12 Bit eines 16 Bit Timers in 12 Bit Variable kopieren.
wie soll ich es machen?

Autor: AVR-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry aber ich muss Johannes voll zustimmen.
Erwarte bei solchen Reaktionen bitte nächstes mal keine Hilfe mehr. 
kopfschüttel

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Mathe Fan (bob37)

>hey du johnny-m ich weiß es schon und deine verdammte scheiße Hilfe
>brauche ich auch nicht.
>ein arrogante mensch wie du hab ich niemamls begegnet.
>ich bin anfänger und motiviert Microcontroller zu programmieren.
>eins muss dir klar sein,ich lass mich nicht so schnell von jemandem wie
>du demotivieren!!!!!!!!

http://www.duden.de

http://www.amazon.de/Dativ-ist-dem-Genitiv-sein/dp...

SCNR
;-)

MfG
Falk

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mathe Fan:

Johnny ist immer hart im Ton, aber er hat recht.

DU musst dein Problem so formulieren, dass wir (andere) es 
nachvollziehen können.

Also kannst du nicht erst schreiben:
>>ich möchte eine unsigned variable von 12 bit in zwei Variablen teilen

und dann:
>>übrigens die 16 Bit Variable ist schon in 2Byte zerlegt!!!!

Also Was denn nun???

Und die vielen Ausrufezeichen suggerieren, dass du jemand versucht was 
zu sagen, aber DU Hilfe haben MÖCHTEST...

Also Poste doch mal die Deklaration, sowie den Code, wo die 
16/12bit-Variable (was nun??) "befüllt" wird...

Und dann nochmal, was genau soll gemacht werden..

Autor: Hmmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber nicht als pdf.

Autor: Mathe Fan (bob37)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke  Matthias du hast schon recht.
ich möchte ein 12 bit Variable in zwei Teile zerlegen.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ein 12 bit Variable in

Es gibt keine 12bit Variablen (in C).

vielleicht ja in Bascom ;-))

POSTE MAL:
>>Also Poste doch mal die Deklaration, sowie den Code, wo die
>>16/12bit-Variable (was nun??) "befüllt" wird...
!!

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias:
> Johnny ist immer hart im Ton,...
Nicht immer. Nur, wenn sich ein Fragensteller sichtbar absolut keine 
Mühe bei der Formulierung seiner Frage gibt und vorher schon in mehreren 
Threads mit Stilblüten unterschiedlicher Art geglänzt hat (s.a. dezenter 
Hinweis von "Hmmm...").

Ich hab auch keine Probleme damit, wenn jemand kein perfektes Deutsch 
hinlegt und ich spare mir daher auch i.d.R. Hinweise auf grammatische 
Fehler. Bei manchen bringt es auch was, wenn man deutlich darauf 
hinweist, dass mit einer solchen Fragestellung niemand wirklich konkret 
was anfangen kann. Wenn derjenige dann aber ausfällig wird und mit 
Kraftausdrücken um sich wirft, dann ist eben H&M verloren...

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>H&M

Wobei das lieber in eine Brauerei sollte...
;-)

Ich merk schon, das Thema driftet ab..

Autor: xyz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier kann mann kostenlos C lernen.

http://www.pronix.de/pronix-4.html

Autor: Zeusi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gegenfrage:
Wenn du schon mit einem Word den timer register auslesen kannst, wieso 
willst Du den dann zerlegen??
Falls du wirklich die einzelnen Byte haben willst dann ließ sie doch 
schon per inline asm aus,..(meine meinung, geht schneller und 
expliziter, ist ja aber bekanntlich geschmackssache),...

Also nochmal zum mitschreiben:
Es ist bekannt was du machen willst, aber wieso??

(Auß dieser Fragestellung ergaben sich schon so manches mal eine neue 
herangehensweise,..)

grüüüüüße

p.s.: ich liebe senf

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.