mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RB6,RB7 und ICD2 mit pic18f


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

Bewertung
0 lesenswert
nicht lesenswert
Nabend zusammen,

Ich möchte auf PORTB eines p18f2620 auf jedem Pin als Test ein 
Rechtecksignal ausgeben. Für alle Pins außer RB6,RB7 funktioniert das 
auch wunderbar. Die Pins RB6,RB7 sind mit angeschlossenem ICD2 dauerhaft 
0 ohne angeschlossenem ICD2 dauerhaft 1 (siehe Screenshot DB6,DB7).

Das Programm sieht wie folgt aus:
counter = 0;
while(1) {
    counter++;
    if (counter == 0) LATB = 0xaa;
    if (counter == 32768) LATB = 0x55;
}

Die Konfiguration ist u.A. wie folgt:
CONFIG_3H = _PBADEN_PORTB_4_0__CONFIGURED_AS_DIGITAL_I_O_ON_RESET_3H
CONFIG_4L = _DEBUG_OFF_4L & _LVP_OFF_4L;

Die Ports werden wie folgt initialisiert:
  // Disable all analog inputs and set analog port to digital i/o
  ADCON0=0x00;
  ADCON1=0x0f;
  // Configure port A output (1=input, 0=output)
  CMCON=0x07;
  TRISA=0x00;
  PORTA=0x00;
  // Configure port B output (1=input, 0=output)
  TRISB=0x00;
  PORTB=0x00;
  // Configure port C output
  TRISC=0x00;
  PORTC=0x00;

Habe es mit und ohne angeschlossenem ICD2 probiert.
Mit angeschlossenem Debugger sehe ich das zwar TRISB auf z.B. 0x55 geht 
PORTB aber nur auf 0x15 bzw. TRISB=0xaa und PORTB nur auf 0x2a. Die 
oberen beiden Bits sind also immer 0. Dies könnte ich noch verstehen da 
der ICD2 mit dran hängt.

Ohne ICD2 messe ich PORTB ohne jede zusätzliche Beschaltung direkt am 
Pic.
An RB6,RB7 ist weder ein Pullup noch ein Pulldown noch sonst irgendein 
Bauteil dran.

Alle bisher hier im Forum vorgeschlagenen Lösungen zu ähnlichen 
Problemen haben leider keinen Erfolg gebracht.
Was mache ich falsch?

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thorsten schrieb:

> Ich möchte auf PORTB eines p18f2620 auf jedem Pin als Test ein
> Rechtecksignal ausgeben. Für alle Pins außer RB6,RB7 funktioniert das
> auch wunderbar. Die Pins RB6,RB7 sind mit angeschlossenem ICD2 dauerhaft
> 0 ohne angeschlossenem ICD2 dauerhaft 1 (siehe Screenshot DB6,DB7).
[...]
> Was mache ich falsch?

Datenblatt? Insbesondere die Fußnote (3) auf Seite 95 (Table 9-3 PORTB 
I/O SUMMARY). Und die Beschreibung von REGISTER 23-5: CONFIG4L: 
CONFIGURATION REGISTER 4 LOW (BYTE ADDRESS 300006h) auf Seite 253.

Ich sehe gerade: Das /DEBUG-Bit hast Du schon gesetzt. Überprüfen würde 
ich das trotzdem noch mal. Was für einen Compiler nimmst Du? Ich kenne 
das nur mit dem #pragma config Anweisungen.

fchk

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Compiler verwende ich den sdcc. Ich habe damit schon einige Projekte 
gemacht und bisher keine Probleme gehabt (allerdings auch nie RB6,RB7 
benötigt).
Testweise habe ich das Programm auch wieder aus dem PIC ausgelesen und 
die Config Register angeschaut. Wenn ich mir die Hex Datei ansehe kommen 
mir Zweifel:

Die Konfiguration ist laut hex Datei wie folgt:
0E00000000C6181E008501000FC00FE00F4063
CONFIG4_L also 0x01 und nicht 0x81 d.h. nur STVREN gesetzt und somit 
DEBUG=0 also aktiv.

Ich denk das würde mein Problem erklären?

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau.

Warum nimmst Du nicht den Microchip-Compiler? Immerhin ist die 
Lite-Version kostenlos. Und niemand kennt die ganzen Macken der PICs so 
gut wie Microchip selber.

fchk

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK habs gefunden. Ich hätte als Programmiergerät nicht "Debugger" 
sondern "Programmer" nehmen sollen. Dann werden die Konfigurationsbits 
nicht geändert.

Danke Trotzdem für die Tipps.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Nachtrag zum Thema Microchip Compiler: Der hat bei mir unter Linux 
nicht auf Anhieb funktioniert. Der sdcc funktionierte direkt und bisher 
hat er mir keinen Grund gegeben zu wechseln. Im Endeffekt lag es ja auch 
nicht am Compiler.

Autor: Peda (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Fall war's nicht das Problem: Wenn man allerdings komische 
Effekte hat bei denen die Ausgaenge nicht tun was sie sollen, sollte man 
sicherstellen das die Ports richtig initialisiert wurden, d.h. auf 0 
gesetzt worden sind.

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.