Forum: Mikrocontroller und Digitale Elektronik MPLAB und UART


von Falk B. (falk)


Lesenswert?

Hallo Allerseits,

ich nutze MPLAB von Microchip und den C18 Compiler. Wenn ich die 
Funktion OpenUSART() aus usart.h nutzen will, kommt folgende 
Fehlermeldung

MPLINK 4.00, Linker
Copyright (c) 2005 Microchip Technology Inc.
Error - could not find definition of symbol 'OpenUSART' in file 
'N:\Projekte\2063030_Netzschaltfeld\03_Arbeitsverzeichnis\033_Funktionsm 
usterphase\0333_FBG_Netzschaltfeld\Firmware\main.o'.
Errors    : 1

Wie es scheint findet der Linker die Bibliothek nicht, welche 
OpenUSART() enthält. Wie kann man das dem MPLAB/Linker beibringen?

MFG
Falk

von Meister E. (edson)


Lesenswert?

Hallo Falk,

ist denn im main.c der komplette Pfad zu usart.h per #include 
eingebunden?

Nachtrag:

Prüfe mal die Einstellungen unter

Project>Build Options>Project

dort findest du Eingaben für Include-, Library-, Linker-Path

Gruß,
Edson

von Falk B. (falk)


Lesenswert?

@Meister Eder (edson)

>ist denn im main.c der komplette Pfad zu usart.h per #include
>eingebunden?

Nö, warum auch? Alle Beispiele machen einfach

1
#include <usart.h>

Und fertig. Und der Compiler meckert ja nicht, wohl aber der Linker.

MFG
Falk

von Meister E. (edson)


Lesenswert?

Jetzt haben sich die Posts wohl überschnitten. Ich habe oben noch was 
hinzugefügt. Das mit dem kompletten Pfad war eine pure Vermutung, da ich 
mit dem C18 schon lange nichts mehr gemacht habe.

von Falk B. (falk)


Lesenswert?

@Meister Eder (edson)

>dort findest du Eingaben für Include-, Library-, Linker-Path

Stehen alle auf den entsprechenden Verzeichnissen im MCC18 Verzeichnis.

MFG
Falk

von Meister E. (edson)


Lesenswert?

Sorry, dann fällt mir auf die Schnelle auch nichts mehr ein. Momentan 
habe ich den C18 leider nicht installiert, kann also nicht nachschauen.

Naja, so ist wenigstens dein Thread oben geblieben ;)

Grüße,
Edson

von morph1 (Gast)


Lesenswert?

hast du nen mc mit mehreren usarts? dann musst du das kind beim 
richtigen namen nennen :)

von Falk B. (falk)


Lesenswert?

@ morph1 (Gast)

>hast du nen mc mit mehreren usarts?

Nein, ist ein 18F4221.

> dann musst du das kind beim richtigen namen nennen :)

Schon probiert, Fehlanzeige :-(

MFG
Falk

von Dieter W. (dds5)


Lesenswert?

Ich hatte vor einiger Zeit mal Schwierigkeiten mit Pfadnamen die länger 
als 64 Zeichen waren, kann mich aber nicht mehr an Einzelheiten 
erinnern.

von Falk B. (falk)


Lesenswert?

@Dieter Werner (dds5)

>Ich hatte vor einiger Zeit mal Schwierigkeiten mit Pfadnamen die länger
>als 64 Zeichen waren,

Problem ist bekannt, kann ich aber ausschliessen. Hab ein Testprojekt 
mit kurzen Pfadnamen angelegt, geht immer noch nicht. :-(

MfG
Falk

von Severino R. (severino)


Lesenswert?

Kannst Du nicht das gezippte Projekt (ev. auf's Minimum reduziert) 
posten, dann könnten wir es auch mal versuchen?

von Falk B. (falk)


Lesenswert?

1
#include <p18cxxx.h>
2
#include <usart.h>
3
4
void main(void) {
5
6
  // configure IOs
7
8
  TRISA = 0xFF;
9
  TRISB = 0x21;
10
  TRISC = 0x90;
11
  TRISD = 0xFF;
12
  TRISE = 0x00;
13
14
    PORTB = 0x20;
15
    PORTC = 0xFF;
16
17
  // configure UART
18
19
    OpenUSART(USART_TX_INT_OFF &
20
              USART_RX_INT_OFF &
21
              USART_ASYNCH_MODE &
22
              USART_EIGHT_BIT &
23
              USART_CONT_RX &
24
              USART_BRGH_HIGH,
25
              3);
26
27
    // endless main loop
28
29
  while(1) {
30
  }
31
}

Prozessor ist 18F4221

von Severino R. (severino)


Lesenswert?

Also ich konnte es compilieren und linken und auch in MPLAB SIM debuggen 
(single steppen).

MPLAB 8.10
C18 3.14
MPLINK 4.14

Kannst Du nicht das ganze Projekt posten, denn darin befinden sich auch 
div. Settings.

von Severino R. (severino)


Lesenswert?

Nachtrag:

Auch mit
MPLAB 8.14
MPLAB C18 v3.21
und
MPLINK 4.21

klappt's bei mir.

von Meister E. (edson)


Lesenswert?

severino:
>MPLINK 4.14
>MPLINK 4.21

Das könnte es sein. Falk hat angegeben:

>MPLINK 4.00

Ist das die böse MPLAB V8.0? Damit gabs doch jede Menge Ärger. Ich 
musste die Version komplett deinstallieren, um nachher mit V8.10 weiter 
arbeiten zu können.

von Falk B. (falk)


Lesenswert?

@  Meister Eder (edson)

>Ist das die böse MPLAB V8.0? Damit gabs doch jede Menge Ärger.

Ich hab die 7.6

MFG
Falk

von morph1 (Gast)


Lesenswert?

gibts dafür nen speziellen grund? die is ja doch etwas antik, vl liegts 
daran

von Falk B. (falk)


Lesenswert?

OK, das Problem wurde gefunden, wenn auch noch nicht behoben. Aus 
unerfindlichen Gründen ist die Bibliothek für den PIC18F4221 in meiner 
Compilerversion kastriert, gerade mal 6kB. Die für die meisten anderen 
Typen ist um die 500kB. Stellt man einen anderen Typen mit grosser 
Bibliothek ein läuft der Linker problemlos. Schöner Mist!

MFG
Falk

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.