- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: Messwert-Variablen auf LCD 16x2 ausgeben, will nicht per ITOA klappen

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Anzeige

    Powerstation Test
    Zitat Zitat von oderlachs Beitrag anzeigen
    Leider will der XC8 Compiler nichts mit uint8_t zu tun haben.
    Das hat mit XC8 nichts zu tun. Kein C-Compiler kennt das, auch wenn man den GCC für einen PC benutzt. Er kennt nur char und int. Um dem Compiler die modernen Bezeichnungen der Datentypen näher zu bringen, muß stdint.h includiert werden. Kipp einfach mal uint8_t in Google. Wenn ich ein ähnliches Problem habe, mach ich das so. Auch wenn ich eine Fehlermeldung nicht wirklich verstehe, ist der erste Versuch sie einfach in Google zu pasten.

    In MPLABX muß man das noch nichtmal wirklich schreiben. Einfach "#in" und schon bietet es "#include" an. Dann "<" und schon bekommt man alle Systemincludes angeboten. Mit "std" hat man dann die Standardincludes wie stdio.h, stdbool.h oder auch stdint.h in der Auswahl

    Es ist das Prinzip von C, daß der Compiler selbst wenig weiß und kann, außer zu compilieren. Das meiste, das er zum Compilieren braucht, kommt aus Headerfiles, so auch die internen Register des jeweiligen Chips (xc.h plus die Projekteinstellung des Prozessors). Und was das Programm zum funktionieren braucht, kommt aus Libraries, zu allererst aus der libc. Und auch die kennt der Compiler nicht, wenn man sie ihm nicht z.B. stdio.h oder string.h bekannt macht.

    MfG Klebwax

    P.S. "gewohnter C-Programmcode" ist ein etwas problematischer Begriff. Insbesondere für kleine µC gab und gibt es Compiler, die sich nicht vollständig an die C Standards halten. XC8, ehemals HighTech, wird da gerade aufgefrischt.
    Strom fließt auch durch krumme Drähte !

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.687
    .. Leider will der XC8 Compiler nichts mit uint8_t zu tun haben ..
    Hmmm, seltsam. Hast Du denn auch die <stdint.h> richtig eingebunden (#include ..) ? Denn

    Zitat Zitat von MPLAB® XC8 C CompilerUser’s Guide, ID: DS50002053G
    ..
    2.4.6 Sizes of TypesThe sizes of the basic C types, e.g., char, int and long, are not fully defined by the CCI. These types, by design, reflect the size of registers and other architectural fea-tures in the target device. They allow the device to efficiently access objects of this type. The ANSI C Standard does, however, indicate minimum requirements for these types, as specified in <limits.h>. If you need fixed-size types in your project, use the types defined in <stdint.h>, e.g., uint8_t or int16_t. These types are consistently defined across all XC compilers, even outside of the CCI.
    ..
    2.4.6.3
    MIGRATION TO THE CCI If you require a C type that has a fixed size, regardless of the target device, use one of the types defined by <stdint.h>
    ..
    Und auch
    Zitat Zitat von MPLAB® XC8 C CompilerUser’s Guide, ID: DS50002053G
    ..
    2.4.1.1EXAMPLEThe following shows a string constant being defined that uses escaped characters.const char myName[] = "Bj\370rk\n";
    ..
    Siehe z.B. diese Dokumentation.

    Puhhh - Klebwax war schneller . . .
    Ciao sagt der JoeamBerg

  3. #13
    HaWe
    Gast
    viele C libs können mit den stdint Datentypen int8_t oder uint8_t nichts anfangen, selbst wenn stdint #included ist, sie ewarten die "genuinen" Typen char oder int, je nachdem, was halt in den libs steht und verwednet wird.
    Selbst unsigned char oder signed char sind auf Lib- und Compilerebene nicht von vornherein mit char kompatibel, sie sind "etwas anderes".
    cstring arbeitet ausschließlich mit char, mit nichts anderem.
    Wenn ein cstring benutzt wird, muss also ein array of char übergeben werdem.

    Haben die eigenen Daten eine andere Struktur, musst du sie vorher oder hinterher entsprechend explizit casten, was oft sehr umständlich ist, besser also, man verwendet von vornherein das, was die Lib erwartet.


    char is signed on Intel (edit: and AVR) and unsigned on ARM (the Pi
    (edit: ) and ARM Cortex M0 + M3 + M4 e.g., Zero +Due, and ESP)).
    You cannot explicitly use "signed char" or "unsigned char" which, though legal types, are both distinct from the "char" type that library functions expect.

    The only option if the type of char is important (which it often is) is to use the "-funsigned-char" compiler option. All C compilers have similar options.
    "uint8_t" etc will fail when library functions are used.
    https://www.raspberrypi.org/forums/v...d0047#p1429279

    Das gilt also entsprechend verschärft für int8_t oder uint8_t und erst recht für selber definierte ganz "neue" Datentypen wie das "uChr " bei dir.
    Geändert von HaWe (16.02.2019 um 11:31 Uhr)

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo und Danke für Eure Hilfe und Erklärungen !!
    Wie gesagt mit PIC und MPLab betrete ich für mich noch "Neuland", von einigen "Testseitensprüngen" mal abgesehen. Ich google auch schon wenn was nicht so funzt, sonst wäre ich noch gar nicht so weit.
    Habe da solch "altes PIC-Büchlein" : "Programmieren von PIC Mikrocontrollern" - Der leichte Einstieg mit dem 16F84A von Dieter Kothz, das hat mich erst bewogen micht auf die PIC Ebene zu wagen.
    Dann bekam ich günstig dieses "EasyPIC-40" Bord und da versuche ich mich nun drann, neben dem AVR-Chips, meine Freizeit "sinnvoll" zu verkürzen.

    Gerhard

    @Oberall : der Tip mit der "<stdint.h>" war gut , hatte die nicht immer im include , ich Trottel
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. [ERLEDIGT] GLCD mit ST7920 ...es will nicht klappen
    Von oderlachs im Forum PIC Controller
    Antworten: 9
    Letzter Beitrag: 05.02.2019, 11:00
  2. Bascom und Sinus will nicht klappen
    Von JollyJumper8 im Forum Software, Algorithmen und KI
    Antworten: 7
    Letzter Beitrag: 10.10.2009, 21:33
  3. Variablen ausgeben.
    Von Testman3000 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 17.08.2007, 16:54
  4. Variablen auf Display ausgeben
    Von palermo im Forum C - Programmierung (GCC u.a.)
    Antworten: 20
    Letzter Beitrag: 22.12.2006, 10:55
  5. PWM mit Timer 1 will nicht klappen
    Von Speedking im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 29.07.2006, 03:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress