LED Matrix PIC ansteuerung

Gast #4266970
Lesenswert?

Hallo,
ich habe einen PIC16F887 und versuche gerade eine 10x10 LED Matrix damit 
anzusteuern um ein kleines "Snake" game zu basteln.
Nach ein paar versuchen muss ich aber feststellen, dass der PIC mit 8MHz 
internem Oszillator vielleicht etwas zu langsam bzw. schwach ist.
Meint ihr es ist ganz gut mit diesem PIC machbar und ich habe es einfach 
"schlecht" programmiert oder sollte ich einen externen Oszillator mit 
einer höheren Frequenz nehmen oder vielleicht sogar auch stattdessen auf 
einen anderen 32er PIC umsteigen?

Ein grober Ablauf sieht in etwa so aus:

1.PIC wird gestartet

2.Lege ein Array aus unsigned short an was 10 lang ist.
(10 Lang für die 10 LED's an der Y Achse und das unsigned short für 16 
Bit um den zustand der LED's auf der X Achse darzustellen, also jede LED 
wird durch ein Bit repräsentiert)

3.Aktiviere den Timer0 Interrupt, der sich um die Spiellogik kümmert
(Bei Snake passiert das ja nur ca. 2 mal die Sekunde).
Wenn es einen Time0 Interrupt gibt setze alle Bits des Arrays auf 0, 
behandle die Spiel Logik z.B. wenn eine bestimmte Taste unten ist die 
Schlange nach oben bewegen, und zeichne anschließend die Schlange und 
das essen oder andere Sachen(Damit meine ich, dass die entsprechenden 
Bits in dem Array gesetzt werden).

3.Zeichne die ganze Zeit das Array indem ich über das komplette Array 
iteriere das entsprechende Bit abfrage und gegebenenfalls die LED kurz 
aufleuchten lasse(Ich kann ja immer nur eine LED zu einem Zeitpunkt 
ansteuern)
Gast #4267036
Lesenswert?

> 3.Zeichne die ganze Zeit das Array

Machst du das in einem Interrupt?

Normalerweise nimmt man für das LED-Multiplexing einen Interrupt, der 
die LEDs ohne Störungen gleichmäßig ansteuert.

Der 0,5 Sekunden Interrupt setzt nur ein Flag, beendet sich sofort 
wieder, damit er den LED Interrupt nicht zu lange unterbricht.

Die Hauptschleife kümmert sich dann in der übrig bleibenden Zeit um 
Tasten und Spiellogik.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren