www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speichergröße PICs


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich muß noch einmal ne ganz dumme Frage stellen:
Wieviel Programm passt in einen Pic?   :-)

Ich habe ein Programm geschrieben, was immer größer wurde. Zuerst
passte es nicht mehr auf einen 16F84, dann bin ich auf den 16F628
ausgewichen, der ja 2048*14 bit orientiert ist. Für mein .hex-File sehe
ich eine Größe (in den Eigenschaften des Windoofs-Explorer) von 2633
Bytes. Nach einer ähnlichen Frage, die ich hier schonmal stellte und
den Antworten darauf dachte ich:

2633 Byte * 8 bit (PC-Format)= 21064 bit (wurde mir hier damals so
vorgerechnet....)

21064 / 14 bit (PIC-Format) = 1504 Byte im Pic-Format. Aber auch in
diesen PIC mit 2k Speicher passt das Proggi nicht mehr, ich nehm jetzt
den 16f873.

Wo ist da mein Denkfehler??

Tschöö Sven

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann es sein, daß beim PIC die Befehle 14 Bit breit sind? Das müßte
doch im Datenblatt stehen, unter Programmspeicher. Demnach passen beim
16F628 nur 2048 Befehle in den Programmspeicher. Die Codegröße=Anzahl
der Befehle müßte doch der Assembler oder Compiler angeben.

Gruß

Autor: leo9 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doppelt posten gilt nicht ;-)

ich nehme an dass dein *.hex File kein hex-File ist. Beim Hexformat
werden die Bytes im "Klartext" gespeichert (Hexdarstellung).
Überschlagsmäßig werden pro 16 Byte Nutzdaten (zu 8 Bit) 45 Zeichen
gespeichert. Demnach komm ich auf für dein Programm auf ca. 920 Byte.
Ich vermute dass für die Codierung von den 14 Bit einfach die oberen
2Bit eines Words auf 0 gesetzt bleiben, demnach würde dein Programm 460
Befehle haben und müßte eigentlich sogar noch in den 16F84 passen.

grüsse leo9

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sven,

ist die Hexdatei nicht im ASCII-Format? Dann sollte der Code doch noch
viel kleiner sein. Wie kommst Du darauf, daß der Code nicht mehr in den
PIC reinpaßt? Beschwert sich da der Programmer?

Markus

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus: ich merkte es daran, daß ab einer gewissen Programmgröße das
Proggi (zu Testzwecken in den Pic gebrannt) nicht mehr läuft. Um
Programmfehler auszuschließen hab ich soweit abgespeckt bis es wieder
lief (Kontrolle durch LCD-Display) und mit einigen Warteschleifen
wieder das Programm verlängert. Diese sind definitiv ok, da sie im
Proggi mehrfach verwendet werden und funktioneren. Also war meine
Folgerung, der PIC-Speicher ist zu klein...  Laut Programmer (Brenner5
und zugehörige Software von SPRUT) hätte schon noch Platz sein
müssen.....

Sven

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Flashspeicher ist aber nicht der einzige Speicher. Dir kann ja auch
das RAM für die Variablen oder der Stack ausgehen. Andererseits hat der
873er weniger RAM als der 627.

Autor: Dominik S. Herwald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na sagte ich ja schon im anderen Thread - nimm den 876er dann wirds
schon klappen ;)

MfG,
DSH

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja... die Platine hab ich inzwischen für den größeren PIC gemacht. Hätte
mich halt nur mal interessiert, wie man rechnerisch sagen kann, ab hier
brauch ich nen anderen..aber scheint doch ziemlich kompliziert zu sein
;-)
Trotzdem danke an alle für die Hinweise!!

Tschööö Sven

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nschaust Du dir nicht einfach mal das absolute Listing an?

Das ist die vom Assembler generierte *.lst Datei. Dort ist jede
einzelne Programmzeile + Speicheradresse aufgelistet und du siehst
genau wie groß dein Programm ist.

Irgendwo hast Du einen Fehler, wenn das Programm ab einer gewissen
Größe nicht mehr läuft obwohl der Programmspeicher noch nicht voll
belegt ist!

Steffen

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was vergessen:

Du kannst ab da sagen, dass der Speicher des PIC voll ist, wenn Du
insgesammt n-Befehle bei n-Words Programmspeicher aufgeschrieben hasst.
So einfach isses.

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.