Forum: Mikrocontroller und Digitale Elektronik Vereinfachung möglich?


von Maik G. (maik_l)


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.

von Joe F. (easylife)


Lesenswert?

Suchst du Freaks, oder Leute die helfen können?

Versuch's mal mit den Funktionen eeprom_write_block() und 
eeprom_read_block()

von Maik G. (maik_l)


Lesenswert?

Joe F. schrieb:
> Suchst du Freaks, oder Leute die helfen können?

Eigendlich letzteres. :-D
Aber dadurch ist ja ersteres nicht ausgeschlossen oder?

von Joe F. (easylife)


Lesenswert?

Maik G. schrieb:
> Aber dadurch ist ja ersteres nicht ausgeschlossen oder?

Naja. "Freak" = "Missgeburt". Nicht sehr schmeichelhaft.

von Maik G. (maik_l)


Lesenswert?

>Joe F. schrieb:
>
> Naja. "Freak" = "Missgeburt". Nicht sehr schmeichelhaft.

Wenn ein Programmierfreak eine Missgeburt ist, dann bleibt es bei 
letzteres.
oder wäre die Bezeichnung Nerd abgebrachter?

von Joe F. (easylife)


Lesenswert?

Maik G. schrieb:
> oder wäre die Bezeichnung Nerd abgebrachter

Das musst du beurteilen. Nerd = Fachidiot oder Streber.
Naja, dir wurde geholfen. Ein Lexikon wäre ganz gut für dich.

von Rolf M. (rmagnus)


Lesenswert?

Joe F. schrieb:
> Ein Lexikon wäre ganz gut für dich.

Für dich vielleicht auch:

http://www.duden.de/rechtschreibung/Freak
http://www.duden.de/rechtschreibung/Nerd

von Der Andere (Gast)


Lesenswert?

"Freak" oder "Nerd" zeigt doch daß derjenige der Hilfe sucht die Leute 
die ihm helfen eigentlich für "abgedreht" bis "abartig" hält.

von Der Andere (Gast)


Lesenswert?

Rolf M. schrieb:
> Für dich vielleicht auch:

Meinst du? Nerd im Englischen steht z.B. auch für "Schwachkopf", 
"Sonderling" und "Fachidiot".

von Joe F. (easylife)


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.

von Rolf M. (rmagnus)


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).

von Joe F. (easylife)


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)

von Erwin D. (Gast)


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. :-)

von Mark B. (markbrandis)


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.

von Tommi (Gast)


Lesenswert?

Ich haette das eher so formuliert:
"Und nun meine Frage an die Freaks..."

Das ist nicht beleidigend, sondern vorausgeschicktes Lob, ala nur ein 
Spezialist kann das Loesen.

von THOR (Gast)


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.

von Joe F. (easylife)


Lesenswert?


von Danish B. (danishbelal)


Lesenswert?

Typisch Internet.

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

Warum ist das so wichtig?

von Maik G. (maik_l)


Lesenswert?

Könnte man mal bitte wieder zum Eigentlichen Thema zurückkommen???
Andernfalls Bitte ich um SOFORTIGE Löschung nicht themenbezogener 
Antworten.

Danke für euer Verständnis.

von Rolf M. (rmagnus)


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.

von Maik G. (maik_l)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.