www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24 Digital I/O Problem (Pin lesen/schreiben)


Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
int main(void)
{
  // Oszillator Taktteiler konfigurieren:
  CLKDIV = CLKDIV_2;  // CPU = 16MHz, Timer = 8MHz
  
  // Ausgabepins für die PWM konfigurieren
  OUT_PIN_PWM1 = FUNCTION_PWM1;
  OUT_PIN_PWM2 = FUNCTION_PWM2;
  OUT_PIN_PWM3 = FUNCTION_PWM3;
  OUT_PIN_PWM4 = FUNCTION_PWM3;
  
  // I/O Pins konfigurieren
  TRISA = ~((1 << 2) || (1 << 3));
  asm volatile ("NOP");
  LATA = (1 << 2) || (1 << 3);
  
  // ADC konfigurieren
  init_adc();
  
  // PWM initialisieren
  init_pwm();
  
  // Timer initialisieren
  init_timer();
  
  while (1)
  {
    asm volatile ("NOP");
  }  
  
  return 0;
}

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  TRISA = ~((1 << 2) || (1 << 3));
  TRISA = ~((1 << 2) | (1 << 3));

Kannste weglassen:  asm volatile ("NOP");

>  LATA = (1 << 2) || (1 << 3);
  LATA = (1 << 2) | (1 << 3);

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh verdammt! Das ist wohl der blödeste Fehler der mir je passiert ist! 
Ich glaube ich brauche eine Pause.

Danke für deine Hilfe

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.