PIC24 Digital I/O Problem (Pin lesen/schreiben)

Gast #1296478
Lesenswert?
• ▲
▼
Ich bastel grad mit einem PIC24FJ64GA002. Ich hab es geschafft, über den 
ADC Werte einzulesen, mit PWM etwas auszugeben und einen Timer-Interrupt 
im 1ms Takt laufen zu lassen. Das einfachste, nämlich einen Pin auf 
output zu schalten und 0V oder 3V auszugeben macht Probleme. Ich hab im 
Datenblatt gelesen, das die Pins, die zum ADC gehören, nach dem Reset 
standardmäßig auf analog in gesetzt sind. Aber die Pins, die ich 
verwenden will (z.B. RA2, RA3, RB7, RB8) gehören nicht zum ADC. Ich habe 
auch schon per conig word das JTAG Interface abgeschaltet. So langsam 
habe ich keine Idee mehr, warum das nicht funktioniert. Folgendes habe 
ich gemacht:
1
int main(void)
2
{
3
  // Oszillator Taktteiler konfigurieren:
4
  CLKDIV = CLKDIV_2;  // CPU = 16MHz, Timer = 8MHz
5
  
6
  // Ausgabepins für die PWM konfigurieren
7
  OUT_PIN_PWM1 = FUNCTION_PWM1;
8
  OUT_PIN_PWM2 = FUNCTION_PWM2;
9
  OUT_PIN_PWM3 = FUNCTION_PWM3;
10
  OUT_PIN_PWM4 = FUNCTION_PWM3;
11
  
12
  // I/O Pins konfigurieren
13
  TRISA = ~((1 << 2) || (1 << 3));
14
  asm volatile ("NOP");
15
  LATA = (1 << 2) || (1 << 3);
16
  
17
  // ADC konfigurieren
18
  init_adc();
19
  
20
  // PWM initialisieren
21
  init_pwm();
22
  
23
  // Timer initialisieren
24
  init_timer();
25
  
26
  while (1)
27
  {
28
    asm volatile ("NOP");
29
  }  
30
  
31
  return 0;
32
}

Hat jemand vielleicht eine Idee, was ich außer TRISA und LATA setzen 
(bzw. für später: PORTA einlesen) noch machen muss?

PS: es gab hier im Forum schonmal einen Beitrag mit dem gleichen 
Problem, nur leider ist da keine Lösung beschrieben

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren