Kann mir einer sagen wie man variablen zuweist und sie dann nach x beliebiger zeit (solange der AVR läuft) wieder abfragt uun diese noch den wert haben wo sie zuletzt zugewiesen wurden. wie könnte man sowas machen. ich lese einmal einen wert aus (SPI FLash) und speicher ihn mir in eine Variable C1. nun habe ich Funktionen die auf c1 zugreifen müssen um berechnungen auszuführen. das klappt aber nicht C1 hat dann nur unsinniges zeug ich schreibe in C1= 23499 beim aufruf bekomme ich C1=786 ohne das ich C1 wieder zugewiesen habe. Was mache ich falsch static unsigned long c1; so habe ich es deklariert. zuweisen C1=23499; lesen unigned long wert=C1; wert=786;
Hi, wenn Du den Code hier mal komplett reinstellst, dann kann man auch sehen worans liegt ;) Funktionieren sollte in jedem Falle:
1 | // globale Variable
|
2 | static unsigned long c1; |
3 | |
4 | void readFlash() |
5 | {
|
6 | c1 = getFlash(xyz); |
7 | }
|
8 | |
9 | void showc1() |
10 | {
|
11 | printf("%l", c1) |
12 | }
|
Achte auf Groß-/Kleinschreibung und vermeide lokale Varibalen in den Unterroutinen mit gleichem Namen. Fehler wäre z.B.:
1 | void readFlash() |
2 | {
|
3 | static unsigned long c1; |
4 | c1 = getFlash(xyz); |
5 | }
|
6 | |
7 | void showc1() |
8 | {
|
9 | static unsigned long c1; |
10 | printf("%l", c1) |
11 | }
|
Am wahrscheinlichsten: Du hast irgendeinen anderen Fehler im Program, der dir den Inhalt der Variablen zerstört. Ohne Original-Programmtext praktisch nicht zu lösen.
Habe mir jetzt eine Struct gebaut. wo ich mehrer Werte drinn stehen hab. das funktioniert. Danke
Du hast nur dein ursprüngliches Problem noch nicht gelöst: memory corruption. Irgendwas läuft bei dir wild und zerschießt den Speicher. Du wirst dir also diesmal einfach was anderes kaputt machen.
Franz K wrote: > Habe mir jetzt eine Struct gebaut. > > wo ich mehrer Werte drinn stehen hab. > > das funktioniert. Nö, es funktioniert immer noch nicht, bloß ist der Fehler für Dich zur Zeit nicht mehr sichtbar. Du wirst mit einem solchen Programmierstil nicht lange Erfolg haben. Du mußt die Ursache finden und nicht die Wirkung bekämpfen ! Peter
> Nö, es funktioniert immer noch nicht, bloß ist der Fehler für Dich zur > Zeit nicht mehr sichtbar. Ach, der kommt schon noch :-) War noch immer so. Pseudolösungen halten nicht lange. Blöd ist nur (für ihn), dass er jetzt die Chance hatte, dem Problem auf den Grund zu gehen. Dadurch dass er es jetzt versteckt hat, wird es nur schlimmer.
Meine Gasheizung hat ein Leck. Mein Nachbar hat mich drauf hingewiesen. Da ich das Leck nicht dichten konnte, hab ich jetzt alle Fenster und Türen mit Silikon abgedichtet. Hoffe mein Nachbar ist jetzt zufrieden und wird nicht mehr durch Geruch belästigt. Grüße, Freakazoid
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.