www.mikrocontroller.net

Forum: Projekte & Code PCF8574 aus-/einlesen


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.
Ich habe mal ein paar Funktionen geschrieben um den PCF8574 am I2C Bus
zu lesen/schreiben. (Mit CodeVision)

Ich weiß das ich dafür relativ viele Variable gebraucht hab obwol man
damit etwas sparsamer sein sollte aber sonst wird es zu
unübersichtlich. Sicherlich könnte man einige Variablen einsparen, oder
sogar alles in eine Funktion schreiben.
Ich hoffe das ich nichts wichtiges vergessen hab, ich denke aber dass
das Programm so schon laufen müsste.
(man müsste das ganze eigentlich als include-Datei schreiben)

Ich habe jetzt aber noch nicht genügend Zeit gehabt die Funktionen 100%
zu testen. Bis jetzt hat alle so funktioniert wie ich es wollte.
Vielleicht könnt ihr mir ja noch Anregungen oder Vorschläge machen.

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

Bewertung
0 lesenswert
nicht lesenswert
Ups!!!

Ich hab die Initialisierung des Busses im Programm vergessen, sorry!!
Hier noch mal die Änderung!!

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

Bewertung
0 lesenswert
nicht lesenswert
Hmm, ich habe noch eine Funktion geschrieben in der man die Ports eines
Teilnehmers initialisieren kann.
Das ist für den Programmstart recht hilfreich!!!

Also noch mal die geänderte Datei.

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

Bewertung
0 lesenswert
nicht lesenswert
Ich habe alles mal in eine Include-Datei geschrieben.

Ich wäre aber echt dankbar wenn vieleicht jemand eine Idee hätte wie
man weniger Variablen benutzen könnte.

Gruß Marcel

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll keine Kritik sein, aber Funktionsdefinitionen haben in einer
Header-Datei nichts zu suchen.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum sendest du immer 2 x start + adresse pro zuriff??

Autor: Sirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist nur aufgefallen, dass 114 Dez. nicht 78h, sondern 72h ist!

Aber noch eine andere Frage: Ich möchte noch ein LCD anschließen und da
mir die Ports ausgegangen sind, müsste ich das auch mit I2C machen. Aber
kann ich dann die Anschlüsse des PCF auch einfach wie Ports ansprechen?
Hab noch überhaupt keine Ahnung von LCD's und I2C/ Bus allgemein. Wäre
dies z.B. über die Variable "alarm" im Code
pcf_pinwert(PCF_LAMPEN, 7, alarm);
so einfach möglich. Würd gern eine LCD library (von Peter Fleury)
nutzen und les jetzt alles, was mit I2C zu tun hat. Das hier ist ein
schönes Beispiel dafür, denk ich!

Bye
Sirko

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Alex:
Nein, das sehe ich nicht als Kritik. Du hast natürlich Recht!!! Mir war
es aber eigentlich auch sehr wichtig das man genau nachvollziehen kann
WAS und WIE ich es gemeint habe. Es ist nur zur Verständlichkeit.

@Sebastian:
Hmmm, das weiß ich auch nicht so genau :o) Ich habe überall die ersten
zwei Zeilen auskommentiert:

//i2c_start();             // Start zur Datenübertragung
//i2c_write(pcf_teilnehmer);  // Übergebene Adresse senden

Bis jetzt funktioniert auch alles noch!! Ich kann es dir echt nicht
sagen wieso ich das drin hatte?????!!!! Danke für den Hinweiß !!!!!!

@Sirko:
Auch du hast Recht!!!! 114 Dez ist 72hex. Da hab ich im Binärmuster
eine "1" vertauscht!
Ein schönes "Experiment- Beispiel" wäre das sicher, ein LCD mit dem
PCF8574 anzusteuern. Ich habe es auch schon mal im I-Net gelesen, das
geht. (Ist schon ne weile her... ) Ich glaube aber auch das es so
ziemlich umständlich ist. Es gibt da bestimmt andere Bausteine und
Möglichkeiten. Es gibt doch sogar LCD’s die man direkt am I2C-Bus
anschließen kann, da braucht man keine extra Bausteine mehr. Aber davon
habe ich leider gar keine Ahnung. Ich selber programmiere mit dem ATMEL
erst seit einem halben Jahr. Da gibt es bestimmt „zig“ Profis hier im
Forum ;o)

Bis dahin.....

Gruß Marcel

Autor: pebisoft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
endlich tauchen funktionelle programme auf.
nach mehreren anläufen funktioniert es. schön gemacht.
ich bin anfänger.
mfg pebisoft

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
woher bekomme ich den die i2c.h?
mfg, Andi

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andi.
Hmm, das kommt drauf an mit welcher Software du deinen Atmel
programmierst! Wenn du mit CodeVision programmierst, dann steht das im
Ordner: (meist) C:\cvavr\inc . Aber ich denke mal das du mit etwas
anderem programmierst. Dann könntest du dir die Test-Software von
CodeVision herunter laden. Mit dieser Software kann man wirklich schon
viel machen. Dort müsste sie dann dabei sein. Die findest du unter:
http://www.hpinfotech.ro/ . Ich könnte sie ja auch einfach hier als
Anhang dran setzen, aber ich weiß nicht ob man das einfach so darf!!
Echt KEINE AHNUNG.

Grüße Marcel

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

Bewertung
0 lesenswert
nicht lesenswert
Ich hab den fehlerhaften Code (zu viele Anweisungen) korrigiert.
Ich habe ja fälschlicher Weise 2 mal die "start & Adresse" auf den
I2C-Bus gesendet. Das war natürlich falsch!!!

Ich habe auch gemerkt das es wirklich teilweise Probleme mit dem alten
Quellcode gegeben hat. Das auslesen der Ports funktionierte teilweise
recht langsam. Jetzt funktioniert aber alles, soweit ich es testen
konnte.

Grüße Marcel

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.