mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC16F877 Flash als Speicher für Konstanten nutzen


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
//arrow down picture 40x20
const PROGMEM unsigned char arrow_down[] = {
0x1F,0xFF,0xFF,0xFF,0xF8,0x20,0x00,0x00,0x00,0x04,0x40,0x00,0x00,0x00,0x02,0x47,
0xFF,0xFF,0xFF,0xE2,0x43,0xFF,0xFF,0xFF,0xC2,0x41,0xFF,0xFF,0xFF,0x82,0x40,0xFF,
0xFF,0xFF,0x02,0x40,0x7F,0xFF,0xFE,0x02,0x40,0x3F,0xFF,0xFC,0x02,0x40,0x1F,0xFF,
0xF8,0x02,0x40,0x0F,0xFF,0xF0,0x02,0x40,0x07,0xFF,0xE0,0x02,0x40,0x03,0xFF,0xC0,
0x02,0x40,0x01,0xFF,0x80,0x02,0x40,0x00,0xFF,0x00,0x02,0x40,0x00,0x7E,0x00,0x02,
0x40,0x00,0x3C,0x00,0x02,0x40,0x00,0x18,0x00,0x02,0x20,0x00,0x00,0x00,0x04,0x1F,
0xFF,0xFF,0xFF,0xF8
};

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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube das Schlüsselwert war ROM anstelle von PROGMEM, aber diese 
Info basiert nur auf "ganz dunklen" Erinnerungen ;-)

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, aber das alleinige Austauschen des Schlüsselwortes war es leider 
nicht.
Zumindes meckert der Kompiler darüber...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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.


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

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

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.