Antworten

Der Beitrag verursachte die folgenden Fehler, die behoben werden müssen:
Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.
Einschränkungen: 8 pro Beitrag (8 verbleibend), maximale Gesamtgröße 8,79 MB, maximale Individualgröße 1 MB
Entfernen Sie den Haken der Dateianhänge, die gelöscht werden sollen
Klicken Sie hier oder ziehen Sie Dateien hierher, um sie anzuhängen.
Anhänge und andere Optionen
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Zusammenfassung

Autor vloki
 - 07.11.2022, 09:32:06 CET
Noch was:

Früher oder später wird es zum Problem werden, dass

#define _XTAL_FREQ    16000000

in einem Header einer Bibliothek definiert wird.

Das ist maximal ungünstig, weil die Oszillatorfrequenz ja projektabhängig ist
und noch anderweitig benötigt werden könnte, wo es keinen Sinn macht den Header
der LCD_I2C Bibliothek einzubinden.

Man kann das beispielsweise lösen, indem man das in den Compiler Optionen projektweit übergibt.
(Siehe Anhang)

Beim Arduino hat man derartige Probleme nicht, weil die Oszillatorfrequenz fest voreingestellt ist.
Läuft einfach immer gleich schnell. Wie ein Auto auf einem Kinderkarussell ;-)
Autor vloki
 - 05.11.2022, 21:07:56 CET
Zitat von: misax in 05.11.2022, 16:48:50 CETIch habe das erste Beispiel im Netz gefunden und habe die I2C.h und config.h downgeloaded. Wo muss ich die denn jetzt hinkopieren damit das Compilieren klappt ?
Wie Peter schon sagte. Du nimmst am besten das komplette Projekt und schaust zuerst, ob es ohne Fehler kompiliert.

Dann änderst du den Prozessor. Das hat meist zur Folge, dass die Configuration-Bits in der Datei config.h nicht mehr passen. Hier passt das erst mal, aber die musst du sowieso auf deine Hardware anpassen. Die config.h Datei wäre besser ein .c File, aber dazu vielleicht später mehr.

Die I2C_LCD Bibliothek aus dem Beispiel wäre besser mit einem passenderen Namen versehen
und in einem eigenen Ordner außerhalb des Projektes aufgehoben. (nur einmal für viele Projekte)
Sie besteht aus einer .c und einem .h Datei.

In der .c ist der Sourcecode, welcher in der IDE hinzugefügt wird. Damit in der main.c Funktionen aus der I2C_LDC.c aufgerufen werden können, muss der Compiler wissen, wie die aussehen. Deshalb wird in der main.c der I2C_LCD.h Header inkludiert, in dem die Beschreibungen (Prototypen) der Bibliotheksfunktionen enthalten sind. In der IDE wird der Header auch noch dem Projekt hinzugefügt, obwohl das nicht unbedingt sein müsste. Er muss nur in einem der IDE bekannten Pfade zu finden sein, wodurch sich ein weiteres Thema ergibt ;-)

Beim Arduino funktioniert im Prinzip alles gleich, nur dass es jemand (für dich) schon organisiert/gemacht hat...
Autor Peter
 - 05.11.2022, 16:54:56 CET
Bei den meisten Compilern muss man nur das Projekt
laden und kann es dann compilieren. Sollte hier auch so sein.
Also nicht den Quellcode kopieren und ihn dann einfügen.
Dann findet der Compiler nicht die anderen Sachen.
Autor misax
 - 05.11.2022, 16:48:50 CET
Ich habe das erste Beispiel im Netz gefunden und habe die I2C.h und config.h downgeloaded. Wo muss ich die denn jetzt hinkopieren damit das Compilieren klappt ?
Autor Peter
 - 05.11.2022, 16:02:00 CET
Hallo
Librarys gibt es bei dem Compiler auch.
Kenne mich aber nicht so gut mit dem Compiler aus.
Hier mal ein Beispielprogramm, weis nicht ob es noch angepasst werden muss.

#include < xc.h>
#include "config.h"
#include "I2C.h"

void main(void) {
    
    I2C__Init();
    LCD_Init(0x4E);    // Initialize LCD module with I2C address = 0x4E
 
    LCD_Set_Cursor(1, 1);
    LCD_Write_String("  Welcome To ");
    LCD_Set_Cursor(2, 1);  
    LCD_Write_String("  MicroDigiSoft ");
    __delay_ms(2500);

    while(1)
    {
     }
    return;
}

Und hier nochmal einen Link. https://simple-circuit.com/mplab-xc8-i2c-lcd-pic-microcontroller/ und
https://microdigisoft.com/pic16f877a-interfacing-i2c-lcd-16x2-with-pic-microcontrollers/

Ist denn alles richtig angeschlossen ?
Autor misax
 - 05.11.2022, 15:26:31 CET
hallo;
ich komme aus der ATMEGA-Welt und bin Neuling mit PIC-Prozessoren.
Kann mir jemand ein ganz einfaches Beispielprogramm für den PIC16F884 posten, in dem ein Zeichen über I2C auf einen LCD2004 ausgegeben wird ?
Beim Arduino bindet man eine Bibliothek ein und dann ist das ganze eine Sache von wenigen Programm-Zeilen.
Geht es so ähnlich einfach auch mit dem PC16F884 ?
Vielen Dank

Similar topics (5)