-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: PCF8574p macht Probleme

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    PCF8574p macht Probleme

    Anzeige

    Bei meinen ersten Gehversuchen mit einem I2C Portexpander(PE)PCF8574p habe ich arge Probleme.

    Ich steuer den PE über I2C an ..es wird eine Schlefe gebildet die ein Byte von 0 bis255 zählt und wieder herrunter...dieses Byte wird jeweils zum PE gesendet..soweit so gut.

    An den 8 Ausgangsports des PCF8574p sind über Vorwiderstand(330 Ohm) 8 LEDs gegen +5V. Liegt alles im Bereich mit Strom und Spannung lt. Datenblatt des 8574.

    Nun ist aber folgendes Rätsel, die Ausgänge werden nur hoch oder runter "gezählt" das heist die LED leuchten in richtiger Weise nur,
    wenn ich nach dem Reset oder Start, nochmals die +5V von den LED kurz unterbreche.

    Ich werde heute nochmals Transistortreiber vorschalten , mal sehen was dann passiert, aber komisch kommt mir das ganze doch vor.

    Weiss jemand einen Rat oder Hinweis ??

    Gruss und Dank

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    SA
    Alter
    64
    Beiträge
    211
    Hallo.

    Ich bin es wieder mal.
    Schau doch mal in die Antwort Funkbrücke in der .BAS Zentrale dort sind auch Gosubs für I2C enthalten. Bin aber gerade dabei einen Artikel(I²C-Bus AVR) zu schreiben mit Beispiele für Eeprom, Analog, Digitalpoti und auch für PCF8574. Hard- Software natürlich alles getestet.

    So nun muss ich in den Garten. Der große Teich hat nun nach 18 Jahren ein Leck. Oh Oh.
    Gruß
    Fred

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Fred !
    Das Portexpander-Problem ist fast gelöst. Es lag an dem Gesamtstrom der 8LED wohl, mit den Transistorteibern geht es,
    nur bekomme ich keine definierte Startbedingung hin. Etwar alles LOW oder alles HIGH...
    Es bleibt der letzte Zustand erhalten....komisch ??

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo Gerhard
    Der PCF 8574 soll beim Start eigentlich alle Ausgänge auf high haben. Daher ist mit der jetzige Stand eigentlich nicht klar.
    Hast du dein RTC mit I2C in den Griff bekommen? Arbeite selber gerade am I2C Bus. Hast du schon was mit dem PCF8591 (ana) und der Ausgabe I2C --> LCd gemacht?
    achim

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    SA
    Alter
    64
    Beiträge
    211
    Hallo Gerhard,

    kann ich ohne Code nicht nachvollziehen.
    In der Annahme du hast alle Port’s als Byte festgelegt zB. [Dim Digital As Byte], kannst du doch als Startbedingung Digital = 0 oder Digital ist gleich 255 senden.
    Ist doch gut wenn sich die Register des IC die letzte Aktion „merkt“, wenn er vom Bus getrennt wird, um zB. einen anderen IC anzusprechen.
    Für ein Modelbahnbauer habe schon mal 8 PCF 8574AP = Fam &H70 und 4 PCF 8574P = Fam &H40 am Bus geknallt. Projekt währ gescheitert wenn ein IC nach Busfreigabe die letzte Aktion „vergessen“ würde.
    Ein LED –Treiber nachzuschalten wundert mich, wenn du 0 anlegst kann jedes Pin locker 10 mA ziehen. Eine 1 = H natürlich nur ca. 1mA schieben. Somit sollte das gemeinsame Potential aller LED’s immer H sein.

    PS. Sein Vorname ist auch Gerhard, deshalb nicht wundern wenn in .BAS Zentrale Name erscheint, war auch für ihn.

    Gruß
    Fred

    - - - Aktualisiert - - -

    Hallo,

    schau auch mal hier im Forum mehrere Sensoren per Funk abfragen .
    in der Bas Zentrale, dort wird auch ein 4*20 LCD über I2C angesteuert.


    Gruß
    Fred



  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo Gerhard
    habe es an meiner Platine getestet. Liegt der Bus an und der Prz bringt sein Programm. Lasse ich die Spannung an der Platine weiter anstehen und trenne nur den Bus ab, bleibt die letzte LED an. Komisch, unklar.
    Falls du Sorgen mit Platinen hasst, musst du nur sagen was du brauchst. Kann es bei der nächsten Bestellung mit reinschieben
    achim

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Hallo Fred der Code ist in Arduino C geschrieben:
    Code:
    /* ========================================================================== */
    /*                                                                            */
    /*   i2c_expander.c                                                               */
    /*   (c) 2013 Gerhard Hinze                                                   */
    /*                                                                            */
    /*   Description                                                              */
    /*                                                                            */
    /* ========================================================================== */
    #ifndef F_CPU
    //#define F_CPU  3686400UL     // STK500
    #define F_CPU   16000000UL     // Arduino UNO...etc
    #endif
    /* ========================================================================== */
    /*                                                                            */
    /*                                                                            */
    /*                                                                            */
    /* ========================================================================== */
    #include <avr/io.h>
    #include <util/delay.h>
    #include <Wire.h>
    /* ========================================================================== */
    /*                                                                            */
    /*                                                                            */
    /*                                                                            */
    /*                                                                            */
    /* ========================================================================== */
    
    
    
    #define expander 0x20  
    byte wert= 0xff ;
    void setup() 
      {
      Wire.begin(); //Initialisieren der I2C Verbindung.
      }
    
    void loop() 
      {
      Wire.beginTransmission(expander); //Öffnen I2C Verbindung
      Wire.send(wert);                        //Schreiben des Bytes. 
      Wire.endTransmission();               //Schliessen I2C Verbindung
      delay(100);
      if (wert==0) 
       {
       wert =0xff; 
       }
      else
       {
       wert = wert--;
       }
      }
    /* ========================================================================== */
    Was meinst Du eigendlich mit der ".bas - Zentrale" da sehe ich nicht ganz durch...

    Ich kann zwar , bzw. besitze Bascom, aber ic h habe mich wegen AVR-Studio und Arduino auf C "spezialisiert"..

    @Achim bei mir bleibt der Zustand auch nach Trennung von +Ub vom Expander bis zum neuen Betrieb bestehen.
    darum setze ich alles auf High, also senden von 0xff beim Start..aber so richtig will das noch nicht gehen...

    Gerhard
    Geändert von oderlachs (08.03.2014 um 15:46 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo gerhard
    scheinen beide das gleiche Problem zu haben. Auf einer andeen Seite wurde mr gesagt, das beim Anlegen der Spannung (nur der Spannung) alle Ausgänge einschalten, sorry das wort dafür vergessen.
    achim

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.11.2013
    Ort
    SA
    Alter
    64
    Beiträge
    211

    Hallo Gerhard,
    möchte nochmals auf meine Hinweise für Antwort von RFM12 mit Pollin Anfrage hinweisen.
    Die Programmieren in Assembler oder C ist das Effektivste, sagen die Experten, aber nach meiner Meinung ist der Binärcode nach wie vor Entscheidend. Somit bin ich auf BASECOM umgestiegen. Für meine vielen Anwendungen benötige ich ja nicht unbedingt „Echtzeiten“(ist ja auch technisch mit den Atmega’s kaum möglich)
    Der BASCOM- Compiler macht dies schon sehr gut und vor allen Dingen die vielen Lib’s die zu Verfügung stehen, erleichtern schon erheblich den Programmieraufwand. Auch die Lesbarkeit und Syntaxprüfungen finde ich sehr hilfreich in dieser Ebene.
    Diese BAS können mit Editor gut gelesen werden und somit sind diese auch für C Anwender mit Erfahrung gut umsetzbar aber nicht umgekehrt für C- Unerfahrene.
    Auch die nach Compile erzeugten Bin- Hexdateien können sogar in SPI- Industrieanwendungen übernommen werden.
    Schaut man sich die vielen Bascom Lib’s an erkennt man schon, Bascom ist nicht das alte „lahme“ Basic.
    Aber jeder soll sein „Ding“ machen wie er es als gut empfindet.
    Denn nur der Erfolg zählt.

    Gruß
    Fred


  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    11.08.2009
    Ort
    Süden
    Alter
    62
    Beiträge
    332
    Hallo fredred
    das mit echtzeit ist so eine Sache, es ist relativ möglich. Habe einen längeren teil mit dem 128 geschrieben. Dabei war der Prz dabei mehrere Timer und Ausgänge fast gleichzeitig zu machen. Fast bedeutet dabei, er konnte z.B. mehere LED fast gleichzeitig schalten, dabei auch noch eingänge abfragen und einiges mehr. Die Zeiten lagen dabei für einen kompletten Durchlauf bei 1 bis 5 ms, teilweise auf 100us. Wichtig dabei ist auch, das kein extra RS oder so geladen werden muss. Sonst besteht die Gefahr das neben dem RS noch 10 Befehle Platz haben. Ist ein Multitasking.
    achim

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. LP2950 3,3V macht Probleme
    Von Kampi im Forum Elektronik
    Antworten: 17
    Letzter Beitrag: 13.12.2011, 09:22
  2. Bootloader macht Probleme
    Von H3llGhost im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 25.02.2008, 16:19
  3. timerhandler macht probleme
    Von crishy im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 06.07.2005, 13:03
  4. PBrenner macht Probleme
    Von Simon1990 im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 14.06.2005, 18:47
  5. INT3 macht probleme
    Von Apollo im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 21.05.2005, 19:58

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •