PIC und PICClite läuft nicht richtig

Gast #73990
Lesenswert?
• ▲
▼
Ich möchte eine Tastermatrix-Abfrage machen. Leider habe ich
festgestellt, dass es in C nicht so stabil läuft.
z.B. DIe Taste erkennt er nur, wenn man noch ein Delay einbaut, oder
den Port 2mal beschreibt. Hab die gleiche Routine in PIC-Assembler
geschrieben, dort hat's wunderbar ohne zusätzlichem "Gebastel"
funktioniert.

TAR ist ein unsigned long (jedes Bit ist eine Taste)
PORTD Output
PORTB Input

//Taster 1-4 abfragen:
  PORTD=0b11111110;
//  PORTD=0b11111110;  <== mit dieser Zeile läuft's
  TAR=(TAR+(PORTB&0x0f)); // Wenn Eingang =0V => Taste gedrückt
  TAR=~TAR;               // invertieren


Hat jemand eine Idee was das Problem sein könnte?

Bin dankbar für jeden Hinweis.

Gruss

Meiri



Mein System:
MPLAB 6.4
PICLITE
PIC16F877/16MHz
Angehängte Dateien:
Gast #73991
Lesenswert?
• ▲
▼
Tippe mal, Du bist zu schnell ...

Die Schaltung hat eine (zwar nur kleine) Kapazität. Deshalb braucht der
Eingangspin ein paar ns, um auf den korrekten Pegel zu kommen.

Ein paar nops dürften Dein Problem auch lösen.
Oder ein langsamerer Quarz ;-)

Stefan
Gast #73992
Lesenswert?
• ▲
▼
Danke Stefan

Hab den Assembler-Code von C mit dem Assembler-Code, den ich selber
geschrieben habe verglichen. Im C-Code liest er unmittelbar nach dem er
PORTD beschrieben hat PORTB ein. => zu früh.
Vielen Dank für den Tipp

Meiri

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.