Erledigt Fernsteuerrung endweder per I2C oder IR ?

Hallo Forum Gemeinde und Bastler

da ich nicht das erreicht habe was ich wollte von meinen Bastler "Freund/de" möchte ich euch um einen Rat oder Tipps mich freuen.

Also mein Anliegen was ich gerne Möchte folgendes:
habe eine Platine mit
---------------------------------------------------------------------------------------------
3x PCF8574AP
1x Für LCD - Adresse (&H70)
1x Für TASTEN (P0-P3) Schreib Adresse (&H72) Lese Adresse (&H73)
1x Für LED`S (P0-P3) Schreib Adresse (&H74) Lese Adresse (&H75)

---------------------------------------------------------------------------------------------Hier die Platine:
I2C_Fernbedinung_Endwurf1.JPG

Nu Möchte ich gerne wenn:
Ich die Taste P.0 Drücke das die LED P.0 Angeht, drücke ich die taste P.0 nochmal das die LED P.0 Wieder ausgeht....
Und die anderen drei gerne so hätte:
Wenn ich die taste P.1 Drücke leuchtet die LED P.1, beim loslassen Wieder ausgeht...

So ich stelle den Code hier mal rein verleicht kann mir einer mir mehr dazu sagen oder auch Tipps geben.

Hier der code:

CodeBox BascomAVR
$lib "Lcd_i2c.lib"
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Config I2cdelay = 15  'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.5  'I2C SCL Pin
Config Sda = Portc.4  'I2C SDA Pin

Const Pcf8574_lcd = &H70
Const Pcf8574_taster_schreibadresse = &B01110010  '&H72 - Taster ( Out )
Const Pcf8574_taster_leseadresse = &B01110011  '&H73 - Taster ( In )
Const Pcf8574_led_schreibadresse = &B01110100  '&H74 - LED ( Out )
Const Pcf8574_led_leseadresse = &B01110101  '&H75 - LED ( In )

I2cinit
Waitms 100  'sollte auch immer sein.

'sind die Variablen der IC Puffer
Dim Taste As Byte
Dim Led As Byte
Do
  Gosub Programm1  'liest den Pufferinhalt aller 8 Eingänge soll soll es ja sein
  Gosub Programm2  'schreibt in Puffer alle Ausgänge für LED
Loop

Programm1:
I2cstart
I2cwbyte Pcf8574_taster_leseadresse
I2cwbyte &B11111111  'IC für Tasten auf Eingang schalten.
I2crbyte Taste , Nack  'Byte in Variable speichern
I2cstop
'alle Taster toggeln
'Toggle Taste
Return  'Tasten Abrage beendet ab zu LED Anzeige(spring in Do auf Programm2)

'*******************************************

Programm2:
  I2cstart
  I2cwbyte Pcf8574_led_schreibadresse  'IC2 Adresse des PCF8574
  I2cwbyte &B00000000  'IC für LED auf Eingang schalten
'Hier kommen erst die Entscheidungen in Abhängigkeit der Taster
'für Abfrage Taste einmal drüchen L und nochmals drücken H
Toggle Taste.0
If Taste.0 = 0 Then Led.0 = 1
' hier wird Byte LED auf Binär 11111110 gesetzt
  I2cwbyte Led  'Byte Variable senden
'hier ohne toggeln
If Taste.1 = 0 Then Led.1 = 0
  I2cwbyte Led  'Byte Variable senden
If Taste.2 = 0 Then Led.2 = 0
  I2cwbyte Led  'Byte Variable senden
If Taste.3 = 0 Then Led.3 = 0
  I2cwbyte Led  'Byte Variable senden
If Taste.4 = 0 Then Led.4 = 0
  I2cwbyte Led  'Byte Variable senden
I2cstop
Return


Mit Freundlichen Grüßen
Thorsten Sch.
 
Mist was vergessen.
Wenn ich den controller Strom Anschliese leuchten meine 4 x LED und ich kan eine von 4 tasten drücken und es passiert nicht warum?
Die taster sind gegen GND
Und die LED´s Sind Plus 5V+

Gruß Thorsten Sch.
 
Hallo Forum,
als erstes möchte ich mich bei LotadaC entschuldigen.
Er hatte völlig Recht im Beitrag #16. Hätte niemals eine Hard- Software Lösung per PN mit Thorsten anfangen sollen.
Im Forum dies zu diskutieren und die Antworten von Thomas zu lesen, hätte euch auch viel Spaß gemacht.
Ja ich bin der Bastler "Freund/de" wie er mich bezeichnet. Nach unzähligen E-Mals war seine letzte Antwort Zitat: “ich will hier niemand das er Mir hilft“ und „Ich weis schon was Bascom mit einen code macht kann“
Er möchte eine fertige Software Lösung die sofort funktioniert und nicht ein Hinweis versuche es mal so oder so.
Sein jetzt gesendeter Code, war von mir 1:1 erstellt um noch mal grob zu vermitteln, wie I2C nach seiner Vorstellung angesprochen werden könnten. Mit Hinweis so würde ich es nicht umsetzen. Siehe meinen „ellenlangen Code“ da findest du, vieles über I2C Anwendungen.
Nun solltet Ihr im Forum mal eine Lösung für Thorsten erstellen, die auch funktionier, wie er es sich wünscht.
Meine Hardware Hilfe für ein I2C Modul hat er ja sehr Gut realisiert wie man sieht.
Als Helferlein habe ich versagt nun seit ihr Experten gefragt.
Freu mich auf Antwort von Thomas im Forum.

Nun noch seine letzte Anfrage gelesen. naja.
Mit freundlichen Grüßen
Fred
 
Zuletzt bearbeitet:
Hallo Dino,

wie bekannt, bin ich Neu in diesem Forum.
Nun habe ich mal das Link aufgerufen und bin richtig sauer auf Thorsten.
Dort wurden doch die wichtigsten Grundlagen sorgfältig, auch für Einsteiger, im Bereich I2C beschrieben.
Ich Dummer habe mir die Mühe gemacht, all dies nochmals akribisch direkt auf sein Projekt bezogen, noch mal zu erklären. Viel Code Beispiele und auch ein Code wie er alle Teilnehmer am Bus abfragen kann ob diese sich melden ohne erst mal eine Entscheitung zu treffen.
Sehr verwirrend war immer die Antwort „ich mache es anders“ funktioniert nicht. Somit benötige ich weitere Hilfe!
Nun kam der Punkt wo ich aufgab. Mit Verweis er soll doch lieber im Forum nachfragen dort gibt es Experten die vielleicht mehr Geduld haben wie ich.
Da ich im Ruhestand bin hätte ich die Zeit zum helfen aber so geht es nicht.

Wünsche Thorsten trotzdem viel Erfolg und werde das Thema weiter betrachten.
Möchte ja auch lernen wie es besser geht.

Mit freundlichen Grüßen
Fred
 
Zuletzt bearbeitet:
Hallo Forum Gemeinde und Bastler
jetzt habe ich was propiert mit den pcf8574 - 4x Taster 4x LED
wenn ich taste.0 drücke leuchtet Led.0, und beim loslassen geht die wieder aus. so wie bei den anderen 4 auch.

was ich nicht hin bekomme ist das beim drücken der taste.0 die led.0 auch anbleibt bis man wieder neu drückt und ausgeht.

könnte mir jemand tipps geben bitte danke

hier der code


CodeBox BascomAVR
 
Do
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111111
I2cstop

I2cstart
I2cwbyte Pcf8574_taster_leseadresse
I2crbyte Taster , Nack  'Port Lesen
I2cstop
'----MEIN BEISPIEL LED Dauer An
'I2cstart
'I2cwbyte Pcf8574_taster_leseadresse
If Taster.0 = 0 Then
'if Taster.0 = 0 Then  'Taste ist gedrückt
Toggle Led.0  'LED AN
'I2cwbyte &B11111110
'I2cstop
End If


die anderen 3 funktionieren als taster, drück man die taster geht dieled an und beim loslassen wieder aus wunderbar.
nur der taster.0 das der anbleibt da hänge ich fest.....

Bitte um tipps und rat auch gern von fred danke im vohrraus

Gruß Thorsten Sch.
 
Hallo Forum ich habe mein Code soweit wie ich das haben wollte, nur eins stört mich noch.....
Beispiel:
drücke ich Taster.0 läuft das Programm Klingelp ab
drücke ich input_1 läuft auch das Programm klingel ab, aber
beim starten des Controller:
LCD mit Text, LCD geht aus, und dann leuchten alle 4 LED warum was ist da noch falsch?
Ich Bitte um Rat und Tipps

Hier der complette code:


CodeBox BascomAVR
$lib "Lcd_i2c.lib"  'ersetzt die Standard LCD Library
$regfile = "m168def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32




'Config I2cdelay = 15  'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.5  'I2C SCL Pin
Config Sda = Portc.4  'I2C SDA Pin
Dim _lcd_e As Byte
_lcd_e = 64

Const Pcf8574_lcd = &H70  '&H70 - LCD 2x16
Const Pcf8574_taster_schreibadresse = &B01110010  '&H72 - Taster ( Out )
Const Pcf8574_taster_leseadresse = &B01110011  '&H73 - Taster ( In )
Const Pcf8574_led_schreibadresse = &B01110100  '&H74 - LED ( Out )
Const Pcf8574_led_leseadresse = &B01110101  '&H75 - LED ( In )

I2cinit

Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "V3/Sch.2015"
Waitms 800


'---Ausgänge---
'------------------------
Config Portd.6 = Output  'PD6 - Realis_1 - Katzen
Realis_1 Alias Portd.6
'------------------------
Config Portd.5 = Output  'PD5 - Realis_2 - Prtivat
Realis_2 Alias Portd.5
'------------------------
Config Portd.4 = Output  'PD4 - Realis_3 - Hauptleitung Aus
Realis_3 Alias Portd.4
'------------------------
Config Portd.3 = Output  'PD3 - Realis_4 - Licht
Realis_4 Alias Portd.3
'------------------------
Config Portd.2 = Output  'PD2 - Realis_5
Realis_5 Alias Portd.2
'------------------------
Config Portc.0 = Output  'PC2 - LED Realis 1-4
Led_realis Alias Portc.0
'------------------------
Config Portc.1 = Output  'PC1 - LED Taster ( TEST )
Led_taster Alias Portc.1
'------------------------
Config Portc.2 = Output  'PC2 - LED Eingang1
Led_eing1 Alias Portc.2
'------------------------
Config Portc.3 = Output  'PC3 - LED Eingang2
Led_eing2 Alias Portc.3
'------------------------
'Config Portd.1 = Output  'PD1 - Leer_01
'Leer_01 Alias Portd.1
'--------Ausgänge--------
'--------Eingänge--------
Config Portb.0 = Input  'PD0 - Ein_1
Portb.0 = 0
Input_1 Alias Pinb.0
Config Portb.1 = Input  'PD1 - Ein_2
Portb.1 = 0
Input_2 Alias Pinb.1
Config Portb.2 = Input  'PD2 - Ein_3
Portb.2 = 0
Input_3 Alias Pinb.2
Config Portb.3 = Input  'PD3 - Ein_4
Portb.3 = 0
Input_4 Alias Pinb.3
Config Portd.1 = Input  'PB1 - Taster ( TEST )
Portd.1 = 1
Taster_test Alias Pind.1
'-------Eingänge--------
Declare Sub Klingel_pk  'Klingel ( P ) und ( K )
Declare Sub Klingel_p
Declare Sub Klingel_3  'Klingel ( P )
Declare Sub Klingel_4  'Wartung programm
Declare Sub Ausgang_test

Dim Taster As Byte
Dim Led As Byte
Dim I As Long  'TIMER LICHT ( REALIS ) EINGANG
Dim E As Long
Dim A As Byte
Dim B As Byte
A = &B10000000  'PCF8574 PORT7 AUS
B = &B00000000

I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111111
Waitms 2
I2csend &H70 , A
I2cstop

Do
Gosub Programm_1
'---------------------------
If Taster.0 = 0 Then Gosub Klingel_p
'----PCF8574 schreiben:-----
  I2cstart
  I2cwbyte Pcf8574_led_schreibadresse  'IC2 Adresse des PCF8574
  I2cwbyte &B11111110  'Alle LEDs Leuchten
  I2cstop
If Taster.1 = 0 Then Gosub Klingel_pk
'----PCF8574 schreiben:-----
  I2cstart
  I2cwbyte Pcf8574_led_schreibadresse  'IC2 Adresse des PCF8574
  I2cwbyte &B11111101  'Alle LEDs Leuchten
  I2cstop
If Taster.2 = 0 Then Gosub Klingel_4
'----PCF8574 schreiben:-----
  I2cstart
  I2cwbyte Pcf8574_led_schreibadresse  'IC2 Adresse des PCF8574
  I2cwbyte &B11111011  'Alle LEDs Leuchten
  I2cstop
If Taster.3 = 0 Then Gosub Klingel_3
'----PCF8574 schreiben:-----
  I2cstart
  I2cwbyte Pcf8574_led_schreibadresse  'IC2 Adresse des PCF8574
  I2cwbyte &B11110111  'Alle LEDs Leuchten
  I2cstop
'End If
'---------------------------
If Input_1 = 1 Then Gosub Klingel_p  'KLINGEL-PRIVAT & KATZEN 0kleber
If Input_2 = 1 Then Gosub Klingel_pk  'KLINGEL-PRIVAT
Debounce Input_3 , 1 , Klingel_3 , Sub  'Wartung an der anlage
Debounce Input_4 , 1 , Klingel_4 , Sub
If Taster_test = 0 Then Gosub Ausgang_test
'------------------------------------------------------------------------
If I = 0 Then  'Timer LICHT
  Realis_1 = 0
  Waitms 1
Else
  Decr I
End If
Loop
'---I2C-Programm-Taster---
Programm_1:
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111111
I2cstop

I2cstart
I2cwbyte Pcf8574_taster_leseadresse
I2crbyte Taster , Nack
I2cstop
Return
'---I2C-Programm-Taster---

Sub Klingel_pk
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111101
I2csend &H70 , B
I2cstop
Realis_1 = 1  'TIMER LICHT EINGANG
I = 9000000  'TIMER LICHT EINGANG
Led_eing2 = 1
Led_realis = 1  '
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "( P ) & ( K )"
Realis_3 = 1
Waitms 400
Realis_3 = 0 : Realis_4 = 1
Waitms 400
Realis_4 = 0
Waitms 200
Realis_4 = 1 : Realis_3 = 1
Waitms 300
Realis_3 = 0
Waitms 300
Realis_4 = 0
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "B E R E I T"
Waitms 700
Led_eing2 = 0
Led_realis = 0
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111111
I2csend &H70 , A
I2cstop
End Sub
'-----------------------------------------------------------
Sub Klingel_p
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111110
I2csend &H70 , B
I2cstop
Led_eing1 = 1
Led_realis = 1
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "( P ) & ( - )"
Realis_3 = 1
Waitms 400  'Voher 500
Realis_3 = 0
Waitms 200
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "B E R E I T"
Waitms 700
Led_eing1 = 0
Led_realis = 0
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111111
I2csend &H70 , A
I2cstop
End Sub
'----------------------------------------------------------
Klingel_3:
I2cstart
If Taster.3 = 0 Then
Toggle Realis_1
I2cstop
End If
'---------------------------------------------------------
Klingel_4:
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111011
I2csend &H70 , B
I2cstop
Realis_5 = 1
  Toggle Realis_2
  Toggle Led_realis
  If Realis_2 = 1 Then
  Cls
  Locate 1 , 1
  Lcd "SERVICE - A N"
  Else
  Cls
  Locate 2 , 1
  Lcd "SERVICE - AUS"
  Wait 2
  Cls
  Locate 1 , 1
  Lcd "KLINGEL-MELDER"
  Locate 2 , 1
  Lcd "B E R E I T"
  I2cstart
  I2cwbyte Pcf8574_led_schreibadresse
  I2cwbyte &B11111111
  I2csend &H70 , A
  I2cstop
  Realis_5 = 0
Waitms 2
End If
Return
'--------------------------------------------------------
Sub Ausgang_test
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11110111
I2csend &H70 , B
I2cstop
Led_taster = 1
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Realis - 2 AUS"
Realis_2 = 1
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Realis&LED"
Led_realis = 1
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS1__ON"
Realis_1 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS1_AUS"
Realis_1 = 0
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS2__ON"
Realis_2 = 1
'Wait 2
'Locate 1 , 1
'Lcd "Funktion TEST"
'Locate 2 , 1
'Lcd "REALIS2_AUS"
'Realis_2 = 0
'Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS3__ON"
Realis_3 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS3_AUS"
Realis_3 = 0
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS4__ON"
Realis_4 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS4_AUS"
Realis_4 = 0
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS5__ON"
Realis_5 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS5_AUS"
Realis_5 = 0 : Led_realis = 0
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "LICHT AUSSEN"
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Licht - _AN"
Realis_1 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Licht - AUS"
Realis_1 = 0
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "LED EIN1&2"
Wait 2
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN1 = _ON"
Led_eing1 = 1
Wait 2
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN1 = AUS"
Led_eing1 = 0
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN2 = _ON"
Led_eing2 = 1
Wait 2
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN2 = AUS"
Led_eing2 = 0
Wait 2
Cls
Locate 1 , 1
Lcd "FERTIG GETESTET"
Locate 2 , 1
Lcd "Alles aus"
Led_taster = 0
Realis_2 = 0
Waitms 500
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "B E R E I T"
I2cstart
I2cwbyte Pcf8574_led_schreibadresse
I2cwbyte &B11111111
I2csend &H70 , A
I2cstop
End Sub

Return
End


PS: wenn alles dann so läuft, harke ich das ab als erledigt.....

Freundtliche Grüße
Thorsten Sch..
 
Ja ich weiß man könnte den Code bisschen aufräumen soory
 
Hi, könnte es sein, dass in deinen vielen Zeilen der Startwert für die leds nicht gesetzt wird. Wenn du eine Variable 'led' anlegst, ist diese zuerst auf 0 gesetzt. Bei dir bedeutet das, dass alle Leds leuchten (wenn ich mich jetzt nicht täusche). Also, am Anfang mal schreiben: led=256, alle bits auf 1 setzen. Oder ist es bei dir inzwischen 'A'?, was du an die led_schreibadresse sendest?
 
Hallo Thorsten,

wie geschrieben möchte auch speziell im Bereich I2C dazu lernen.
Du schreibst soweit funktioniert dein Code nur beim Start geht LCD aus und alle 4 LED an.
Vor der Schleife eine LCD Anzeige ist okay. Dann kommen diese Befehle.
I2cstart
I2cwbytePcf8574_led_schreibadresse
I2cwbyte&B11111111
Waitms2
I2csend&H70 , A ‘ ist 01110000, 10000000
I2cstop
Was soll das bewirken?
Finde ich in den Subs auch immer wieder.
A und B sind START-condition im Adressbyte. Sollten doch, nach meiner Meinung, nicht im Datenbyte anhängig sein.
Wie gesagt will ja noch was lernen. Da ich immer nur die MC I2C Hardware mit "i2c_TWI.lib" nutze, sind hier wohl andere Verhältnisse.

Mit freundlichen Grüßen
Fred
Gleich noch einen Gruß an Tschoeatsch. Ist prima das du auch in diesem Forum Mitglied bist.
 
Hallo zusammen!

Der Anmerkung von Fredred muss ich ebenfalls zustimmen!

I2cstart
I2cwbytePcf8574_led_schreibadresse
I2cwbyte&B11111111
Waitms2
I2csend&H70 , A ‘ ist 01110000, 10000000
I2cstop

Was soll das bewirken?

Was soll denn das Ganze?
Wie bist du auf diese Ansteuerung gekommen? :stupid:

Hast du dir das Datenblatt vom PCF8574(A) wirklich mal angesehen, oder nur irgendeinen Programmcode kopiert?
Im Datenblatt steht ganz eindeutig, wie die Datenübermittlung (Ansteuerung) erfolgen muss!




Hallo Tschoeatsch! :party:

Aufrichtiges Willkommen, hier im MC-Forum! :ciao:

Ich gehe mal davon aus, dass dir hier nur ein kleiner Tippfehler unterlaufen ist :flute:
Also, am Anfang mal schreiben: led=256, alle bits auf 1 setzen.

led = 256 :hmmmm:

Du meintest doch bestimmt:
led = 255 :pleasantry:





Ach so, Thorsten:
vielleicht interessiert dich ja DIESER Beitrag.......
und du lernst dabei noch etwas!


Grüße,
Cassio
 
Hi, na, das war ja schonmal ein toller Einstieg von mir (peinlich, peinlich). Danke für die nette Begrüßung, vielleicht kann ich auch mal besseres beitragen, als wirres Gegatze und fasche Tipps :smile:
 
Hi Tschoeatsch,

Hi, na, das war ja schonmal ein toller Einstieg von mir (peinlich, peinlich). Danke für die nette Begrüßung, vielleicht kann ich auch mal besseres beitragen, als wirres Gegatze und fasche Tipps :smile:
das wird schon. Ich tippe mal, du bist der Tschoeatsch aus dem deutschen Bascom-Forum :D
Da werden dann wohl noch einige Beiträge ohne Tippfehler kommen ;)

Herzlich Willkommen hier im Forum :flowers:

Gruß
Dino
 
Ja, einen dino03 wird's wohl auch nicht so häufig geben.
Tippfehler machen ist eigentlich das, was ich ganz gut kann. Jetzt schau' ich mich mal hier ein bisschen um, man lernt ja nicht aus, vorallem wenn man gut im Vergessen ist... Ich hör' jetzt mal mit offtopic auf, damit Thomas von Thorsten sich wieder melden kann
 
Ich tippe mal, du bist der Tschoeatsch aus dem deutschen Bascom-Forum :D

Hi zusammen!

bei dem Nickname habe ich mir das auch gleich gedacht...... ;)
und deswegen habe ich es auch nur für einen Tippfehler gehalten.

Normalerweise passiert ihm ja soetwas nicht. ;)

Grüße,
Cassio
 
Hallo Cassio,

wie in meinen Kommentaren zu lesen, bin ich der Übelste der mit Rhetorik und Rechtschreibung im Forum ist.
Natürlich habe ich auch gleich gesehen das led = 256 ein Tippfehler wahr. Aber warum nicht Led = 1. Led ist doch eine Byte- Variable, somit werden doch alle Bits auf 1 gesetzt.

Gleich noch eine Frage. In DIESER Beitrag....... schreibst du dass Bit0 den Status festlegst ob Eingang oder Ausgang.
Ich war immer der Meinung, Bit0 ist IC Puffer für lesen oder schreiben. Ob die Pins als Ausgang oder Eingang festgelegt werden, benötigen doch einen zusätzlichen I2cwbyte Befehl.

Bin sicher du erklärst mir meinen „Denkfehler“
Mit freundlichen Grüßen
Fred
 
Hallo Fredred! :ciao:

Aber warum nicht Led = 1.
Led ist doch eine Byte- Variable, somit werden doch alle Bits auf 1 gesetzt.

Wie kommst du denn auf diese Idee?
Betrachten wir das Ganze mal binär:
Die Variable LED ist ein Byte==> also &B0000_0000

Wenn ich dem Byte nun den Wert "1" übergebe, dann wäre das doch:
LED = 1 also LED = &B0000_0001

Übergeb ich aber den Wert "255", dann wäre es doch:
LED = 255 und binär gesehen: LED = &B1111_1111

Tja und LED = 256 wäre binär:
LED = &B1_0000_0000 (und damit kein Byte mehr)

Deswegen war ich der Meinung, dass es ein Tippfehler sein muss.




Gleich noch eine Frage. In DIESER Beitrag....... schreibst du dass Bit0 den Status festlegst ob Eingang oder Ausgang.
Ich war immer der Meinung, Bit0 ist IC Puffer für lesen oder schreiben.

Natürlich gibt das Bit0 die Schreib- oder Leserichtung an.
Das sich die Pins am PCF dann wie Eingäng oder Ausgänge verhalten war nur im "übertragenen" Sinne gemeint.
Ich dachte eigentlich, dadurch wird die Funktionsweise verständlicher.....
scheinbar ist das Gegenteil der Fall und sorgt vereinzelt für Verwirrung. ;)


Grüße,
Cassio
 
Hallo Cassio,

In Hex und binär lesen/schreiben bin ich besser wie in der deutschen Sprache.

Wie ich auf diese Idee komme, ist BASCOM bedingt.
für Programmtest nutze ich ja das Hyperterminal v1.9h. Zeigt ja auch Binär an.
Im Programmablauf „Print Variable Led = 1. Anzeige ist 11111111. Led = 0 Anzeige = 00000000. Setze ich ein Bit zB. Led.0 auf 0 ist Anzeige 11111110.
Ist Terminalanzeige Schrott? Klaube ich nicht.
Ja die Terminalausgabe passen auch zur Hardware. LED = 1 alle dunkel LED = 0 alle leuchten usw.
Wird wohl nur ein „Glücksfall“ in meine Programmierung sein.
Aber es funktioniert.

Mit freundlichen Grüßen
Fred
 
Hallo Forum melde mich mal "Wieder" Oh Mein Gott denk ihr das ist mir egal, ich sende euch mal ein Code aus den Buch AVR-Microcontroller PCF8574 Lauflicht mein Code....

da ist aber kein LED.0 Bit gesetzt richtig was muss ich den sonst eingeben?


CodeBox BascomAVR
$regfile = "m168def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Config Sda = Portc.4
Config Scl = Portc.5

Const Pcf8574_schreib_adresse = &H74  '&H40 = 64 IC2 Adresse des PCF8574

I2cinit

Dim Pcf8574_ausgabe As Byte
Dim Pcf8574_ausgabe1 As Byte
Dim Pcf8574_ausgabe2 As Byte

Pcf8574_ausgabe2 = &B00001111
Pcf8574_ausgabe1 = &B01010101
Pcf8574_ausgabe = &B11111100

Do
'----PCF8574 schreiben:-----
  I2cstart
  I2cwbyte Pcf8574_schreib_adresse  'IC2 Adresse des PCF8574
  I2cwbyte Pcf8574_ausgabe  'LEDs nach Muster an
  I2cstop
  Waitms 200
  Rotate Pcf8574_ausgabe , Right

  I2cstart
  I2cwbyte Pcf8574_schreib_adresse  'IC2 Adresse des PCF8574
  I2cwbyte Pcf8574_ausgabe1  'LEDs nach Muster an
  I2cstop
  Waitms 200
  Rotate Pcf8574_ausgabe1 , Left

  I2cstart
  I2cwbyte Pcf8574_schreib_adresse  'IC2 Adresse des PCF8574
  I2cwbyte Pcf8574_ausgabe2  'LEDs nach Muster an
  I2cstop
  Waitms 200
'  Rotate Pcf8574_ausgabe2
Loop
End


Gruß Thorsten Sch.

Ps: Vielen dank Für die nebenbei Kommentare....
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)