PIC16F877 Flash als Speicher für Konstanten nutzen

Gast #933635
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe die Aufgabe ein bestehendes Programm eines Atmega32 auf einen 
PIC16F877 umzuschreiben. Leider habe ich zur Zeit noch keine große 
Ahnung/Erfahrung bei der Programmierung von Mikrokontrollern.

Mein Problem ist, dass ich ein Display ansteuern muss und hierfür 
vordefinierte Grafiken im Hex Format vorliegen habe. Die einzelnen 
Zahlen ,Buchstaben und Symbole wurden aus einzelnen Bitmaps in Hex 
Format umgewandelt und in Arrays abgelegt. Wenn ich die ganzen Daten nun 
als konstante Arrays (für jedes Symbol ein Array) anlegen will ist mein 
Speicher ziemlich schnell voll.

Wenn ich das richtig verstanden habe wurden diese Daten bei dem Atmega32 
mit dem Schlüsselwort "PROGMEM" im Flash Speicher abgelegt.

z.B.
1
//arrow down picture 40x20
2
const PROGMEM unsigned char arrow_down[] = {
3
0x1F,0xFF,0xFF,0xFF,0xF8,0x20,0x00,0x00,0x00,0x04,0x40,0x00,0x00,0x00,0x02,0x47,
4
0xFF,0xFF,0xFF,0xE2,0x43,0xFF,0xFF,0xFF,0xC2,0x41,0xFF,0xFF,0xFF,0x82,0x40,0xFF,
5
0xFF,0xFF,0x02,0x40,0x7F,0xFF,0xFE,0x02,0x40,0x3F,0xFF,0xFC,0x02,0x40,0x1F,0xFF,
6
0xF8,0x02,0x40,0x0F,0xFF,0xF0,0x02,0x40,0x07,0xFF,0xE0,0x02,0x40,0x03,0xFF,0xC0,
7
0x02,0x40,0x01,0xFF,0x80,0x02,0x40,0x00,0xFF,0x00,0x02,0x40,0x00,0x7E,0x00,0x02,
8
0x40,0x00,0x3C,0x00,0x02,0x40,0x00,0x18,0x00,0x02,0x20,0x00,0x00,0x00,0x04,0x1F,
9
0xFF,0xFF,0xFF,0xF8
10
};

Ich suche seit gestern nach einer Möglichkeit das mit dem PIC16F877 auch 
so in der Art zu machen, konnte aber leider noch nichts finden.
Ich hoffe einer von euch kann mir einen Tipp geben wie ich das Problem 
lösen kann.

Ich verwende MPLAB IDE v8.10 von Microchip und den picc lite Kompiler 
von Hi-tech (Vorgabe vom Betrieb).

Danke schon mal im Vorhinein.

Gruß
Christian
#933668
Lesenswert?
• ▲
▼
Christian wrote:
> ich habe die Aufgabe ein bestehendes Programm eines Atmega32 auf einen
> PIC16F877 umzuschreiben.

Das geht aber nur, wenn in dem ATmega32 noch massig Ressourcen frei 
sind:

ATmega32: 16k*16 Flash, 2k SRAM
PIC16F877: 8k*14 Flash, 368 Byte SRAM

Der PIC dürfte aber eher mehr brauchen durch das ständige Page 
Umschalten.


>
1
> //arrow down picture 40x20
2
> const PROGMEM unsigned char arrow_down[] = {
3
>

Das klingt sehr danach, das der Flash schon gut voll ist.

Bei 14 Bit im PIC-Flash kriegt man auch nur ein Byte pro Word 
gespeichert oder man muß umständlich Bitschiften.

Das wird also ein ziemliches Gemäre werden (keine Interruptvektoren 
usw.).
Wer denkt sich denn bloß sowas aus.
Viel leichter gehts umgekehrt (PIC -> AVR).


Peter
#933673
Lesenswert?
• ▲
▼
Christian wrote:
> Danke, aber das alleinige Austauschen des Schlüsselwortes war es leider
> nicht.
> Zumindes meckert der Kompiler darüber...

Was sagt denn das Map-File, wie voll der ATmega32 überhaupt ist?
Vorher brauchst Du garnicht erst anfangen.
Du mußt ja erstmal wissen, ob Du überhaupt eine kleine Chance hast.


Peter

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.