mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16F1827 - Problem mit Latch


Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich bin gerade dabei für mein momentanes Projekt die 
Fernbedienungs-Empfangsroutine zu schreiben. Dabei bin ich beim Testen 
ob das ganze auch so tut wie es soll auf ein seltsames (oder bin ich 
einfach nur so doof?) Problem gestoßen. Doch erstmal was ich gemacht 
habe:

Das kleine Testprogramm unten bekommt über einen Interrupt ein Phillips 
RC5 Datenpaket (noch Manchestercodiert) sowie ein Readyflag. Hier 
ersetzt durch die beiden Konstanten.
Die erste If() soll eine LED einschalten, sobald der gewünschte Befehl 
gekommen ist und wieder ausschalten sobald was anderes kommt. 
Funktioniert auch.
Die dann folgende For Wiederholung soll das in "receive" empfangene 
Datenpaket seriell über ein Portpin ausgeben. Funktioniert für sich 
selbst auch.
  
volatile long unsigned int receive;
volatile bit ready;

void main(void)
{
  ...
  unsigned char i, i2;
  long unsigned int buffer, out;
  static bit bit_test;
  ...
  ...
  ready = 1;
  receive = 0b10010110101001010110010101;
  while (1 == 1)
  {
    if (ready == 1)
    {
      buffer = receive;
    //  ready = 0;
      if (receive == 0b10010110101001010110010101)
        LATB5 = 1;
      else 
        LATB5 = 0;
    }
    //wait some time...
    for (i=0; i<100; i++){}

    out = buffer;
    //serial output on portb.2
    for (i = 0; i < 30; i++)
    {
      //increase pulse width
      for (i2=0; i2<10; i2++){}

      bit_test = out & 1;
      if (bit_test == 1)
        LATB2 = 1;
      else 
        LATB2 = 0;
      out = out >> 1;

    }
  }//while  
}//main

Problem ist nun, sobald in der for Wiederholung die else Bedingung 
ausgeführt wird, werden in LATB alle Ausgangspins gelöscht und LATB2 
entsprechend der Zuweisung gelöscht bzw. gesetzt. Hääää??? Warum verhält 
sich ein BCF 0xd, 0x2 hier anderes als woanders im Quellcode???
Ich hoffe, ihr habt einigermaßen verstanden, wo mein Problem liegt...

Das ganze Projekt habe ich als Zip angehängt, bitte mich nicht hängen, 
ich weiß das es noch etwas chaotisch ist...
Compiler ist der Hi Tech V9.71a Lite und IDE ist MPLAB 8.56

Danke schonmal für eure Hilfe!

Gruß Martin

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem ist gelöst... Neue Version von MPLAB und dem C Compiler hat 
geholfen. Oder die Neuinstallation, k.A...

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.