Hallo, ich bin neu hier und habe ein paar Grundkenntnisse in
Microcontrollerprogrammierung, aber ich habe einige Probleme einen Port
Expander anzusteuern.
Meine Hardware ist folgende:
-MyAVR MK2 Board mit Atmega8
-MyTWI Port Expander
-MYAVR LCD
Ich kann leider nur den ganzen A-Port bzw. den ganzen B-Port ansteuern,
aber nicht die einzelnen Bits. Des Weiteren habe ich versucht einen
Eingang des Port Expanders mit einem "normalen" Eingang an der
Hauptplatine mittels einer IF Funtion zu verknüpfen, auch das
funktionerte nicht. Selbst eine simple Ansteuerung durch einen Ausgang
direkt an der Hauptplatine mit einem externen Eingang funktionierte
nicht.
Habe früher schon mit dem Teil gearbeitet, aber bin da noch schlechter
durchgestiegen als jetzt.
Rene P. schrieb:> Ich kann leider nur den ganzen A-Port bzw. den ganzen B-Port ansteuern,> aber nicht die einzelnen Bits.
Das ist sehr bedauerlich.
> Habe früher schon mit dem Teil gearbeitet, aber bin da noch schlechter> durchgestiegen als jetzt.
Dann besteht doch Hoffnung. Nur Mut ...
Das Problem hierdran ist, das es sich hier um ein Projekt handelt,
welches relativ schnell abgearbeitet werden muss und ich nur als
Unterstützung helfe
Rene P. schrieb:> Das Problem hierdran ist, das es sich hier um ein Projekt handelt,> welches relativ schnell abgearbeitet werden muss und ich nur als> Unterstützung helfeRene P. schrieb:> Ich kann leider nur den ganzen A-Port bzw. den ganzen B-Port ansteuern,> aber nicht die einzelnen Bits. Des Weiteren habe ich versucht einen
Natürlich kann man nur den ganzen Port ansteuern, man kann aber
vorher einzelne bits setzen, bzw. löschen.
Hier ein Beispiel wie man Werte ausgibt (in Pseudo Sprache), da du
nicht geschrieben hast, welche Sprache benutzt wird:
http://www.myavr.info/download/produkte/mytwi/techb_mytwi-portexpander_de_en.pdf
[...]
void outPorts(uint8_t data, uint8_t ackn)
zur Übermittlung der gewünschten Pinbelegung (=data).
[...]
Liest sich zumindest beim Durchblättern der PDF ein wenig komisch.
Hast du den Code aus der oben genannten Quelle genutzt?
Wenn ja sollte es genügen das 0xFF aus der Funktion outPorts(1,0xFF) mit
dem entsprechenden Hexwert zu ersetzen. z.B. 0x81 für das erste und
letzte Bit an PortB.
Oh sorry, in C sind wir da dran.
Versuche grade einige andere Programme zusammen zusetzen, aber ich habe
ständig Fehlermeldungen bezüglich fehlender Libs, obwohl ich diese auch
im Projektordner abgelegt habe. Weder <> noch"" hilft mir da, habe auch
schon den ganzen Pfad mit angegeben, aber das bringt auch nichts.
Ja den Code habe ich genutzt, habe auch schon die ganzen Eingänge A0-A7
/ B0-B7 per Hex Wert rausgefunden.Nur sehe ich da das Problem, wenn ich
einige Eingänge durch die Hauptplatine mit dem Port Expander nutzen
möchte, dann passiert am µC nix,und wenn ich einige Eingänge des Port
Expanders auslese und ein anderer wird betätigt, der eigentlich nichts
damit zu tun haben sollte, dann wird die Funktion nicht TRUE
Rene P. schrieb:> Nur sehe ich da das Problem, wenn ich> einige Eingänge durch die Hauptplatine mit dem Port Expander nutzen
Und ich sehe da das Problem im fehlendem Code.
Im ANhang habe ich das gestrige, gesamte Programm. Wie gesagt, momentan
bin ich dabei es aufzustückeln um Fehler auszmärzen, aber da bin ich
noch nicht so weit gekommen.
Danke im Voraus!
Rene P. schrieb:> Also laut MyTWI Port Expander PDF wäre 0,0xFE Eingang A0 und 1,0xFF alle> Ausgänge auf der B Seite
Edit ging nicht mehr, also:
Adresse PinA = 0 // Eingang, Wert lesen
Adresse PinB = 1 // Eingang, Wert lesen
Adresse PortA = 2 // Ausgang, Wert schreiben
Adresse PortB = 3 // Ausgang, Wert schreiben
Ich habe die Adresse im vorigem Beitrag auch falsch geschrieben,es
sollte 3 sein (fur PortB - Wert AUSGEBEN).
OK Danke ich versuchs gleich mal. Wie sieht es eigentlich mit der
Verbindung mit den normalen Ein- und Ausgängen aus?
z.B.: if ( PC0 AND (!(1<<PC1) && 0,0xFE)
{
PB0 // schalte Ausgang B0
}
Da kamen wohl ein paar Fehler auf einmal rein, war eigentlich auch nur
so als Beispiel gedacht.
if ( (!(data==1,0xFB)) && Endschalter_eingefahren && Regensensor )
So in etwa sollte das Aussehen
Rene P. schrieb:> So in etwa sollte das Aussehen
Hast du es überhaupt geschafft, irgendetwas zu senden oder zu
empfangen ?
Hast du einen LogicAnalyzer ?
Mit dem Code nicht, habe aber vorher meine Taster usw. direk aufs Board
verdrahtet, und den Code angepasst, dann ging es. Aber mit dem Port
Expander und die LCD Anstuerung machen mir noch zu schaffen.
Nen LogicAnalyzer habe und kenne ich nicht, wollte über AVR Studio 5
oder 7 versuchen zu simulieren, aber das ist auch noch ne Baustelle.
Sobald dieses Projekt durch ist, werde ich mich da weiter vertiefen, nur
momentan habe ich kaum noch Zeit für etwas anderes...
Rene P. schrieb:> So in etwa sollte das Aussehen
Ich hatte hauptsächlich Bedenken bei dem "!".
Guck dir mal den Unterschied zwischen den Operatoren "!" und "~" an.
Rene P. schrieb:> Mit dem Code nicht, habe aber vorher meine Taster usw. direk aufs Board> verdrahtet, und den Code angepasst, dann ging es. Aber mit dem Port
Ohne Ausgabe (und wenn es nur LEDs sind) wirst du ganz einfach nicht
weiterkommen.
Übersetze den Beitrag "Re: MyAVR Port Expander Ansteuerung"
verbinde PortB.4-PB.6 über entsprechende Widerstände mit LEDs und lass
es laufen, dann weisst du wenigstens ob die Ausgabe funktioniert.
Marc V. schrieb:> Übersetze den Beitrag "Re: MyAVR Port Expander Ansteuerung"> verbinde PortB.4-PB.6 über entsprechende Widerstände mit LEDs und lass> es laufen, dann weisst du wenigstens ob die Ausgabe funktioniert.
Edit ging nicht mehr, es ist PortA.4 - PortA.6
Rene P. schrieb:> Das geht nicht :-/ hast Du den Code auch in c?
Nein.
Flashe mal das angehängte HEX.
PA.0-PA.3 sind Eingänge, PortA.4-PA.7 sind Ausgänge.
PA.4 und PA.7 gehen auf 1, PA.5 und PA.6 auf 0
1sec. Pause
PA.5 und PA.6 gehen auf 1, PA.4 und PA.7 auf 0
1sec. Pause
und wieder von vorne.
Probiere es mal, dann sehen wir weiter.
Habe das Programm jetzt drauf. Die Leds leuchten abwechselnd, das passt.
Die Eingänge werden bei dem Programm aber nicht abgefragt oder sehe ich
das falsch? Habe leider nur 2 Taster grade zur Verfügung und habe diese
doppelt ausgegeben