Vereinfachung möglich?

OP #4836726
Lesenswert?
• ▲
▼
Moin @ll,

ich greife hier mal das Leidige Thema EEPROM beim ATMEGA16 auf.

Kurz?
Ich will mir eine Dongleserie bauen, welche die entsprechende 
Seriennummer im EEProm speichert und je nach fkt gewisse Aktionen auf 
einem Server freisetzt.
dies liegt aber noch in ferner Zukunft. :-D

Soweit läuft dieses Schöne Programm auch vernünftig, wenn man bedenkt, 
das ich µC Quasi Alleine und Ohne Lehrer und co erarbeitet habe. also in 
gewissen punkten nicht gleich mit der Latte über den Zaun brechen. Danke

Nun aber zum eigendlichen Punkt, da mir in diesem Fall keine Literatur 
wirklich Hilfe brachte. :(
1
test_SN('Y', 50, 48, (int)rxd[2], (int)rxd[3]);
 <--- Hier wird zB das Jahr 2016 übertragen (Diesen würde ich gerne in 
einem Value setzten wollen.
1
void test_SN(char Value, int V1, int V2, int V3, int V4)
2
{
3

4
    putch((char) V3);
5
    putch((char) V4);
6
    ee_write_SN(V3, V4);
7
    putch('|');
8
    putch(Value);
9
    putch('2');
10
    putch('0');
11
    putch('|');
12
    ee_read_SN();
13
    putch(Y1);
14
    putch(Y2);
15
    return;
16

17
}
 <--- die eigendliche EEProm W/R aktion.
alles was
1
putch()
 dient nur als Debugmaterial
1
//define EE_SN_Year       0x001 // 2 Byte wenn zsm schreibbar sonst Byte für Byte EEProm erstellen
2
#define EE_SN_Year_1      0x001 // 2 byte
3
#define EE_SN_Year_2      0x002
4

5

6
void ee_write_SN(uint8_t Y1, uint8_t Y2)//, uint8_t M, uint8_t W, uint16_t Nr)
7
{
8
    //eeprom_write_word((u16)EE_SN_Year, Y);      <-- Wunschsschreibweise
9
    eeprom_write_byte((u16)EE_SN_Year_1, Y1);      // Jahr schreiben 10er Wert
10
    eeprom_write_byte((u16)EE_SN_Year_2, Y2);      // Jahr schreiben  1er Wert
11
schreiben
12
}
13

14
void ee_read_SN(void)
15
{
16
    //Year = eeprom_read_word((u16*) EE_SN_Year); <-- so würde ich es gerne gaben wollen
17
    Y1 = eeprom_read_byte((u16*) EE_SN_Year_1);
18
    Y2 = eeprom_read_byte((u16*) EE_SN_Year_2);
19
}

Wie zu sehen ist kann ich es nicht so schreiben, wie ich es gerne hätte.
Versucht habe ich es, aber aus einem mir unerklärlichen Grund habe ich 
vom gesendeten Wert zum µC und dem Gelesenen Wert aus dem EEProm einen 
Unterschied von +18.

Typen welche ich Geziehlt definiert habe
1
typedef uint32_t u32;
2
typedef uint16_t u16;
3
typedef uint8_t  u_8;

Nun meine Frage an euch "Freaks"
Seht ihr eine Möglichkeit dies zu vereinfachen, das man zB den wert 
23659, welcher als Zeichenkette übergeben wird in den EEProm zu 
schreiben OHNE das man diesen in seine Bestandteile zerlegen muß oder 
werde ich dies nicht vermeiden Können.
#4836828
Lesenswert?
• ▲
▼
Rolf M. schrieb:
> Für dich vielleicht auch

Was willst du mir damit sagen?
Ich denke nicht, dass ich Probleme mit der Rechtschreibung von "Freak" 
und "Nerd" habe.
Die Abfälligkeit, die beiden Begriffen anhaftet, kann ein deutsches 
Rechtschreiblexikon ja wohl offensichtlich nicht erklären.
Tip: beide Begriffe mal in die Bildersuche von Google eingeben.
#4836856
Lesenswert?
• ▲
▼
Der Andere schrieb:
> Rolf M. schrieb:
>> Für dich vielleicht auch:
>
> Meinst du? Nerd im Englischen steht z.B. auch für "Schwachkopf",
> "Sonderling" und "Fachidiot".

Und "public viewing" steht dort für das öffentliche Aufbaren von 
Leichen.
Nur selten gibt es nur eine Bedeutung. Ist es da so wichtig, was es im 
Englischen unter anderem auch noch bedeuten könnte?

Joe F. schrieb:
> Rolf M. schrieb:
>> Für dich vielleicht auch
>
> Was willst du mir damit sagen?
> Ich denke nicht, dass ich Probleme mit der Rechtschreibung von "Freak"
> und "Nerd" habe.

Link nicht angeklickt? Da steht nicht nur, wie man es schreibt, sondern 
auch, was es bedeutet.

> Die Abfälligkeit, die beiden Begriffen anhaftet, kann ein deutsches
> Rechtschreiblexikon ja wohl offensichtlich nicht erklären.

Ob ein Wort abfällig ist, kommt ganz wesentlich auch auf den Kontext an. 
Ich hab's in diesem Kontext nicht als abfällig wahrgenommen.
Aber gut, nehmen wir Wikipedia:

Ein Freak [fɹi:k] (aus dem Englischen freak: „Krüppel, Verrückter, 
Unnormaler“ bzw. freak of nature: „Laune der Natur“, aber auch 
„Begeisterter“) ist in der heutigen Umgangssprache meist eine Person, 
die eine bestimmte Sache, zum Beispiel ihr Hobby, exzessiv bzw. über ein 
„normales“ Maß hinaus betreibt, diese Sache zum Lebensinhalt macht oder 
sich zumindest mehr als andere darin auskennt (beispielsweise ein 
Computerfreak).
#4836867
Lesenswert?
• ▲
▼
Rolf M. schrieb:
> Ist es da so wichtig, was es im
> Englischen unter anderem auch noch bedeuten könnte?

Wenn ich Hilfe von jemanden erwarte: ja. Da empfiehlt es sich nicht, 
jemanden gleich mal zu beleidigen.

Ansonsten: schreib's auf deutsch hin, so in der Art, "Hey, ihr 
Coding-Nutten, brauche da mal nen Tipp. So Gestörte wie Ihr habt da ja 
bestimmt gleich was auf Lager. ;-) ;-) ;-)"
(Smileys auf keinen Fall vergessen)
Gast #4836871
Lesenswert?
• ▲
▼
Joe F. schrieb:
> Wenn ich Hilfe von jemanden erwarte: ja. Da empfiehlt es sich nicht,
> jemanden gleich mal zu beleidigen.

Da bist du wahrscheinlich einer der ganz wenigen, die das Wort 
"Computerfreak" als eine Beleidigung sehen. Die meisten verstehen 
darunter einen Menschen, der sich besonders gut damit auskennt und 
besonders viel damit zu tun hat.

Aber wenn du unbedingt beleidigt sein willst, ist das natürlich ganz 
allein deine Entscheidung. :-)
#4836878
Lesenswert?
• ▲
▼
Erwin D. schrieb:
> Joe F. schrieb:
>> Wenn ich Hilfe von jemanden erwarte: ja. Da empfiehlt es sich nicht,
>> jemanden gleich mal zu beleidigen.
>
> Da bist du wahrscheinlich einer der ganz wenigen, die das Wort
> "Computerfreak" als eine Beleidigung sehen. Die meisten verstehen
> darunter einen Menschen, der sich besonders gut damit auskennt und
> besonders viel damit zu tun hat.
>
> Aber wenn du unbedingt beleidigt sein willst, ist das natürlich ganz
> allein deine Entscheidung. :-)

So ist es.

Welche Bedeutung ein Wort hat, hängt immer vom Kontext ab.

Sowohl "Freak" als auch "Nerd" kann negativ gemeint sein - muss es 
aber nicht. Die Charaktere in "Bing Bang Theory" sind auch Nerds, und 
sie erfreuen sich großer Beliebtheit.
Gast #4836885
Lesenswert?
• ▲
▼
Erwin D. schrieb:
> Aber wenn du unbedingt beleidigt sein willst, ist das natürlich ganz
> allein deine Entscheidung. :-)

Ich würde das auch als beleidigend oder zumindest nicht positiv 
bewerten, schließlich spricht auch niemand von einem Kochfreak oder 
Gartenfreak. Da soll schon die Andersartigkeit betont werden.
#4837552
Lesenswert?
• ▲
▼
Maik G. schrieb:
> Könnte man mal bitte wieder zum Eigentlichen Thema zurückkommen???

Dazu hat wahrscheinlich keiner eine Idee.

Maik G. schrieb:
> Versucht habe ich es, aber aus einem mir unerklärlichen Grund habe ich
> vom gesendeten Wert zum µC und dem Gelesenen Wert aus dem EEProm einen
> Unterschied von +18.

Da würde ich erstmal versuchen herauszufinden, woran das liegt. Was mir 
aufgefallen ist: Deine Casts sind falsch, aber das sollte eigentlich 
nicht zu dem Problem führen.
eeprom_read/write_byte braucht als ersten Parameter einen Zeiger auf u8 
und eeprom_read/write_word einen Zeiger auf u16.

Danish B. schrieb:
> Jemand stellt eine Frage, daraufhin bricht eine Diskussion darüber aus
> ob Freak und Nerd Beleidigungen sind, oder eben nicht.

Es fing damit an, dass "Joe F" sich durch die Frage beleidigt gefühlt 
hat - meines Erachtens unbegründet.

> Warum ist das so wichtig?

Wirklich wichtig ist es nicht. Wäre es so, würde ich es nicht irgendwo 
in einem Internet-Forum diskutieren.
OP #4837835
Lesenswert?
• ▲
▼
Rolf M. schrieb:

> Maik G. schrieb:
>> Versucht habe ich es, aber aus einem mir unerklärlichen Grund habe ich
>> vom gesendeten Wert zum µC und dem Gelesenen Wert aus dem EEProm einen
>> Unterschied von +18.
>
> Da würde ich erstmal versuchen herauszufinden, woran das liegt. Was mir
> aufgefallen ist: Deine Casts sind falsch, aber das sollte eigentlich
> nicht zu dem Problem führen.
> eeprom_read/write_byte braucht als ersten Parameter einen Zeiger auf u8
> und eeprom_read/write_word einen Zeiger auf u16.

Danke für diese Antwort.
Bezüglich der Casts muß ich zugeben, das ich da noch sehr viel 
Übungsbedarf habe.
Aber wie du ja auch sehen kannst, verwende ich bei read/write_word u16 
im ersten Parameter, da es sich ja um die Adresse des EEProm handelt. 
Soweit sind wir uns ja einig.
Weiterhin verstehe ich dach deiner Aussage

> eeprom_read/write_byte braucht als ersten Parameter einen Zeiger auf u8

nicht warum ich bei u16 dann aber die richtigen Werte zurückbekomme, 
wenn ich die Byte für Byte in den EEProm schreibe und auslese.
1
    eeprom_write_byte((u16)EE_SN_Year_1, Y1);      // Jahr schreiben 10er Wert
2
    eeprom_write_byte((u16)EE_SN_Year_2, Y2);      // Jahr schreiben  1er Wert
 <--- Schreibt 1 und 6
1
    Y1 = eeprom_read_byte((u16*) EE_SN_Year_1);
2
    Y2 = eeprom_read_byte((u16*) EE_SN_Year_2);
 <--- Liest 1 und 6

Das es sich hier um einen Zufall handelt, wage ich zu bezweifeln, da ja 
allgemein bekannt ist, das C/C++ diesbezüglich sehr Penibel ist.

Weiter schauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren