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

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.