- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: AT Mega 128 und P82b715 / P82b96 Probleme ??

  1. #11
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von Moppi Beitrag anzeigen
    Du könntest z.B. einen SN74HC32 zum Ausprobieren nehmen. Sind ODER-Gatter. Zwei Eingänge eines Gatters überbrücken. Dann folgt der Ausgangszustand, des Gatters, dem Eingangszustand.
    Oder Du legst einen Eingang eines ODER-Gatters auf 0V (LOW), und den anderen Eingang verbindest Du mit dem ATmega-Ausgang. Gibt dasselbe Ergebnis.

    Der SN74HC32 "Can Drive Up To 10 LSTTL Loads". Sollte also ausreichend sein. Ein ATmega sollte das aber auch schaffen. Daher wunder Dich nicht, falls das nichts ändert.


    MfG
    Nabend

    Das war mein erster Gedanke das es vermutlich auch nicht gehn wird.
    Hat den niemand sowas schonmal gebaut ?

    Frage ist, ob man das ganze noch mit den Pull Ups beeinflussen könnte, bzw ich frage mich was ist am MCP anders als an dem P82b715 ??

    Ich verwende 4,7K, vllt verkleinern, vergrössern ?

    Grüsse
    Pat

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Hallo!

    Die Pull-Ups beeinflussen den ATmega nicht. Nur die Datenübertragung von einem P82B715 zum anderen. Wenn die Übertragung von einem P82B715 zum andern also funktioniert (mit anderen ATmega-Modellen) müssen die Widerstände nicht geändert werden. Jedenfalls laut Datenblatt. Da steht auch ne Formel zur Berechnung drin.

    Stell doch mal bitte einen Schaltplan oder Flussdiagramm (mit Bezeichnung der ICs) hier ein, dass man erkennt, wie die Kommunikation läuft, das macht es etwas einfacher.

    Das Problem äussert sich, das sobald nur ein IC am BUs hängt dieser nicht mehr sauber arbeitet.
    Mir z.B. ist noch nicht klar, wie das genau aussieht, wenn "nur ein IC am BUs hängt".
    Ist für mich unlogisch, da Du doch immer zwei brauchst, also ein Paar?

    Ich kenne den MC23017 nur vom Sehen, habe aber keinen Plan, wie man den anschließt. Ich sehe aber was von ITB und ITA, was bestimmt etwas mit den Ports zu tun hat. Ich sehe auch noch RST, was vermutlich RESET bedeutet. Vielleicht hast Du einen Programmierfehler beim ATmega128? - Programmcode und Funktion prüfen.


    MfG
    Geändert von Moppi (09.12.2019 um 21:40 Uhr)

  3. #13
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Hallo

    Wenn ein MCP direkt am I2C Bus läuft, aber über den Busextender nicht, kann es ja kein Programmfehler sein.

    ich habe mir die Datenblätter jetzt auch nochmal angesehn und mir hat es gerade keine Ruhe gelassen.
    Ich habe die Pullups erst auf 20K erhöht, was dann bei den direkten MCP am Bus den gleichen Fehler zur Folge hat wie an den Dezentralen.
    Dann habe ich die Pullups auf 1,5K verringert und sie da....es läuft

    ich habe dann nochmal meine Oskar angeschlossen und das was sie ändert ist die Differenz zwischen Low und High.
    zwar unlogisch weil eigentlich keine Pullups nötig sind auf der Senderseite.
    Ich habe jetzt zwei MCPs auf der externen Platinen am laufen. Wenn es so geht lasse ich das ganze so

    So ganz logisch scheint es nciht, aber es erklärt mir nur, das der 128er AT Mega doch anders sein muss, vllt aufgrund der SMD Bauweise ?

    Wenn Interesse besteht stelle ich mal von dem ganzen Bilder ein ??

    Grüsse
    Patrick

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Die Pull-Up-Widerstände bestimmen den Spannungspegel, der an der Gegenstelle ankommt. Es handelt sich ja um einen Leitungstreiber. Normal werden da offene Kollektoren verwendet, deswegen der Widerstand gegen eine positive Spannung. Wenn Du den Widerstand verkleinerst, steigt die Spannung bei LOW-Pegel und bei HIGH-Pegel. Es ist schon sinnvoll, auszuprobieren, welche Widerstandswerte am besten funktionieren. Da spielt vor allem der Leitungswiderstand eine Rolle. Klemme mal die eine Seite einer Leitung an 5V an und messe am anderen Ende. Es kann ein nicht unerheblicher Spannungsabfall auftreten. Z.B. misst Du dann keine 5V mehr, sondern nur noch 4.8V oder 4.5V. Aber wir kennen die Leitungslängen hier nicht. Musst Du selber schauen, wie es sich damit verhält. Nimm Widerstandswerte, die für Deinen Zweck (Kabel und deren Länge) sicher funktionieren. Wenn es dann jetzt funktioniert, ist es ok so. Alles andere kannst Du nur mit Messen herausbekommen, wie Pegel, die der ATmega am Ausgang liefert und ob der Pegel Einfluss auf das Signal auf der Leitung hat.



    MfG

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Guten Morgen,

    was ist am MCP anders als an dem P82b715
    Ich dachte die ganze Zeit, Du setzt P82b715 ein.

    Dafür gibt es dieses Bild für die Beschaltung:
    Klicke auf die Grafik für eine größere Ansicht

Name:	82715min.jpg
Hits:	6
Größe:	35,3 KB
ID:	34554
    Da brauchst Du die beiden Pull-UPs an den Treiber-Ausgängen.





    MfG

    - - - Aktualisiert - - -


    Beim MCP23017 steht im Datenblatt:

    3.5.7 PULL-UP RESISTOR CONFIGURATION REGISTER

    The GPPU register controls the pull-up resistors for the port pins. If a bit is set and the corresponding pin is configured as an input, the corresponding port pin is internally pulled up with a 100 kOhm resistor.
    Der 100k-Pull-UP ist also offenbar nur zuschaltbar, wenn ein Port des MCP23017 als Input konfiguriert wird. Je nach Leitung (-länge) können 100k aber zu viel sein. So dass Du einen extra Pull-UP an der Leitung benötigst.

    Für den Fall, dass Du etwas nachrechnen willst:

    Für den P82b715 steht unter 9.2.2 Detailed Design Procedure genau, wie man die Pull-UPs berechnet, welche Auswirkungen dies auf das Signal hat, dass man bei mehreren Widerständen an einer Leitung die gegenseitige Beeinflussung berücksichtigen muss (Parallelschaltung), und dass vom Prinzip her nur ein Pull-UP an einer Leitung notwendig ist.
    Geändert von Moppi (10.12.2019 um 05:59 Uhr)

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Moppi Beitrag anzeigen
    Normal werden da offene Kollektoren verwendet, deswegen der Widerstand gegen eine positive Spannung.
    Der Open-Collector bzw. Open-Drain Ausgang gehört zum Konzept des I2C Busses. Sowohl SCL als auch SDA können von jedem Gerät am Bus angesteuert werden und das ist über OC Treiber gelöst. Die I2C Leitungen sind immer OC. Damit eine Leitung High werden kann, muß an jeder Leitung ein Pullup sein.
    Zitat Zitat von Moppi Beitrag anzeigen
    Dafür gibt es dieses Bild für die Beschaltung:
    [/COLOR]Klicke auf die Grafik für eine größere Ansicht

Name:	82715min.jpg
Hits:	6
Größe:	35,3 KB
ID:	34554
    Da brauchst Du die beiden Pull-UPs an den Treiber-Ausgängen.
    Dieses Bild ist missverständlich. Natürlich müssen sowohl links als auch rechts an SDA/SCL ebenfalls Pullups sein. Diese müssen nicht unbedingt sichtbar sein, es können auch interne Pullups z.B. in einem µC sein. Verhalten sich die verschiedenen Atmegas da gleich?

    Zitat Zitat von Moppi Beitrag anzeigen
    Der 100k-Pull-UP ist also offenbar nur zuschaltbar, wenn ein Port des MCP23017 als Input konfiguriert wird. Je nach Leitung (-länge) können 100k aber zu viel sein. So dass Du einen extra Pull-UP an der Leitung benötigst.
    Diese Pullups sind an den Portpins des MCP, nicht an den Datenleitungen. Wie soll es auch möglich sein, bei einem Slave Pullups am Bus einzuschalten, wenn der Bus wegen fehlender Pullups gar nicht geht.

    Die Größe der Pullups ist unkritisch.

    Zitat Zitat von modtronic Beitrag anzeigen
    Ich habe die Pullups erst auf 20K erhöht, was dann bei den direkten MCP am Bus den gleichen Fehler zur Folge hat wie an den Dezentralen.
    Dann habe ich die Pullups auf 1,5K verringert und sie da....es läuft
    Das darf so nicht sein, du hasst dort ein anderes Problem.

    Zitat Zitat von modtronic Beitrag anzeigen
    ich habe dann nochmal meine Oskar angeschlossen und das was sie ändert ist die Differenz zwischen Low und High.
    zwar unlogisch weil eigentlich keine Pullups nötig sind auf der Senderseite.
    Vielleicht ist es dieses Problem: selbstverständlich sind auf allen drei Segmenten des Busses Pullups nötig. Wenn es auf der µC Seite bisher ohne sichtbare Pullups lief, hast du möglicherweise in deinem Treiber interne Pullups eingeschaltet und das funktioniert beim 128 etwas anders.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  7. #17
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Mahlzeit

    Zum Verständnis.
    ich betriebe die MCP23017 nur als Outputs
    Von der Schaltung ist das ganze so aufgebaut

    AT-Mega 128 -> P82B715 -> P82b715 -> MCp23017
    Sender Empfänger

    Der Empfänger mit dem MCp23017 sitzt mit dem Spannungsregler auf einer Platine

    Als Kabel wird ein 4 poliges abgeschirmtes Kabel verwendet
    auf der Empfängerplatine ist ein 78s05 verbaut für die Versorgung der dez. Platine
    Der Schirm ist nur am Sender auf Masse gelegt

    Die Pull Ups auf der Treiberseite als LSCL und LSDA sind immer vorhanden gewesen. (330 Ohm)
    laut dem Datenblatt soll es angeblich nicht nötig sein, auf der Senderseite am I2C Bus (CPU)
    also scl und sda an der CPu diese einzubauen
    So läuft es allerdings auch bei zb dem Mega 16 Problemlos. Hier wird nur die Empfängerseite, also das zurückwandeln des Busses auf den I2C mit Pull Ups versehn, die Senderseite hat die 330 Ohm.

    Am At-mega 128 habe ich nun als Pull Ups des I2C Busen 1,5K genommen
    da läuft es. Ohne geht es auch nicht.

    Ich habe nun auf der Dezentralen externe Platine die Pull Ups auf 2,2K (i2c) geändert.
    so läuft alles stabil

    das der Mega 128 irgendwie anders sein muss, zeigt schon die Hardwaretechnische Sache
    das ich die Pullups anpassen mussn bzw das erprobte und Funktionierende am Mega 16, 32 und 8 am Mega 129 nicht funktioniert.
    Kabellänge ist ca 4m, das ganze drei mal in die Gleiche Richtung verlegt, daran kann es als nicht liegen.

    Wenn es so läuft, lasse ich das laufen, weil ich habe mich jetzt fast 1 Woche damit befasst.

    Grüsse
    Patrick

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    FRAGEZEICHEN

    Vielleicht hängt das damit zusammen, was im Datenblatt des ATmega128 steht:
    SCL, Two-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) to enable the Two-wire Serial Interface, pin PD0 is disconnected from the port and becomes the Serial Clock I/O pin for the Two-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress spikes shorter than 50ns on the input signal, and the pin is driven by an open drain driver with slew-rate limitation.
    Würde bedeuten, dass SCL (Pin#25 PD0) für I2C-Betrieb dann als Open-Drain geschaltet wird und einen externen Pull-UP benötigt(?)
    Dann hättest Du einen Pull-UP am Pin#25 des ATmega128, wegen dem Open Drain. Der andere Pull-UP am Pin#26 entspräche dann dem R1 im Datenblatt des P82B715, wie unter Figure 5. Single Pullup Buffered Bus gezeigt. Allerdings halte ich 1.5kOhm für ein bißchen wenig. Ich würde es mit größeren Werten versuchen >=4.7kOhm. Dieser R1 wird im Beispiel des P82B715 mit 10kOhm angegeben.

    /FRAGEZEICHEN


    Beim ATmega328 steht dasselbe drin:
    SCL/ADC5/PCINT13 – Port C, Bit 5– SCL: 2-wire Serial Interface Clock. When the TWEN bit in TWCR is set (one) to enable the 2-
    wire Serial Interface, pin PC5 is disconnected from the port and becomes the Serial Clock I/O
    pin for the 2-wire Serial Interface. In this mode, there is a spike filter on the pin to suppress
    spikes shorter than 50 ns on the input signal, and the pin is driven by an open drain driver
    with slew-rate limitation.
    Und beim ATmega16 steht dasselbe drin:
    SCL, Two-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) toenable the Two-wire Serial Interface, pin PC0 is disconnected from the port andbecomes the Serial Clock I/O pin for the Two-wire Serial Interface. In this mode, there isa spike filter on the pin to suppress spikes shorter than 50 ns on the input signal, and thepin is driven by an open drain driver with slew-rate limitation.
    Also wieder keine richtige Erklärung, irgendwie.

    MfG
    Geändert von Moppi (10.12.2019 um 15:49 Uhr)

  9. #19
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    47
    Beiträge
    68
    Hallo

    ja darüber bin ich schon gestossen, habe es aber nicht weiter beachtet weil... das ich generell immer die Pull Up Widerstände am I2C Bus auf meine CPU Platinen vorsehe.
    In der Regel nehme ich 4,7K, damit läuft am Mega 128 der I2C Bus, direkt zb den MCp angeschlossen Problemlos, bzw auch alle anderen Mega bei mir.
    Früher habe ich 10K genommen auch das ginge.

    Es ist das erste mal, das ich solch ein Problem hatte mit dem I2C Bus.
    ich weiss nur, wenn die Pull Ups nicht da sind, läuft der Bus generell nicht, daher sehe ich sie immer vor.
    Das sie zu Gross sind (4,7K) hätte ich nicht gedacht

    Grüsse
    Patrick

    - - - Aktualisiert - - -

    Zitat Zitat von Moppi Beitrag anzeigen
    FRAGEZEICHEN

    Vielleicht hängt das damit zusammen, was im Datenblatt des ATmega128 steht:


    Würde bedeuten, dass SCL (Pin#25 PD0) für I2C-Betrieb dann als Open-Drain geschaltet wird und einen externen Pull-UP benötigt(?)
    Dann hättest Du einen Pull-UP am Pin#25 des ATmega128, wegen dem Open Drain. Der andere Pull-UP am Pin#26 entspräche dann dem R1 im Datenblatt des P82B715, wie unter Figure 5. Single Pullup Buffered Bus gezeigt. Allerdings halte ich 1.5kOhm für ein bißchen wenig. Ich würde es mit größeren Werten versuchen >=4.7kOhm. Dieser R1 wird im Beispiel des P82B715 mit 10kOhm angegeben.

    /FRAGEZEICHEN


    Beim ATmega328 steht dasselbe drin:


    Und beim ATmega16 steht dasselbe drin:


    Also wieder keine richtige Erklärung, irgendwie.

    MfG
    Wie ich oben geschrieben hatte
    läuft das ganze mit 4,7K nicht, was ich als Standard Wert immer hatte
    Bei 2,2K hatte ich es auch versucht, da ging es mal ja, mal nein

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von modtronic Beitrag anzeigen
    ich betriebe die MCP23017 nur als Outputs
    Das spielt für den I2C Bus keine Rolle.

    Zitat Zitat von modtronic Beitrag anzeigen
    Als Kabel wird ein 4 poliges abgeschirmtes Kabel verwendet
    Schon mal die Signale auf diesem Bus angesehen? Wie sieht es mit Cross Talk, Übersprechen, zwischen SCL und SDA aus?

    Zitat Zitat von modtronic Beitrag anzeigen
    Die Pull Ups auf der Treiberseite als LSCL und LSDA sind immer vorhanden gewesen. (330 Ohm)
    Woher stammt dieser Wert? Ich halte ihn für zu klein. Da fließen bei 12V mehr als 30mA in jedem, der Teiberbaustein muß also über 60mA liefern. Das ist ja mehr als der ganze Rest der Schaltung braucht.

    Zitat Zitat von modtronic Beitrag anzeigen
    laut dem Datenblatt soll es angeblich nicht nötig sein, auf der Senderseite am I2C Bus (CPU)
    An einem I2C-Bus müssen Pull-Ups sein, sonst wird keine Leitung je High. Das ist eine Binse, ob das extra im Datenblatt eines Treiberchips stehen sollte?

    Zitat Zitat von modtronic Beitrag anzeigen
    Kabellänge ist ca 4m, das ganze drei mal in die Gleiche Richtung verlegt, daran kann es als nicht liegen.

    Wenn es so läuft, lasse ich das laufen, weil ich habe mich jetzt fast 1 Woche damit befasst.
    4m schaffe ich ohne Treiber mit einem geteilten Pullup von je 4,7k auf beiden Seiten. Mit den Treibern und 12V soll man 100m und mehr erreichen. Du hast also ein anderes Problem, daß du mit extrem niederohmigen Pullups überdeckt hast. Nach meiner Erfahrung fällt einem sowas auf die Füsse, wenn man es am wenigsten braucht.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. Case Probleme mit Mega 16
    Von MasterMX im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 06.01.2010, 08:41
  2. Probleme mit Hardware Twi an Mega 16
    Von dreadbrain im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 07.01.2007, 21:26
  3. Probleme mit Lcd und Mega 16
    Von dreadbrain im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 10.04.2006, 16:11
  4. Probleme mit Mega 8 und USART
    Von Panzer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 16.12.2005, 15:35
  5. Probleme mit Parity bei Mega 162
    Von Simon79 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 17.05.2005, 07:01

Berechtigungen

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

Labornetzteil AliExpress