Hoi,
Ik heb eerder geprobeerd om een soort serial-repeater te krijgen door een PIC te gebruiken om de signalen van een aantal serial ports te verwerken (zie mijn vorige post). Helaas blijkt dit niet te werken aangezien je hiervoor een hardware uart nodig zult hebben per poort (dus 1 pic / port = duurder en complexer)
Om toch een dergelijke setup te krijgen wil ik nu proberen een multiplexer (4067) te gebruiken om de tx en rx van twee max232s 'door te verbinden'. En de pic alleen te gebruiken om de juiste kanalen te selecteren.
Als ik twee max232s direct (crossed) aan elkaar hang dan werkt het natuurlijk prima tussen twee poorten, maar wat als ik die mux er tussen zet? Kan deze mux het digitale signaal wel goed doorgegeven? Ik kan me voorstellen dat de stroom die tussen de max232s loopt bijzonder klein is (gaat alleen om spanning) en misschien dat daardoor de mux niet goed wordt 'open' gezet.
Ik heb ook naar bijvoorbeeld de hc154 zitten kijken maar die is niet bidirectioneel, en dat is voor de 'terugweg' nodig natuurlijk (denk in het plaatje even de R1out van ic2 aan X en T1in en T2in van IC3 aan de x0 en x1).
Wat ik me dus afvraag is hoe die 4067 intern de bidirectionele/analoge verbinding legt tussen de 'masterport' en de geselecteerde poort, en of deze dus ook werkt als het gaat om digitale signalen.
Videomodulator
AKA Naftebakje @Tweakers.net --- Zonder dwarsliggers geen spoor
Ik denk dat het antwoord verscholen zit in de datasheet. Voor I2C werkt het perfect, als je zo de SDA schakelt kan je netjes een van de slave's kiezen.
Het IC is wel erg gevoelig voor pieken boven de voedingsspanning, zonder een diode naar +5V en GND bliezen we zo de uitgangen op, maar jij zal dat ws niet nodig hebben, het zal wss zo gewoon werken.
[Bericht gewijzigd door Videomodulator op ]
De verbinding is toch altijd unidirectioneel bij RS232 ?? (per draadverbinding dan) dus een HC164 zou werken. Maar hoe denk je hier de verbinding te selecteren? Eerst wou je dat met een escape karakter in de datastroom doen.
Misschien moet je eerst bedenken wat je wil maken.
Bufferen ? Variable Baudrate ? Handshake lijnen ?
gradtje
Ja... en toen ?
Ja ik weet niet wat je precies wilt, maar hoe wil je een kanaal pollen dat je niet door je multiplxer hebt geselecteerd, of hoeft dat ook niet ?
Misschien kun je met een voldoende snelle PIC een aantal software UARTS maken en deze gebruiken ?
http://www.piclist.com/techref/microchip/16f876-hint-tk.htm is misschien een begin.
Op 7 juni 2006 12:23:21 schreef gradtje:
Misschien kun je met een voldoende snelle PIC een aantal software UARTS maken en deze gebruiken ?
http://www.piclist.com/techref/microchip/16f876-hint-tk.htm is misschien een begin.
Dat is dus een link naar gebruik van de hardware UART.
@Videomodulator
Ah als het voor i2c werkt is dat wel al hoopvol.
@JoWi
ja het is unidirectioneel per kanaal. Maar stel je voor :ik heb 1 masterport (tx en rx) en 16 slaveports (ieder 1 tx en rx) dan kan heb ik twee 4067 nodig. 1 zoals getekend in het plaatje om een van de 16 slave tx te verbingen met de rx van de master. (Hier zet de slave een signaal op de "xN" en dat signaal moet worden doorgegeven naar de "X". = richting links->rechts)
Maar daarnaast ook 1 om de ene TX van de master te verbingen met 1 van de 16 slave RX poorten. In deze laaste moet het signaal dus van de "X" port naar de "xN" worden gestuurd. (= richting rechts->links)
de chip moet dus in staat zijn het signaal bi-directioneel door te geven. De hc154 is dat niet (en volgens mij is dat zo bij alle digitale multiplexers vandaar dat ik naar een analoge kijk)
Ik kan nog steeds de PIC laten 'luisteren' op de geselecteerde TX lijn en daarmee prima een escape character afluisteren om vervolgens zelf de controle te nemen over de rx/tx lijn van de master voor de menu mode. Er veranderd niets, alleen zal de PIC de feitelijke datastroom niet regelen.
@gradje
ik ben dus inderdaad bang dat ik alleen het kanaal kan pollen dat geselecteerd is ja. Maar dat is niet zo heel erg. Ik heb het geprobeerd met een pic op 20Mhz en kreeg bij meer dan 2 softpoorten al geen schone data meer over de lijn. Misschien dat het met erg goed timen en mooie assemblercode wel lukt maar dat niveau heb ik niet.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
gradtje
Ja... en toen ?
Op 7 juni 2006 13:00:34 schreef JoWi:
[...]Dat is dus een link naar gebruik van de hardware UART.
[schaamrood]
Jamaar ik bedoelde natuurlijk deze !
http://www.datadog.com/software_uart.pdf
[/schaamrood]