MAX232: Die 4 Elkos in der Grundschaltung 1 uF oder 10 uF?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • MAX232: Die 4 Elkos in der Grundschaltung 1 uF oder 10 uF?

      Moin!
      Im Internet kursieren die unterschiedlichsten MAX232N Grundschaltungen, daher zu meiner Sicherheit eine kurze Frage:
      Sollen die 4 Elkos des 232 nun 1 oder 10uF haben oder ist es egal? Gibt es Vor- oder Nachteile, wenn man 10uF verwendet statt 1 uF?
      Meine Anwendung wäre hier einfach nur Datenkommunikation zwischen 2 Atmegas328p bei 5V.
      Danke!
    • wahrscheinlich geht beides. ich werde es zunächst mit 1uF probieren. Wird wohl zum Verstehenlernen erstmal passen.
      Der Versuchsaufbau:
      Master und Slave sind per RX/TX überkreuzt und gemeinsamer Masse verbunden. auf beiden baud= 9600.
      Beide Controller haben ein I2C - OLED
      Ich will auf Tastendruck vom Master aus zwei bytes kurz hintereinander (1 ms) an den Slave schicken.
      das 1.byte soll ein Adressierbyte mit r/w bit sein, das 2.byte eine Variable von 0 bis 100.
      In der Slave SW sind 2 subs hinterlegt: Sub 1 gibt den Text " SUB 1, Variable = x" und die 2. SUB: "SUB 2, Variable = x" aus.
      Am Master sind 4 Tasten, die (je nachdem welche Taste gedrückt wird) am Slave folgenden Text ausgeben sollen:
      Master Taste 1 = Slave OLED Text "SUB 1, Variable = 50
      Master Taste 2 = Slave OLED Text "SUB 1, Variable = 100
      Master Taste 3 = Slave OLED Text "SUB 2, Variable = 50
      Master Taste 4 = Slave OLED Text "SUB 2, Variable = 100
      So ist der Plan.
    • die beiden Controller sollen später mit einem 7,5 oder 10m Patch Kabel verbunden sein. Um den Hardware-Aufwand der beiden Max ist mir nicht bange.
      Mir geht es um die soft. Das mache ich zum 1. mal.

      Pluto25 schrieb:

      Warum nacheinander
      weil ich es nicht besser weiß. Dieser Thread ist eigentlich ein Unter-Thread von "2 OLEDS parallel betreiben" und behandelt das gleiche Projekt:
      An eine Maschine wird eine kabelgebundene Fernbedienung mit OLED und Drehencoder angeschlossen.
      Das FB-Oled soll das gleiche anzeigen, wie das OLED an der Maschine. Es können ca. 50 verschiedene Texte angezeigt werden. Daher plane ich in der sw in der FB
      50 SUBs. Welche davon angesprungen wird, steht im ersten gesendeten byte. im 2.byte soll die Variable v0n 0 bis 100 gesendet werden.
      Nun weiß ich nicht, ob bei der byte-Versendung via UART schon bit für r/w reserviert ist, man also nur 127 oder 255 + 1 bit.
      Im letzteren Fall käme ich ja mit einem byte aus. Aber ich wüßte sonst nicht, wie sonst die r/w Information für den RS232 enthalten sein soll, wenn nicht im byte enthalten.
    • ichbinsmoin schrieb:

      wahrscheinlich geht beides. ich werde es zunächst mit 1uF probieren. Wird wohl zum Verstehenlernen erstmal passen.

      ichbinsmoin schrieb:

      Um den Hardware-Aufwand der beiden Max ist mir nicht bange.
      Ich glaube, ich hatte es schon mal gesagt, dass deine Herangehensweise blauäugig ist.
      Wo ist denn das Problem, genau die Kondensatoren zu nehmen, die im Datenblatt vorgeschrieben sind?
      Hier hast du die Chance, mal was richtig zu machen und vergibst sie.
      Wenn es später nicht klappt, kannst du dir nie sicher sein, dass es nicht doch an der Hardware liegt.

      ichbinsmoin schrieb:

      Mir geht es um die soft. Das mache ich zum 1. mal.
      Ein Beispiel hattest du verlinkt bekommen, ich denke, das könntest du erstmal kopieren.
    • r/w für den RS232 ?( . Zwei Leitungen eine TX darüber wird gesendet muß mit RX am zweiten Chip verbunden sein, der darüber Empfängt. Eine Slave in dem Sinne gibt es nicht. Da beide jederzeit etwas senden können. Wer wie darauf reagiert liegt an der Sw. Senden einfach mit "Print" . Sicher könnte man einzelne Bytes in ein Register schieben und über ein anderes die Sendung aktivieren aber benützen wir nicht Bascom um genau das nicht tun zu müssen? Auch im Empfänger wird die Auswertung einfacher. Dort bekommt man einen String mit der Anweisung und nicht einzelne Bytes bei denen man erst mal herausfinden muß ob sie Adresse oder Daten sind.


      Hast Ihr auch Probleme Beiträge zu senden? Das Oben habe ich heute morgen geschrieben. Das nichts mehr ohne "Erweiterte" geht ist schon länger aber das es ganz verschwindent???
    • Verschwinden tut bei mir nix. Es wird dich auch mit einem grünen Hinweis auf das erfolgreiche Abschicken hingewiesen (Der Eintrag wurde gespeichert). Hattest du den und dann ist der post doch nicht veröffentlicht worden?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • ichbinsmoin
      Einfach nur Byte's übertragen könnte so aussehen:



      BASCOM-Quellcode

      1. $regfile = "m328def.dat"
      2. $crystal = 16000000
      3. $hwstack = 40
      4. $swstack = 16
      5. $framesize = 32
      6. $baud = 9600
      7. '----------------------------------------------------------------------------------------------------------------------
      8. 'INT UART-Empfang Int nach jedem empfangenen Byte
      9. Enable Urxc
      10. On Urxc Uart0 'ISR zuordnen
      11. Enable Interrupts 'generell Interrupts einschalten
      12. '----------------------------------------------------------------------------------------------------------------------
      13. Dim Daten(10) As Byte
      14. Dim Neue_daten As Byte
      15. Dim Z As Byte
      16. Dim Flag As Byte
      17. Dim Dat As Byte
      18. Dim Befehl_byte As Byte
      19. Dim Daten_byte As Byte
      20. '----------------------------------------------------------------------------------------------------------------------
      21. Do
      22. If Neue_daten = 1 Then 'wenn neue Daten angekommen sind,
      23. Befehl_byte = Daten(1) 'aus der Empfangstabelle in die Variablen schreiben
      24. Daten_byte = Daten(2)
      25. Neue_daten = 0 'Merker setzen auf neue Daten warten
      26. End If
      27. Loop
      28. Senden:
      29. Printbin 250 'Start-Byte
      30. Printbin Befehl_byte
      31. Printbin Daten_byte
      32. Printbin 251 'Ende-Byte
      33. Return
      34. '################### ISR ###############################################################################################
      35. Uart0:
      36. Dat = Inkey() 'empfangenes Byte einlesen
      37. If Dat = 251 Then 'Ende-Byte erkennen
      38. Flag = 0
      39. Neue_daten = 1
      40. End If
      41. If Flag = 1 Then 'Byte's in Empfangstabelle schreiben
      42. Daten(z) = Dat
      43. Z = Z + 1
      44. End If
      45. If Dat = 250 Then 'Start-Byte erkennen
      46. Flag = 1
      47. Z = 1
      48. End If
      49. Return
      Alles anzeigen
      So kannst Du je nach Grösse deiner Empfangstabelle mehrere Byte's empfangen. Das ganze belegt 546 Byte im Flash.
    • Hier gibt es Fortschritte: Die UART-Verbindung steht. In der Haupt SW habe ich erfolgreich bytes senden können und in der FB richtig zuordnen können.
      Allerdings sieht mein Code "etwas" anders aus, als der von Limo...
      Hab das bisher so gelöst, daß in der Haupt SW bei jeder Änderung des OLED-Text-Inhaltes ein byte per printbin an die FB gesendet wird.
      In der FB wird das printbin- byte dann einem vorinstalliert Oled-Text zugeordnet. Es können in meinem Projekt genau 39 verschiedene TEXT-Inhalte vorkommen.
      Ich habe bislang nur eine Hauptschleife ohne ISR. In der Haupschleife wird per case-select eine von 39 subs mit den voreingestellten Texten ausgewählt.
      Jetzt muss ich noch herausfinden, wie man 2 bytes hintereinander senden kann (Befehlsbyte für den Display-Inhalt) und Datenbyte für Zahlen zwischen 0 und 100.
      Ich schau mal, wie weit ich komme. Vielen Dank für Euren Input soweit!
      Ach ja...@Michael bleibt sich seinem Stil treu: Er schreibt immer, als wäre ich eines von seinen unartigen Kindern und fordert mehr Disziplin ein. niedlich.
    • Meißt liegt er richtig, wobei ich in dem Fall ceperiga's Empfehlung folgen würde. Was in vielen Kommerziellen Geräten funktioniert wird auch beim Nachbau funktionieren.
      In Limos Beispiel wurden vier einzelne Byte gleich hintereinander gesand.
      Ein Print chr(250) + chr(Befehl_byte) + chr(Daten_byte) +chr(251);
      würde das gleiche tun (ohne das ; würde ein CR LF angehängt)
      Eine weitere Variante wäre vielleicht interessant:
      Print "1,erstes Display"
      damit lassen sich beliebige Texte ausgeben.
      @limo: Anstelle Inkey() UDR spart weitere 24 byte
      @tschoeatsch: Das grüne geht nicht mehr :(

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Pluto25 ()