Forum: Projekte & Code PCF8574 aus-/einlesen


von Marcel (Gast)


Angehängte Dateien:

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.

von Marcel (Gast)


Angehängte Dateien:

Lesenswert?

Ups!!!

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

von Marcel (Gast)


Angehängte Dateien:

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.

von Marcel (Gast)


Angehängte Dateien:

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

von Alex (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

warum sendest du immer 2 x start + adresse pro zuriff??

von Sirko (Gast)


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

von Marcel (Gast)


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

von pebisoft (Gast)


Lesenswert?

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

von Andi (Gast)


Lesenswert?

Hallo,
woher bekomme ich den die i2c.h?
mfg, Andi

von Marcel (Gast)


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

von Marcel (Gast)


Angehängte Dateien:

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

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.