hoi, ik probeer al een tijdje in visual basic met de mscomm te comuniseren met mijn pic. jammer genoeg begrijp ik niet zo veel van het signaal dat uit de mscomm komt.
het is net alsof er een dubbele byte uit komt.
als ik op de uitgang kijk van de max232 met mijn scoop, dan zie ik dat het signaal van hoog naar een 8bit code gaat, dan weer eens hoog, en dan nog eens die 8bit code. hoe komt dit?
welk soort data kan ik eigenlijk naar een mscomm sturen? een int of boolean?
is het mogelijk om met de mscomm een één enkel bitje (of meerdere) te sturen, zodat ik zelf een protocol kan maken?
heeft iemand een simpel (of ingewikkelder) voorbeeld programma (+code) waarin het mscomm gebruiker wordt?

Ha die Sille,

Ik e.e.a. aan ervaring met MSComm ten eerste welke Visual Basic hebben we het hier over ? .NET ? Of gewoon 6 ?

De data die je naar de MSComm kunt sturen zijn karakters, d.w.z. heb je dus een integer (0~255), dan zul je deze eerst om moeten zetten naar een $tring. Dit doe je door bijvoorbeeld:


MSComm1.Output = Chr$(MyIntVar)

De COM poort stuurt nu dus die variabele de wereld in.

Vergeet ook niet de compoort te openen


MSComm1.PortOpen = True

En de instellingen van de poort in de propertiesbrowser van VB

Succes

ja, wat jij (antoine) zegt had ik al ontdekt, maar het signaal dat er uit komt hoe moet ik dat interpreteren? ik zie wel dat de uitgang hoog en laag aanneemt afhankelijk van het karakter dat ik stuur, maar als ik vb 216 doorstuur weet ik niet welke bit waar voor staat.
er komt ook altijd een tweede keer precies het zelfde beeld na als ik maar 1 char doorstuur. waarom is dit?
ik gebruik visual basic 6

Dat is mij volslagen onbekend dat probleem van die twee bytes, misschien een probleem met de handshaking waar heb je die opstaan ?

Als de lijn niet actief is, laat deze een "hoog" (een "1") zien. Wordt er nu een byte verstuurd dat gebeurd het volgende

Eerst de startbit, die is altijd laag
Dan de acht data bits, beginnend met Bit0
Dan de eventuele pariteitsbit
en dan de stopbit (altijd hoog)

hoog = -12V, laag = +12V (meen ik mij te herinneren) na de MAX232 is hoog gewoon +5 en laag 0

Op 3 augustus 2003 21:12:52 schreef Antoine:
Dat is mij volslagen onbekend dat probleem van die twee bytes, misschien een probleem met de handshaking waar heb je die opstaan ?

Ok dit probleem is al opgelost.

ik zit echter nog met enkele probleempje.

  1. stel ik neem een baudrate van 9600bps. dus dat wil zeggen dat 1 bit 104.166 µS nodig heeft.
    hoe moet ik dan mijn delay maken in mijn pic @ 4Mhz? dit werkt niet:
    
    delay  movlw  d'100'
           movwf  temp1
    delay1 decfsc temp1,f
           goto   delay1
           return
    

    elke instructie heeft toch 1µS nodig? of niet?
  2. hoe kan ik data inlezen met de pc? ik heb enkel 1 Tx en 1 Tr. ik werk met een max232.
    ik zou graag vb de pc laten weten wanneer hij de volgende byte mag verzenden. wanneer vb de pic een '1' stuurt na de pc moet die wachten, wanneer het een '0' is mag de pc de volgende byte verzenden.
    (het is momenteel nog voor een lcd aan te sturen).
    ik zou ook graag weten hoe ik byte's naar een pc kan sturen.

Heeft zo'n ding geen UART onboard ? Dat is veel makkelijker, ik gebruik veel de ATMega8 (da's wel geen PIC), maar die heeft zo'n ding onboard, reuzehandig.

Verder kun je denk ik dan beter de frequentie van je kristal aanpassen op de datarate van de PC

Suc6

Op 11 augustus 2003 19:58:48 schreef Antoine:
Heeft zo'n ding geen UART onboard ?

niet dat ik weet, ik gebruik een pic16f84

das wel wat lastiger Sille... je kunt mijn inziens dus beter een 16F628 pakken... welke dus een standaard TX en RX aansluiting bevat, ik ben hier zelf nu mee aan het stoeien, niet dat het me al lukt, maar toch :P

nu moet je dus zelf een heel protocol schrijven... reuze lastig imho

Op 11 augustus 2003 20:51:11 schreef Jeroen Boere:
je kunt mijn inziens dus beter een 16F628 pakken... welke dus een standaard TX en RX aansluiting bevat, ik ben hier zelf nu mee aan het

ik ben sinds vandaag te weten gekomen dat de 16f628 heel wat meer te bieden heeft, en pin compatibel is met de 16f84. ik ga deze week nog eens die nieuwe halen, en es kijken of ik niet es van favo pic moet veranderen :D

een protocol schrijven? ik zou graag eenvoudig beginnen met bitjes, en dan zou ik later miss via het rs232 protocol werken omdat die al bestaat en nie zo moeilijk is. maar ik zou graag dan de pc kunnen programmeren zodat die die 8bit code met start en stop bit kan begrijpen.

[Bericht gewijzigd door sille op ]

Ik weet natuurlijk niet hoe de UART van zo'n PIC werkt, maar volgens mij moet je gewoon een byte er naar toe schrijven en regelt de UART intern de rest :)

Op 11 augustus 2003 21:49:54 schreef Antoine:
Ik weet natuurlijk niet hoe de UART van zo'n PIC werkt, maar volgens mij moet je gewoon een byte er naar toe schrijven en regelt de UART intern de rest :)

volgens de datasheet wel ja :)

Voor de 16... serie microcontrollers staan er op de web-site van Microchip verschillende kant-en-klare software UART's beschreven; kijk effe in de application notes en je vindt ze vanzelf. Houd er rekening mee dat zo'n routine in software wel werkt, maar behoorlijk wat beperkingen ten aanzien van de "rest" van je programma oplegt.