Im Manual kam bei mir folgendes Problem auf zudem ich nichts finden konnte, ich schreibe in meinem Mikrocontroller Programme die Berechnungen machen und muss deswegen verschiedene Werte ständig abspeicheren und auslesen wozu ein RAM ja gedacht ist. Nur habe ich hier ja jetzt bloß den Data-Memory in dem die Register liegen sowie den Flashspeicher und seinen EEprom oder so ähnlich in dem PIC18F. Jedenfalls sehe ich hier nicht wo ich Werte Speichern soll die sich andauernd ändern, man könnte vielleicht das ein oder andere Register zweckentfremden und dort seine Werte speichern die erforderlich sind aber die anderen Speicher gehen ja bei dem andauernden Beschreiben kaputt. Wäre gut wenn mir jemand sagen könnte wo ich denn hier jetzt weiter suchen/lesen soll zur speicherung von Arbeitsdaten die dauernd abgerufen werden müssen.
Ich denke mal das Deine Fragestellung ungenau/unvollständig... ist! Kphos schrieb: > und muss deswegen verschiedene Werte ständig > abspeicheren und auslesen wozu ein RAM ja gedacht ist. Kphos schrieb: > Jedenfalls sehe ich hier nicht wo ich Werte Speichern soll die > sich andauernd ändern,... > und dort seine Werte speichern die erforderlich > sind aber die anderen Speicher gehen ja bei dem andauernden Beschreiben > kaputt. ???
Dir ist offenbar der Unterschied zwischen Flash (ROM) und RAM noch nicht klar.
Ernsthaft, konntet ihr den Text nicht verstehen? Ich kann das kaum glauben, vielleicht bin ich ja in den letzten Jahren zu eigenbrötlerisch geworden und die Leuten verstehen meine Texte nicht mehr jedoch denke ich es ist sehr deutlich formuliert wo hier die Probleme liegen. Ich habe eine hohe Zahl von Variablen(!) die mit einer hohen Aktualiserungsrate regelmäßig gespeichert werden sollen, dazu ist RAM normal gedacht nur kann ich soetwas wie RAM in einem normalen x86 auf meinen PIC18F nicht finden. Also wie soll ich die jetzt speichern ohne mir den Flash kaputt zu machen? Das blöde PIC18F-Ding scheint keinen Arbeitsspeicher zu haben und ich suche irgendwelche Möglichkeiten wie man es löst. Ihr wollt mir doch nicht erzählen das ich auf dem PIC18F bloß die wenigen Register habe und dann nur solchen Festpeicher wie Flash?! Wozu habe ich dann denn diesen riesigen Program-Memory um riesige Programme zu schreiben wenn ich keinen Arbeitsspeicher habe um irgendwelche wichtigen Variablen abzulegen/zwischenzuspeichern? Würde ja bedeuten es müssen jedesmal an dem Mikrocontroller zusätzliche Rambausteine angeschlossen werden um die Aufgaben zu erledigen.
Kphos schrieb: > Nur habe ich hier ja jetzt bloß den Data-Memory in dem die Register > liegen Jain. Bei den "Register" unterscheidet man "special function register" (also TMR0, STATUS, INTCON etc etc) und "file register" (dorthin kommen deine Variablen). Beide liegen in einem zusämmenhängenden Speicher und der ist als RAM aufgebaut. Wo nachlesen: Im Datenblatt deines Kontrollers, dort ist alles ausreichendst erklärt
Ernsthaft: ich kann deinen Text schon verstehen. Und nochmal ernsthaft: Das Datenblatt hast du wohl noch nie zur Hand genommen!?
Schau mal hier, Seite 49/50: http://ww1.microchip.com/downloads/en/DeviceDoc/39605F.pdf Hab irgend einen Typ genommen, sind alle ähnlich.
Troll... Die Englische Übersetzung für Manual ist Datenblatt. Les dir mal in ruhe meine Texte durch bevor du hier solche ironischen Sachen postest. Der Data-Memory in einem PIC ist sein Arbeitsspeicher, der wird Allgemein als Fire Register bezeichnet und der ist nur in GPR sowie SFR unterteilt. Da davon jedes Register eine ihm zugewiesene Funktion hat kann ich sie höchstens wie im ersten Beitrag geschrieben zweckentfremden nur ist das in meinen Augen nicht effektiv. Es gibt den Program Memory Space und den Data Memory Space, der Program Memory Space ist Flash sowie EEProm und Data Memory Space soetwas ähnliches wie RAM also die File Register in denen die GPR sowie SFR liegen. Laut Manual(Datenblatt) gibt es nur die Speicher und ich denke mir das es scheiße ist einen so riesen Flash ohne irgendwelchen richtigen Arbeitsspeicher zu haben. Die Möglichkeiten des Data Memory sind nur begrenzt also gehe ich mit dem Problem in ein Forum weil in dem Manual nichts steht wo ich noch Daten Speichern soll wo mir der Speicher nicht durch dauerndes beschreibne kaputt geht. Im Prinzip habe ich die Antwort schon längst nur denke ich es könnte vielleicht noch irgendwas geben wo ich meine Daten intern speichern könnte ohne externe Hilfsmittel wie einen zusätzlichen Speicherbaustein. Ist ja ein super Userfreundliches Klima hier...
Das Troll galt dem Vorposter von bestucki, deinen Post habe ich nicht gesehen. Richtig, die Manuals bzw. Mikrocontroller sind sich im allgemeinen sehr ähnlich. Logisch, erfindet ja nicht jeder eine komplett neue Computerarchitektur für seinen Chip. Das Manual das ich lese ist PIC 18F4550 sowie ich die Controller dazu habe, sah es nur nicht als notwendig das zu Posten weil es doch im Prinzip alles das gleiche ist. Also wie ich dem Manual richtig entnehme gibt es außer dem anschließen eines externen Speicherbausteins keine weiteren Möglichkeiten hohe Kapazitäten von verschiedenen sich ändernden Variablen in hoher Wiederholungsrate schadenfrei abzuspeichern...
Kphos schrieb: > Also wie ich dem Manual richtig entnehme > gibt es außer dem anschließen eines externen Speicherbausteins keine > weiteren Möglichkeiten hohe Kapazitäten von verschiedenen sich ändernden > Variablen in hoher Wiederholungsrate schadenfrei abzuspeichern... Dein PIC hat 2k SRAM. Wenn das nicht genügt, nimmst du einen dickeren Controller oder spendierst externes RAM. Oder du Programmierst sparsamer.
Den GPR ist überhaupt keine Funktion zugewiesen oder irgendwie eingeschränkt (abgesehen von den Controllern welche DMA etc haben, da sind bestimmte Bereiche für DMA priorisiert). Wenn du "Unmengen" RAM benötigst musst du PIC32 nehmen - da gibts bis 256kB SRAM (oder mittlerweile mehr!).
Seite 68 im Manual des PIC 18F4550, das unused habe ich nicht gesehen weil ich mich nur auf den Text und weniger auf die Bilder konzentriert habe. Das heißt dann wohl hier liegen neben den SFR sowie GPR-Registern noch komplett freie Speicherbänke... Bitte Posten ob ich es richtig verstehe aber ich denke schon
Nein, habe es doch richtig gelesen. Die PIC 18F4550 haben 8 Bänke, dementsprechend sind die anderen "Unused", also nicht existent. Dann muss ich wohl sehen das ich in die Register sauber rein schreibe ohne Konflikte auszulösen und ggf. einen externen Speicher verwenden.
Das mit den PICs und dem RAM ist ein Problem seitdem ich die Dinger in der Hand habe. Du kannst eigentlich schon ein Datenfeld bis 256 Byte RAM anlegen, danach wird's aber komisch weil du im Linker Script die Bänke zusammenhängend deklarieren mußt. Hast du den MPLAB® C18 C COMPILER USER’S GUIDE schon durchgeblättert? In 5.2 APPLICATION: CREATING LARGE DATA OBJECTS AND THE USART steht wie du den Speicher handhaben mußt.
Ich programmiere komplett in ASM, dort ist das mit dem Speicher ansprechen so oder so etwas anders. Da habe ich sogenannte Bank Select Register auf die die ich vor dem schreiben achten muss nicht das ich in die falsche Bank schreibe.
Kphos schrieb: > Das heißt dann wohl hier liegen neben den SFR sowie GPR-Registern Seite 69: > PIC18 devices may have banked memory in the GPR area. This is > data RAM which is available for use by all instructions. Also: General Purpose Register ist ein anderes Wort für RAM Kphos schrieb: > Da habe ich sogenannte Bank Select Register auf die die ich vor dem > schreiben achten muss nicht das ich in die falsche Bank schreibe. Darum kümmere ich mich nicht, dafür habe ich Personal. Ein C-Compiler kann so etwas richtig gut, wird nie krank und macht keinen Urlaub. Man kann ihn ohne Arbeitgericht einfach kündigen und was jüngeres einstellen. MfG Klaus
lol! Danke, jetzt sehe ich es auch. Scheint im GPR Bereiche zu geben die man frei verwendet. Man kann sich auch solche Linker relativ einfach zu seinem ASM-Code programmieren die einem das meiste Abnehmen.
Kphos schrieb: > Ich programmiere komplett in ASM, dort ist das mit dem Speicher > ansprechen so oder so etwas anders. Da habe ich sogenannte Bank Select > Register auf die die ich vor dem schreiben achten muss nicht das ich in > die falsche Bank schreibe. Du solltest auf C compiler umsteigen, dann brauchst du dich um "Bank Select" nicht mehr zu kümmern. Der Compiler sagt dir dann schon, ob das Ram für dein Programm ausreicht. Frage: Dir ist aber schon klar, daß RAM verloren geht wenn man die Spannung abschaltet? Gruss
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.