Het ging toch over een PIC16F1847 naar USB?
Het ging toch over een PIC16F1847 naar USB?
Special Member
Ja, maar ik neem aan dat die serieele poort op dat bordje aan de ESP vast zit...
De vraag was met een PC, dat komt er ineens een ESP bij. Is dat voor de duidelijkheid?
Tussen een PIC en PC kan je gewoon een FTDI-interface/kabeltje gebruiken.
Golden Member
De verwarring komt misschien doordat ik in dit topic een vraag stelde, maar voortborduurde op een ander topic.
De casus: Ik heb een lichtkrant gemaakt, met een PIC16f1847 als microcontroller en MikroBasic als programma.
6 matrix Leds van 8*8.
Ik vond het al heel wat dat ik dat voor elkaar kreeg.
De te tonen tekst is echter als literal opgeslagen in het programma. Ik dacht het zou leuk zijn als de te tonen tekst van een externe bron komt.
Het liefst via Wifi of Bluetooth.
Vandaar dat de ESP32 ten tonele verscheen.
Maar om 'eenvoudig' te beginnen dacht ik om de tekst vanaf een PC of laptop te sturen.
Daarom ben ik nu bezig om deze tekst naar de PIC te brengen via UART van de PIC.
En daar strandde ik.
Ik heb weliswaar een oude Laptop met een oude, vertrouwde RS-232 seriële poort, maar wilde het via de USB doen vanaf mijn PC.
En ik dacht misschien kan ik dat boardje met de ESP32 er op gebruiken als USB-UART omzetter. Er zit ook een CP2102 chip op.
Special Member
Dat ESP printje is bedoeld om aan een PC aan te sluiten, niet aan een microcontroller...
Je zult er e.e.a. aan moeten verbouwen als er een pic tussen moet... (serieel gaat nu direct van pc naar esp)
Golden Member
Ok, dan dus maar een CP2102 bestellen met USB socket.
Dan kan ik daarmee testen.
Golden Member
Tussen een PIC en PC kan je gewoon een FTDI-interface/kabeltje gebruiken.
Hoe moet ik me dat voorstellen? Zonder conversie USB - UART?
Of zit dat in het kabeltje (chip)?
[Bericht gewijzigd door Bavelt op zaterdag 22 februari 2020 22:21:09 (10%)
Golden Member
Zoiets als dit wordt bedoelt door Arco.
https://www.tinytronics.nl/shop/nl/communicatie/kabel/ft232-3.3-5v-ttl…
Golden Member
Daar zit dus een chipje in de plug.
Golden Member
USB sluit je aan op een pic met USB poort, of op de UART via een USB naar UART omzetter als de CP2102
Voor testen voldoet ieder terminal programma. (bijv. HTerm )
Heb je misschien toevallig een voorbeeldje van MikroBasic i.c.m. de Uart Library?
M.a.w. hoe je op de juiste manier een Uart buffer uitleest?
Special Member
Simpel. Uitgaande data verstuur je met UART1_Write_Text(...)
Inkomende data verwerk je in de interrupt routine, je stopt het in een buffer.
pic basic code:
CONST MAXBUFFSIZE = 64
Dim Buffer As Char[MAXBUFFSIZE]
BufWrPtr As Byte
BufRdPtr As Byte
Interrupt:
If RCIF_bit Then
Buffer[BufWrPtr] = RCREG
Inc(BufWrPtr)
If BufWrPtr > MAXBUFFERSIZE Then BufWrPtr = 0 End If
RCIF_bit = 0
End If
Golden Member
Ah, dus zelf een inputbuffer maken, M.a.w. niet rechtstreeks uitlezen van een COM-porrt van bv een laptop.
In afwachting van een USD .> UART moduultje dat is besteld, kan ik e.e.a. testen.
Ik heb hier nog een oude laptop met RS-232 seriële poort. Een kabeltje heb ik ook nog wel.
Ik herinner me nog van vroeger dat je zo'n COM poort moest initialiseren met
het DOS Commando MODE COM1:9600,N,8,1,P
Dan de TX en RX aansluiten. Staat me wel bij dat ik destijds RTS (ready to Send) en CTS (Clear to send) op de plug moest verbinden.
Golden Member
Ik ziet dat je hier werkt met een interrupt. Je maakt hierdoor geen gebruik
van de routine UARTx_Data_Ready()?
(Die aangeeft dat er iets te lezen valt)
Special Member
Nee, dat heeft toch geen zin? (er is toch een interrupt als er een karakter binnenkomt)
Interrupt is altijd het beste, anders kun je karakters gaan missen, zeker bij hogere baudrate.
In main() kun je dan op je gemak bestuderen wat je allemaal hebt 'gevangen' in je buffer...
[Bericht gewijzigd door Arco op zondag 23 februari 2020 18:49:39 (21%)
Golden Member
Ik ga het uittesten. Een nieuwe uitdaging...
Een echte comport heeft de signalen geinverteerd en hoger niveau. Die switchen tussen plus en min 12V. Om die te koppelen aan een micro-controller moet je de signaal niveaus inverteren en op je juiste spanning brengen.
Als je een USB naar TTL seriele poort moduletje gebruikt dan kun je direct koppelen.
Bijvoorbeeld
https://www.ebay.com/itm/USB-To-RS232TTL-CH340G-Converter-Module-Adapt…
Golden Member
Zo'n ding had ik inmiddels al besteld. Maar zal wel even duren voordat het geleverd wordt.
Golden Member
Ik zag het MAX232 IC. Die converteert de RS232 naar TTL-UART, klopt dat?
Special Member
Ja, maar met USB heb je daar dus niks aan...
Golden Member
I know, Maar om even met de RS-232 te testen vanuit mijn oude laptop
(Tot ik de USB-Uart heb ontvangen).
Dan kan ik in ieder geval de Uart in MikroBasic zelf proberen.
Die MAX232 doet conversie van de signalen tussen RS232 niveau en TTL, en gebruikt een charge-pump om de benodigde + en - (bijna) 12 Volt voeding op te wekken uit 5V.
Er zijn een aantal varianten in omloop, maar de meeste hebben 2 ingangen en 2 uitgangen.
Special Member
Op 22 februari 2020 18:34:59 schreef Bavelt:
Ik heb weliswaar een oude Laptop met een oude, vertrouwde RS-232 seriële poort, maar wilde het via de USB doen vanaf mijn PC.
Ik heb het op deze manier opgelost, kijk op BLZ. 52.
https://www.circuitsonline.net/downloads/werken_met_profilab_expert_4.…
Dit kan direct op een seriële poort van je PC of via een USB/SERIEEL adapter via je USB poort. Bij mij werkt dat uitstekend, is wel via picbasic, maar dat moet ook gaan via MikroBasic lijkt mij.
Als USB naar serieel adapter gebruik ik deze.
https://www.allekabels.nl/rs232-kabel/4568/933/usb-a-naar-rs232-1.5-me…
Golden Member
Ik heb het op deze manier opgelost, kijk op BLZ. 52.
Wat grappig, via een Opto coupler! De PC817 is ook verkrijgbaar als PC827, daar zitten er meteen twee in.
Zit er in het kabeltje dat je gebruikt nog een actieve component?
Anders zou ik dit wellicht ook kunnen gebruiken: een snoerloze adapter van RS-232 naar USB. Ik had deze nog liggen.
Special Member
Da's voor een keyboard/muis. Die zijn daar speciaal voor gemaakt. (keyboard/muis detecteert of 'ie voor USB slave of COM poort moeten spelen...)
Op een 'gewoon' apparaat gaat dat volgens mij niet werken...
Special Member
Op 24 februari 2020 11:06:01 schreef Bavelt:
Wat grappig, via een Opto coupler! De PC817 is ook verkrijgbaar als PC827, daar zitten er meteen twee in.
Het voordeel is dat het galvanisch gescheiden is. Arco heeft volgens mij ook eens zoiets gemaakt.
Zit er in het kabeltje dat je gebruikt nog een actieve component?
Ja, in de negen polige stekker zit een schipset. Je krijgt er ook een driver bij of je download er een.