Mannen goedenmorgen,

Een aantal vragen over UART.

- Zit de UART in een PIC op een vaste pin?
- Met welk commando, in PICBasic, kan ik de UART oproepen?
- Zijn er 8pin PIC's die de UART ook ondersteunen?

Hoe kan ik het beste een PIC kiezen?
Nu wil ik bijvoorbeeld een PIC met 8 pinnen en UART ondersteuning. Nu weet ik alsnog niet welke PIC's deze specificaties hebben. Hoe kom ik daar toch achter?

Alvast bedankt,
Bob

Dtatsheetje lezen daar staan de meeste dingen wel in.

wat betreft picbasic daar zal ook wel iets van een manual bij zitten.

Kijk eens bij de selectie tool op www.microchip.com

1. Ja, de UART zit op 2 vaste pinnen. Had je ook in een datasheet kunnen zien.

2. Dat zal je ongetwijfeld op www.picbasic.nl kunnen vinden.

3. Op www.microchip.com krijg je een hele lijst te zien met detailinfo over de PICjes. Daar kun je precies op zien welke PICjes een UART hebben.

Op Picbasic.nl heb ik niets over de uart kunnen vinden.
Op die site van microchip kom ik er dus achter dat er geen 8pin pic's bestaan met uart? :P

De 16F688 is de kleinste PIC met USART
14 pins, 12 x IO

Voor PIC Basic moet je de instructies HSERIN en HSEROUT of HRSIN en HRSOUT gebruiken (let op de H voor de instructies).
De UART zit op vaste pinnen (bekijk de datasheet).

Er komt nog wel iets over de UART op picbasic.nl maar heb hier nog steeds geen tijd voor :(

Dan ga ik voor de 16F688.
Ik heb er een aantal bij Wouter besteld.

@Frits, ik ga eens wat proberen met de commando's die jij geeft.
Picbasic heeft best wel een duidelijk help file, dus daar kom ik wel uit.
Als ik het eenmaal onder de knie heb kan ik misschien wel wat voor je website maken.

ik heb in het verleden daar simpele voorbeelden voor geschreven, incl. de valkuilen waar je tegen aan kunt lopen.

even zoeken, staan hier ergens.was allen wel voor een pic 16F628(a) zeg maar de standaard van frits zijn cursus

@shiptronic, heb je nog wat voorbeelden?

Dit heb ik nu als ontvangst module

Device 16F688
Config MCLRE_OFF, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON

ALL_DIGITAL TRUE
HSERIAL_BAUD = 9600


Symbol RF     = PORTC.4
Symbol Relais = PORTC.3
Dim    var1 As Byte

main:
HSerIn [Wait( "Bob" ) , var1]
Relais = 1
DelayMS 100

timeout:
GoTo main

End

dit als zendmodule

Device 16F688
Config MCLRE_OFF, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON
ALL_DIGITAL TRUE

Symbol RF = PORTC.4
Symbol S1 = PORTC.3

While 1 = 1

   If S1 = 0 Then
      HSerOut ["Bob"]
   EndIf

Wend
End

In mijn ogen kan het niet zo simpel zijn :P
Zo simpel is het ook niet want het werkt niet -_-'

[Bericht gewijzigd door Boeip op (90%)]

Nee, je moet ook nog een waarde verzenden.
Dus HSEROUT ["Bob", Var1]

Heb je de baudrates ingesteld? (Zo te zien niet).
Bovendien is WAIT bij HSERIN eigenlijk niet nodig.

Ik schat nog een paar weken en dan heb ik m'n huis automatisering klaar en zal dan beginnen met wat voorbeelden van seriele communicatie op m'n site plaatsen.


DEVICE 16F628A                ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
PORTB_PULLUPS ON

declare HSERIAL_BAUD 9600     'set baudrate op 9600
DEclare HSERIAL_RCSTA $90     '  << VUL DEZE WAAREN IN MET HET PROGRAMMA
Declare HSERIAL_TXSTA $24     '  <<         PIC multi CALC 

DECLARE HSERIAL_CLEAR = ON    ' reset buffer bij een overflow?    

dim var1 as byte

while 1 = 1                                

HRSIN dec var1                              ' ontvang een getal

delayms 50

if var1 = 1 then goto tekst1
if var1 = 2 then goto tekst2

wend                                        'Go back into the loop

tekst1:

while 1 = 1 

hrsout " jouw tekst " , 13 , 10 , 

wend

tekst2:

while 1 = 1 

hrsout " jouw tekst deel 2 " , 13 , 10 , 

wend

end

Alleen nog een max232 oid er tussen en je hebt een werkend menutje die je met Hyperterminal van windows kunt bedienen :)

Edit: Make it disappear ;)

[Bericht gewijzigd door Boeip op (97%)]

Op 5 april 2008 12:12:11 schreef Frits Kieftenbelt:
Ik schat nog een paar weken en dan heb ik m'n huis automatisering klaar en zal dan beginnen met wat voorbeelden van seriele communicatie op m'n site plaatsen.

Ben toevallig zelf bezig met een PIC-watchdog voor een webservertje en die (gaan) praten via de seriële poort.

Tip om bij je voorbeelden te zetten: het gebruik van de Str modifier kan leiden tot onverwachte resultaten. Lees: als je een string wilt zenden of ontvangen, breekt 'ie *altijd* af bij een 0-byte, ook als je dat via ...\x wilt forceren tot een langere string.

*klein schopje* :D Edit: De inhoud van dit schopje staat in m'n vorige reply.
Maar alsnog m'n verhaaltje:

Tot zo ver wat ik nu heb:

Zend


Device 16F688
Config MCLRE_OFF, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON

ALL_DIGITAL TRUE
HSERIAL_BAUD = 9600        ' Set baud rate to 9600
HSERIAL_RCSTA = %10010000  ' Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000  ' Enable transmit and asynchronous mode 
HSERIAL_CLEAR = On         ' Optionally clear the buffer before receiving

Symbol S1 = PORTC.3
Dim var1 As Byte
var1 = 1

While 1 = 1
If S1 = 0 Then
  HSerOut [var1]
EndIf
Wend
End

Ontvang


Device 16F688
Config MCLRE_OFF, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON

ALL_DIGITAL TRUE
HSERIAL_BAUD = 9600        ' Set baud rate to 9600
HSERIAL_RCSTA = %10010000  ' Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000  ' Enable transmit and asynchronous mode 
HSERIAL_CLEAR = On         ' Optionally clear the buffer before receiving

Symbol Relais = PORTA.5
Dim var1 As Byte

main:
HSerIn 2000, timeout, [var1]
If var1 = 1 Then
  Relais = 1
  DelayMS 100
Else
  GoTo main
EndIf

timeout:
GoTo main


End

Als ik meet op de uitgang van de zend UART, meet ik daar 5V
Druk ik het knopje in, dan meet ik 1V

Meet ik op de uitgang van de ontvang UART ( de andere PIC ) meet ik 0V
Druk ik het knopje in op de zend module, dan meet ik 1V

Schopje zonder inhoud is niet handig hoor.

Een oud topic, voor mij echter nieuw.

Ik heb veel gegoogled en op het forum gekeken naar het onderwerp UART - PIC. Flarden van waar ik naar zoek zijn wel te vinden, maar ik mis toch het totaalplaatje.

Wat ik wil is een string verzenden vanaf de PC (USB) naar een PIC16F1847 die de inhoud van de string toont op een LED Matrix. (via MikroBasic programma).

Wat voor hardware heb ik hier nu voor nodig naast de PIC en de display?
Hoe sluit ik de usb kabel aan op de PIC? Apart moduultje? USB plug openmaken en solderen?
Welk programma gebruik ik nu op de PC om de string te verzenden? Of is dat gewoon in de Command box copy "tekst" > COM5 of zoiets?

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 )

Topic is meer dan tien jaar oud, begin iets nieuws!

Topic is meer dan tien jaar oud, begin iets nieuws!

Dat klopt, maar ik heb een achterstand van 35 jaar...Vandaar dat het voor mij 'nieuw is' :)

USB sluit je aan op een pic met USB poort, of op de UART via een USB naar UART omzetter als de CP2102

Zoiets had ik inderdaad gezien. Op het boardje met de ESP32 zit ook een CP2102. Vermoedelijk is dat ook bruikbaar.

Op het boardje zit daarnaast een bluetooth en een WIfI.

Ik heb even geprobeerd om het aan te sluiten: USB op de PC (COM5) en de TX van het boardje naar RX van de PIC16F1847 ((Port B.1).
De TX van de PIC via APFCON1 naar Port B.5 verhuisd (anders bijt het de LED aansturing).
en de RX van het boardje naar de TX van de PIC.

Het werd dan zoiets:



APFCON1    = %00000001                    'TX on PortB.5
SPI1_Init()
Max7219_Init()
Clear_Leds()

UART1_Init(4800)                           ' initialize UART module
Delay_ms(100)
if (UART1_Data_Ready() = 1) then           ' if data is received
     UART1_Read_Text(Str[0], "OK", 10)     ' reads text until 'OK' found
end if 
--- Display String on LEDS -----

Maar dit werkt niet. Wellicht iets vergeten? Of kan het helemaal niet zo.

De input deed ik even met copy 12345 OK > COM5

Het topic begint met achterhaalde informatie. Een nieuw topic kan dwaalsporen voorkomen.

Wat zijn die UART pinnen op dat bordje? De uitgang van die CP2102, of een van de serieele poorten van die ESP module?

Wat ik er uit begrijp is dat je ze zelf kan programmeren

Dat wordt dan wel een lastig verhaal. Welicht dan toch een simpele USB-UART omzetter bestellen. Kosten ook niks, heb ik al gezien. Wel lange levertijd, nu al helemaal als je het uit China wilt halen. :>

Op 22 februari 2020 16:27:06 schreef Hunter:
Het topic begint met achterhaalde informatie. Een nieuw topic kan dwaalsporen voorkomen.

Ok, ik ging er van uit dat het Forum zo min mogelijk Topics met dezelfde aard van vragen wilde, vandaar dat ik een bestaande koos.
Volgende keer dus nieuwe Topic starten, als de laatste post te oud is...

Als je de interne processor wilt programmeren, waar heb je dan die pic voor nodig?
Ik gebruik de ESP's altijd stand-alone via hun serieele poort met een pic daaraan. Default zit er AT software in (modemcommando's)