Forum: Mikrocontroller und Digitale Elektronik pic24 und MPLAB mit C30


von hugo (Gast)


Lesenswert?

Hallo

Ich versuche mein Glück gerade mit dem PIC24 (p24FJ32GA002.h) und C30.
Ein einfaches Programm...RA1 und RA2 auf high schalten.
In der Simulation kann man die einzelnen Bits beobachten.
TRISA wird korrekt geändert. Aber mit PORTAbits.RA0=1; ändert sich nur 
das Bit in LATA. Wieso tut sich bei PORTA nichts?

int main(void)
{
  _ADON=0;
  _C1EN=0;
  _C2EN=0;
  _C2OUTEN=0;
  _C1OUTEN=0;
  TRISB=2047;
  TRISA=65532;
  a=0;
  b=4;
  c=a+b;
  PORTAbits.RA0=1;
  PORTA=0b0000000000000011;
  c=b-a;
  PORTAbits.RA1=1;
  while(1==1);
  return 0;

}

Config: Adress 57FC...FFFF
        Adress 57EE...7FFF

In der Hardware funktioniert es auch nicht...doch dort suche ich einen 
eventuellen Fehler erst, wenns in der Software funkt =). Deshalb 
versuche ich es erst mit der Simulation.
Ich werde demnächst einen Versuch mit dem Assembler starten. Vielleicht 
klappts mit dem besser. Aber jetzt mal Gute Nacht =)

mfg

von Schoasch (Gast)


Lesenswert?

Hi

Probier mal in die LAT-Register selbst zu schreiben. Im grunde sollte 
man immer in die LAT-Register schreiben, dann umgeht man den 
read-modify-write Problematik.

Du kannst statt:
1
while(1==1);
einfach
1
while(1);
schreiben.

mfg Schoasch

von hugo (Gast)


Lesenswert?

Hallo.

Mit LATAbits.LATA1=1 habe ich es auch schon versucht. Dabei ändert er 
zwar das Bit im LAT Register aber im PORTA tut sich nichts.

mfg

von Franko P. (sgssn)


Lesenswert?

Hallo

evtl solltest du den PORTA noch für Digital-Anwendung umschalten

AD1PCFG = 1;


Gerhard

von hugo (Gast)


Lesenswert?

Danke...das wars:)
Sind halt die Anfangsprobleme*g*.

mfg

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.