Forum: Mikrocontroller und Digitale Elektronik I2C -Anfängerfrage


von Gerhard H. (Firma: Rentner) (spectro)


Lesenswert?

Man verzeihe mir eine sicher dumme Anfängerfrage:

Bei electronicwings.com gibt es ein Source- File für eine RTC-Uhr:
https://www.electronicwings.com/avr-atmega/real-time-clock-rtc-ds1307-interfacing-with-atmega16-32

Ich komme nicht drauf, was ich anstelle von "I2C_Master_H_file.h" 
verwenden muss, denn die Header- Datei ist unbekannt.
Für die LCD ist mir lcd-routines.h klar aber brauche ich denn wirklich 
für I2C einen eigenen Header? Oder stehe ich da auf dem Schlauch?
Für sachdienliche Hinweise bedanke ich mich schon mal im Vorhinein!

Gerhard

von Daniel V. (danvet)


Lesenswert?

Leider kann ich den SourceCode nicht runterladen (will mich da nicht 
anmelden). Aber irgendwoher müssen ja die I2C Funktionen ja kommen, dazu 
braucht es das passenden Headerfile und letztendlich dann auch das 
passende C-File dazu.

von Steve van de Grens (roehrmond)


Lesenswert?

Daniel V. schrieb:
> Leider kann ich den SourceCode nicht runterladen

Ging mir gerade genau so.

Kontaktiere den Autor des Projektes.

von Helmut -. (dc3yc)


Lesenswert?


von Gerhard H. (Firma: Rentner) (spectro)


Lesenswert?

Danke sehr!
 Ich hab zwar bei Github herumgestochert und Header-Files gefunden, aber 
die haben nicht gepasst.
Was ich nicht verstehe, ist, warum diverse header-dateien nicht gleich 
im Studio7 integriert sind.
Hat das einen triftigen Grund?

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Gerhard H. schrieb:
> Was ich nicht verstehe, ist, warum diverse header-dateien nicht gleich
> im Studio7 integriert sind.
> Hat das einen triftigen Grund?

Weil keiner weiß, welche du brauchst und du würdest dich schön bedanken, 
wenn alle Header-Dateien dieser Welt, möglicherweise noch diverse mit 
gleichem Namen, aber unterschiedlichem Inhalt, sich auf deinem Rechner 
breit machen.

von Andras H. (kyrk)


Lesenswert?

Gerhard H. schrieb:
> Hat das einen triftigen Grund?

Das ist deine Aufgabe als Entwickler. Sicher zu stellen, das alle 
Abhängigkeiten da sind. Wenn nicht, dann musst du im Notfall diese 
selber implementieren.

von Gerhard H. (Firma: Rentner) (spectro)


Lesenswert?

Das ist mir natürlich schon verständlich, aber ich bin halt der Ansicht, 
dass zumindest die wirklich wichtigen Header-Dateien wie z.B. 
lcd-routines, I2C und zum Bleistift oled_ssd1306.h integriert sein 
sollten, denn die braucht man ja äusserst oft.

Ich weiss schon, dass es bei Arduino einfacher gestaltet ist, aber ich 
verbeisse mich halt lieber in "richtiges" C. Ist einfach interessanter 
(für mich zumindest), obwohl ich  nur langsam weiter komme, aber ich 
versuche, mich da richtig durchzubeissen und schon Monaco Franze sagte : 
" A bissl wos geht immer!"
Dass da von mir dumme Fragen auftauchen und ich hier im Forum lästig 
bin, tut mir leid, aber in dem Forum wird einem prima geholfen und es 
geht was weiter, wenigstens "a bissl wos",  altersbedingt :-)

: Bearbeitet durch User
von Steve van de Grens (roehrmond)


Lesenswert?

Gerhard H. schrieb:
> Das ist mir natürlich schon verständlich, aber ich bin halt der Ansicht,
> dass zumindest die wirklich wichtigen Header-Dateien wie z.B.
> lcd-routines, I2C und zum Bleistift oled_ssd1306.h integriert sein
> sollten, denn die braucht man ja äusserst oft.

Sage das dem Autor des Projektes.

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Gerhard H. schrieb:
> Das ist mir natürlich schon verständlich, aber ich bin halt der Ansicht,
> dass zumindest die wirklich wichtigen Header-Dateien wie z.B.
> lcd-routines, I2C und zum Bleistift oled_ssd1306.h integriert sein
> sollten, denn die braucht man ja äusserst oft.

Es gibt keine "DIE wirklich wichtigen header-Dateien". Es gibt nur 
hunderte, die irgend jemand irgendwie mal irgendwo geschrieben hat.

Die IDE kommt mit der toolchain, bestehend aus Compiler, Linker, und der 
C-Library, und allem, was es braucht, um auf einem Zielprozessor 
C-Programme zu schreiben. Schreiben musst du die dann aber selber.

Mehr bekommst du bei Arduino. Das kommt mit den "wirklich wichtigen 
header-Dateien", nur halt mit anderen, als das Projekt, was du da 
irgendwo aus dem Netz gefischt hast, braucht.

Oliver

von Cyblord -. (cyblord)


Lesenswert?

Gerhard H. schrieb:
> Man verzeihe mir eine sicher dumme Anfängerfrage:
>
> Bei electronicwings.com gibt es ein Source- File für eine RTC-Uhr:
> 
https://www.electronicwings.com/avr-atmega/real-time-clock-rtc-ds1307-interfacing-with-atmega16-32
>
> Ich komme nicht drauf, was ich anstelle von "I2C_Master_H_file.h"
> verwenden muss, denn die Header- Datei ist unbekannt.
> Für die LCD ist mir lcd-routines.h klar aber brauche ich denn wirklich
> für I2C einen eigenen Header? Oder stehe ich da auf dem Schlauch?
> Für sachdienliche Hinweise bedanke ich mich schon mal im Vorhinein!
>
> Gerhard

Es liegt an der Herangehensweise: Als Anfänger irgendwelchen Code 
kopieren und nutzen wollen.
Wäre mir damals nie in den Sinn gekommen.

Selber Code schreiben und verstehen ist das Motto.

von Gerhard H. (Firma: Rentner) (spectro)


Lesenswert?

Zwischendurch probiert man halt was fertiges. Bin ja kein Profi

von Cyblord -. (cyblord)


Lesenswert?

Gerhard H. schrieb:
> Zwischendurch probiert man halt was fertiges. Bin ja kein Profi

Genau das ist der Trugschluss. Code von anderen Leuten in eigenen 
Projekten zu verwenden ist viel schwieriger als selbst was zu machen.
Es zeugt eher von echtem Skill, wenn man fremden Code nutzen kann um 
seine eigenen Projekte zu beschleunigen. Es ist die Königsklasse.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Gerhard H. schrieb:
> Das ist mir natürlich schon verständlich, aber ich bin halt der Ansicht,
> dass zumindest die wirklich wichtigen Header-Dateien wie z.B.
> lcd-routines, I2C und zum Bleistift oled_ssd1306.h integriert sein
> sollten, denn die braucht man ja äusserst oft.

Und die Header allein bringen dir was genau? Wo ist die Implementierung 
dazu? Hast du da Quellcode oder eine lib? Wenn nicht, dann bringen dir 
die Header auch nichts.

von Sebastian W. (wangnick)


Lesenswert?

Gerhard H. schrieb:
> Das ist mir natürlich schon verständlich, aber ich bin halt der Ansicht,
> dass zumindest die wirklich wichtigen Header-Dateien wie z.B.
> lcd-routines, I2C und zum Bleistift oled_ssd1306.h integriert sein
> sollten, denn die braucht man ja äusserst oft.

Die wirklich wichtigen (z.B. libc) sind integriert. Für LCD und I2C hat 
sich bisher außerhalb von Arduino kein Standard herauskristallisiert. 
Und selbst in der Arduino-Umgebung gibt es keine integrierte 
LCD-Bibliothek.

Diese Libs sind halt Segen und Fluch zugleich. Einerseits sind sie 
hilfreich um schnelle Erfolge zu bekommen. Andererseits sind manche 
davon von recht zweifelhafter Qualität.

Dazu kommt: Ich z.B. brauche oled_ssd1306.h nicht "äusserst oft".

LG, Sebastian

von Helmut -. (dc3yc)


Lesenswert?

Cyblord -. schrieb:
> Und die Header allein bringen dir was genau? Wo ist die Implementierung
> dazu? Hast du da Quellcode oder eine lib? Wenn nicht, dann bringen dir
> die Header auch nichts.

Ich hoffe, dass er durch meinen Link auf die passende Implementierung 
gestossen wurde. Ein bisschen Denken kann auch für Rentner (mich!) nicht 
schaden.
Wobei, ob's für ihn passt, weiss ich nicht. Das muss er schon selber 
herausfinden.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Gerhard H. schrieb:
> Das ist mir natürlich schon verständlich, aber ich bin halt der Ansicht,
> dass zumindest die wirklich wichtigen Header-Dateien wie z.B.
> lcd-routines, I2C und zum Bleistift oled_ssd1306.h integriert sein
> sollten, denn die braucht man ja äusserst oft.

Wer soll das denn machen?
Dazu muß man erstmal bombensichere Bibliotheken verfügbar haben. Die, 
die irgendwelche Bastler mal ins Web gestellt haben, sind es nämlich 
nicht. Die gehen bestenfalls nur für wenige AVR/ARM Derivate und auch 
nur unter bestimmten Bedingungen. Auch haben sie oft Seitenfeffekte, 
z.B. harte Wartezeiten, die andere Funktionen ausbremsen.

Die Header sind auch nur ein ganz kleiner Teil des 
Entwicklungsaufwandes. Sie machen nur die Funktionen bekannt, die in den 
eigentlichen vorkompilierten oder quelloffenen Libs stehen.
Auch in Profiumgebungen (IAR, Keil) wirst Du nur ganz wenige Libs für 
irgendwelche Hardwareerweiterungen finden. Die Auswahl ist einfach zu 
riesig.

> ... denn die braucht man ja äusserst oft.

Das "man" ist aber sehr weit aus dem Fenster gelehnt. Was Du persönlich 
benötigst, muß noch lange nicht allgemein gültig sein.

von Klaus R. (klara)


Lesenswert?

Gerhard H. schrieb:
> Man verzeihe mir eine sicher dumme Anfängerfrage:
>
> Bei electronicwings.com gibt es ein Source- File für eine RTC-Uhr:
> 
https://www.electronicwings.com/avr-atmega/real-time-clock-rtc-ds1307-interfacing-with-atmega16-32
>
> Ich komme nicht drauf, was ich anstelle von "I2C_Master_H_file.h"
> verwenden muss, denn die Header- Datei ist unbekannt.
> Für die LCD ist mir lcd-routines.h klar aber brauche ich denn wirklich
> für I2C einen eigenen Header? Oder stehe ich da auf dem Schlauch?
> Für sachdienliche Hinweise bedanke ich mich schon mal im Vorhinein!
>
> Gerhard

Ich kann Deine Probleme gut nachvollziehen. Die Kritik an Dir teile ich 
nicht. Wenn schon jemand wie hier electronicwings etwas verkaufen will, 
bzw. anpreist, dann sollte die vorgestellte Software auch vollständig 
sein. Und eine Header-Datei gehört in jedem Fall dazu. Ein Link auf 
diese Datei wäre das Mindeste.

Mir ist das vor ein paar Wochen ebenso ergangen als ich von Ardurino 1.8 
auf 2.0 umgestiegen bin. Bei zwei Projekten waren auf einmal 
Header-Dateien fehlerhaft, bzw. passten nicht mehr.

Anbei eine Adresse, bei denen ich bisher noch nie entäuscht worden bin.
https://randomnerdtutorials.com/

mfg Klaus

von Oliver S. (oliverso)


Lesenswert?

Klaus R. schrieb:
> Wenn schon jemand wie hier electronicwings etwas verkaufen will,
> bzw. anpreist, dann sollte die vorgestellte Software auch vollständig
> sein. Und eine Header-Datei gehört in jedem Fall dazu. Ein Link auf
> diese Datei wäre das Mindeste.

Es gehört tatsächlich noch mehr dazu als nur der Header. Und all das 
findet sich ohne großes suchen auf der o.a. Webseite.

Allerdings erfordert die Nutzung von Software anderer Leute tatsächlich, 
daß man wenigstens den Versuch macht, zu verstehen, um was es da geht. 
Völlig planloses kopieren tuts da selten.

Da stellt jemand kostenlos seine Arbeit ins Netz. Da kannst du noch so 
viel plärren und mit den Füßen aufstampfen, es nutzt nix. Was und wie 
derjenige sein Zueg ins Netz stellt, ist alleine dessen Sache. Du musst 
es ja nicht benutzen.

Oliver

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.