Pic 16f877a en serial verbinding

Ontwerpen en programmeren

Postby henko » Wed Feb 26, 2014 12:00 am

Hallo Allen,

Ik had nog 2 pic's liggen, dat wist ik niet meer dat ik ze had en dat zijn 2x de 18f4455.
Daarop is ook usb aanwezig en dat zit ook in Flowcode 4,2 en
dat heb ik.
Als ik de pic waardes laat verzenden waar kan ik dan op de PC de waardes uitlezen.
Wat voor een programma heb ik dan nodig, of moeten mijn zoon en ik daar dan iets voor programeren in C#.

Groet Henk.
henko
 
Posts: 529
Joined: Thu Jan 02, 2014 3:27 pm

Postby walbeek » Thu Feb 27, 2014 12:00 am

Hoi Henk,

Bij Matrix op de site staat een EB055, dat is een USB boardje.
Daar staan ook datasheets, voorbeelden en de windows drivers bij.
Waarschijnlijk kun je daar je informatie wel uithalen.
Op je PC kun je Wireshark gebruiken om de ontvangen pakketjes te bekijken. Dan weet je in ieder geval of de verbinding goed is.
Is vaak een beetje lastig met routers en firewalls en zo.
Een netwerkkabel tussen de PIC en de PC is dan handiger.
Moet bij oude netwerkkaarten wel vaak een "kruis" kabel zijn.

Rinie
walbeek
 
Posts: 191
Joined: Thu Jan 02, 2014 3:27 pm

Postby henko » Thu Mar 06, 2014 12:00 am

Het werkt nu goed.
Het probleem was een verkeerde USB/serial driver.
Ik krijg nu een string binnen die ik naar de pic stuurde.

Alleen lukt mij het nog niet om een getal binnen te krijgen.
Stel ik zet op variabele klok=70.
Maar ik krijg het niet voor elkaar om deze waarde op mij computer te krijgen.

Wie kan mij wat wijzer maken?

Henk.
henko
 
Posts: 529
Joined: Thu Jan 02, 2014 3:27 pm

Postby arjen h. » Thu Mar 06, 2014 12:00 am

Kijk, dat is goed Nieuws!

Alles wordt denk ik als character verstuurt en ontvangen. Als je 1(0x01 hex) verstuurt dan is dat een niet leesbaar karakter. Probeer eens 49 (0x31 hex) te versturen.
Het Elektor forum is voor de lezers; voor een vraag aan de redactie kun je het beste Elektor een email sturen.
arjen h.
Moderator
 
Posts: 1289
Joined: Thu Jan 02, 2014 10:40 am

Postby henko » Fri Mar 07, 2014 12:00 am

War ikgraag zou willen weten, hoe kan ik de waarde van een variabele versturen naar de pc.Moet ik dat over zetten of zoiets dergelijks?
Een string gaat heel goed.
henko
 
Posts: 529
Joined: Thu Jan 02, 2014 3:27 pm

Postby arjen h. » Sat Mar 08, 2014 12:00 am

Ja, de ontvanger ontvangt alleen bytes, dus moet je getallen omzetten naar een reeks van karakters. Vandaar dat een getal 1 als karakter 49 (0x31) verzonden moet worden (google ascii tabel).

Wil je 12,5 verzenden, dan moet je dus de karakters '1' '2' ',' en '5' verzenden.


edit: als de ontvanger een eigen geschreven programma is, dan kun je natuurlijk je eigen protocol bedenken. Een getal 1 kun je dan ook gerust als karakter 1 versturen/zenden.
Het Elektor forum is voor de lezers; voor een vraag aan de redactie kun je het beste Elektor een email sturen.
arjen h.
Moderator
 
Posts: 1289
Joined: Thu Jan 02, 2014 10:40 am

Postby nieuw 2 » Sun Mar 09, 2014 12:00 am

Ik zou me toch eerder aan de ASCII tabel houden. Je kan deze tabel beschouwen als een afspraak onder programmeurs. En bij uitbreiding onder de software fabrikanten.

Het voordeel is dan dat in de meeste programmeertalen een aantal cast functies zitten. Zo kan je een string controleren of hij numeriek is. Is dit true, dan kan je de string casten naar int, dbl of float. Scheelt toch weer wat werk.

Een aantal ASCII waardes zijn besturingscodes. Niet direct aan te raden deze als waarde te versturen. Je weet dan niet met zekerheid hoe de programmeertaal zal reageren op deze waardes.
nieuw 2
 
Posts: 120
Joined: Thu Jan 02, 2014 3:28 pm

Postby walbeek » Mon Mar 10, 2014 12:00 am

Hoi Henk,

Je kunt in Flowcode eenvoudig strings manipuleren en bijvoorbeeld een byte naar een string kopieren. Bijvoorbeeld een byte "temperatuur"

TestString = ToString$ (temperatuur)

Ik heb een voorbeeldje erbij gedaan met de waarde van een keypad. die wordt gecontroleerd, omgezet naar String en dan op een LCD gezet.

Rinie
Attachments

[The extension fcf has been deactivated and can no longer be displayed.]

walbeek
 
Posts: 191
Joined: Thu Jan 02, 2014 3:27 pm

Re:

Postby Henko1 » Fri Mar 21, 2014 1:45 pm

walbeek wrote:Hoi Henk,Je kunt in Flowcode eenvoudig strings manipuleren en bijvoorbeeld een byte naar een string kopieren. Bijvoorbeeld een byte "temperatuur"TestString = ToString$ (temperatuur)Ik heb een voorbeeldje erbij gedaan met de waarde van een keypad. die wordt gecontroleerd, omgezet naar String en dan op een LCD gezet.Rinie

Hoi allen,

Ik ben nijdig aan het stoeien geweest en ik weet nu hoe ik een int variabele moet versturen naar de PC.
Ik krijg alle waardes binnen op de pc en we kunnen met behulp van visual studio nu de waardes in lezen.
We zijn nu bezig om een weerstation te programeren op de PC om het mooi weer te geven.
Henko1
 
Posts: 13
Joined: Fri Mar 21, 2014 1:29 pm

Re: Anemometer

Postby Henko1 » Tue Mar 25, 2014 6:14 am

[quote="arjen h."]Ja, de ontvanger ontvangt alleen bytes, dus moet je getallen omzetten naar een reeks van karakters. Vandaar dat een getal 1 als karakter 49 (0x31) verzonden moet worden (google ascii tabel).Wil je 12,5 verzenden, dan moet je dus de karakters '1' '2' ',' en '5' verzenden.edit: als de ontvanger een eigen geschreven programma is, dan kun je natuurlijk je eigen protocol bedenken. Een getal 1 kun je dan ook gerust als karakter 1 versturen/zenden.[/quote

Ik heb een mooie anemometer gemaakt en een programma voor geschreven dat werkte goed.
In dit programma telde ik de pulzen in 1 sec.
In mijn programma werd er een variabele steeds met 1 verhoogt.
Als dan het schijfje toevallig met de opening voor de CNY37 stond liet ik het programma heen en weer jumpen op een plaats waar ik de laatste waarde steeds met 1 liet verminderen tot de waarde weer 0 was en ik zag op mijn display ook 0.
Maar nu loop ik tegen het volgende probleem aan nu ik alle waarde's naar de PC stuur.
Ik kan niet meer gebruik maken van het jumpen want dan heb ik helemaal geen waarde's meer van de andere metingen want alles zit in een 16f877a.

Nu komt mijn vraag >hoe kan ik het probleem oplossen als de opening van het schijfje precies voor de cny37 blijft staan? want als ik het programma laat doorlopen en ( zonder het jumpen)dan blijft de 16f877a de waarde met maar ophogen met de frequentie van de pic.

Henk.
Henko1
 
Posts: 13
Joined: Fri Mar 21, 2014 1:29 pm

PreviousNext

Return to Microcontrollers

Who is online

Users browsing this forum: No registered users and 3 guests