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


von Martin (Gast)


Angehängte Dateien:

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.
1
  
2
volatile long unsigned int receive;
3
volatile bit ready;
4
5
void main(void)
6
{
7
  ...
8
  unsigned char i, i2;
9
  long unsigned int buffer, out;
10
  static bit bit_test;
11
  ...
12
  ...
13
  ready = 1;
14
  receive = 0b10010110101001010110010101;
15
  while (1 == 1)
16
  {
17
    if (ready == 1)
18
    {
19
      buffer = receive;
20
    //  ready = 0;
21
      if (receive == 0b10010110101001010110010101)
22
        LATB5 = 1;
23
      else 
24
        LATB5 = 0;
25
    }
26
    //wait some time...
27
    for (i=0; i<100; i++){}
28
29
    out = buffer;
30
    //serial output on portb.2
31
    for (i = 0; i < 30; i++)
32
    {
33
      //increase pulse width
34
      for (i2=0; i2<10; i2++){}
35
36
      bit_test = out & 1;
37
      if (bit_test == 1)
38
        LATB2 = 1;
39
      else 
40
        LATB2 = 0;
41
      out = out >> 1;
42
43
    }
44
  }//while  
45
}//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

von Martin (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.