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
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ß
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
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
@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
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.
Na sagte ich ja schon im anderen Thread - nimm den 876er dann wirds schon klappen ;) MfG, DSH
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
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
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.
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.