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.
Ups!!! Ich hab die Initialisierung des Busses im Programm vergessen, sorry!! Hier noch mal die Änderung!!
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.
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
Soll keine Kritik sein, aber Funktionsdefinitionen haben in einer Header-Datei nichts zu suchen.
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
@ 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 LCDs 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
endlich tauchen funktionelle programme auf. nach mehreren anläufen funktioniert es. schön gemacht. ich bin anfänger. mfg pebisoft
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.