LabVIEW seriekommunikasjon med mikrokontroller

Like dokumenter
CodevisionAVR. Start CodevisionAVR. Velg Settings Terminal og sett opp kommunikasjonsparametrene som figur 1 viser. avrlab07a.doc HVE RI Arnfinn Lunde

FYS3240/4240 Forslag til prosjektoppgave for Lab 4: DAQ-øvelse med LabVIEW

KYBERNETIKKLABORATORIET. FAG: Industriell IT DATO: OPPG.NR.: LV4. LabVIEW Temperaturmålinger BNC-2120

Læreboken på 45 minutter

består av 7 sider inklusiv denne forsiden og vedlegg. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Laget av Atle Hybertsen Høst 2017

Løsningsforslag til eksamen i INF1000

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

Repetisjon Novice Videregående Python PDF

File: C:\My Documents\fagprove\tp\klokke.txt , 08:42:20

Antall vedlegg O Tillatte hjelpemidler:

Plotting av data i grafer

1 Innledning. 2 Virkemåte for kortet. Bli kjent med USB I/O kort K8055. NB! Ta med multimeter og lite skrujern!

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Kodetime for Nordstrand barneskole

Del 1 En oversikt over C-programmering

Brukergrensesnittet i LabVIEW

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

INF Uke 10. Ukesoppgaver oktober 2012

Rekursjon. Binærsøk. Hanois tårn.

Dagens tema: INF2100. Syntaksanalyse. Hva annet gjør en kompilator? Sjekking av navnebruk. Testutskrifter

Steg 1: Installere programvaren

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Kom i gang med. Åpne nettleseren, gå til: Velg «New Project».

Vi skal se på lambda-uttrykk. Følgende er definerte og vil bli brukt gjennom oppgaven

Bygge en kube. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Bruksanvisning Unitronics Vision

Gjennomgang av eksamen H99

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Programmering Høst 2017

KYBERNETIKKLABORATORIET. FAG: Dynamiske systemer DATO: OPPG.NR.: DS3 MOTOR GENERATOROPPGAVE I

Dagens tema: 12 gode råd for en kompilatorskriver

Løsningsforslag til 2. del av Del - EKSAMEN

alternativer til sortering og søking binære trær søketrær Ikke-rekursiv algoritme som løser Hanois tårn med n plater

Løse reelle problemer

Objektorientert design av kode. Refaktorering.

TDT4110 IT Grunnkurs Høst 2015

Løsningsforslag til 2. del av Del - EKSAMEN

TwidoSuite kommunikasjon

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Tallsystemer. Tallene x, y, z og u er gitt ved x = 2, y = 2, z = 4 og u = 2. Dermed blir =

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Tallsystemer. Tallene x, y, z og u er gitt ved x = 2, y = 2, z = 4 og u = 2. Dermed blir =

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

TDT4110 IT Grunnkurs Høst 2016

Syntaksanalyse. Dagens tema: Språkdiagrammene Jernbanediagrammene er et ypperlig utgangspunkt for å analysere et program: INF2100 INF2100 INF2100

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Alle hele tall g > 1 kan være grunntall i et tallsystem.

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Alle hele tall g > 1 kan være grunntall i et tallsystem.

Hvordan skrive Flok og Flass kode? I mange tilfelle er det svært enkelt:

C:\My Documents\Fagprove\Flashlite V25+\LED_Link.pas Printed at 16:06 on 17 Feb 2000 Page 1 of 6

INF1010 Sortering. Marit Nybakken 1. mars 2004

Python: Filer og unntak Gaddis: Kapittel 6

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærere: Robert Roppestad. Hele oppgavesettet består av 8 oppgaver, samt 1 vedlegg.

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

Obligatorisk oppgave nr. 2 (av 4) i INF1000

UNIVERSITETET I OSLO

1) Sørg for at du fortsatt er i eventredigeringsmodus (klikk F6 på tastaturet, eller velg ikonet med en person fra menylinjen).

Høgskoleni østfold EKSAMEN. Emnekode: Emne: ITD13012 Datateknikk (deleksamen 1, høstsemesteret) Dato: Eksamenstid: kl til kl.

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

7) Radix-sortering sekvensielt kode og effekten av cache

Nytt prosjekt og programlogikk

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Bygge en pyramide. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Programmet kan lastes ned gratis fra (Downloads ) og er ikke en del av CxOne-pakken.

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Dagens tema: Sjekking

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

løsningsforslag-uke5.txt

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

UNIVERSITETET I OSLO

Visuell Programmering: Kom i gang med Processing

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

Sprettball Erfaren ComputerCraft PDF

Læringsmål og pensum. Oversikt

UNIVERSITETET I OSLO

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

INF1010 MVC i tekstbaserte programmer

WORKSHOP BRUK AV SENSORTEKNOLOGI

EKSAMEN (Del 1, høsten 2015)

IN Notat om I/O i Java

Høgskolen i Østfold Avdeling for informasjonsteknologi. Programmering av PLS-styrt Modellandsby ved hjelp av Phoenix Profinet / PCWorX

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

"Nelsons kaffebutikk"

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Transkript:

KYBERNETIKKLABORATORIET FAG: Industriell IT DATO: 08.15 OPPG.NR.: LV3 LabVIEW seriekommunikasjon med mikrokontroller Oppgave Denne oppgaven går ut på å lage et LabVIEW-program som kan kommunisere med en mikrokontroller via serieporten. Mikrokontrolleren er koblet til 8 brytere på et treningsbrett se figuren over. Den er programmert slik at hver gang den mottar karakteren R, sender den tilbake en streng bestående av 3 karakterer. De første to karakterer er et to-sifret heksadesimalt tall tilsvarende verdien på knappene, se eksempelet på neste side. Siste karakter er karakteren for ny linje. Mikrokontrollerprogrammet er vist i appendiks Dere skal altså lage et LabVIEW-program som sender karakteren R, leser de to først karakterene i strengen som mottas fra mikrokontrolleren, konverterer denne heksadesimale verdien til et binært tall og skriver verdien til 8 lysdioder på skjermen. LV3 Seriekommunikasjon med mikrokontroller Side 1 av 5

Eksempel, kommunikasjon mellom LabVIEW og Mikrokontroller LabVIEW Mikrokontroller R 8 2 \n Mønsteret på knappene er Send R for Read Sender f.eks 8 Etterfulgt av 2 Stringen avsluttes med new line 1000 0010 = 0x82 Tips til løsning. Knappearray: På frontpanelet kan dere lage et knappearray slik : 1. Velg Controls / Modern / Array, Matrix & Clusters / Array 2. Velg deretter Controls / Modern / Boolean/ Round LED og plasser denne inn i Array-feltet. 3. Trekk arrayfeltet ut til det får 8 dioder. 4. Høyreklikk på feltet, velg Visible items og fjern avmerkingen for Index display Alle funksjonene kan også finnes vha. Search. VISA Vi velger å bruke VISA-driveren i LabVIEW. VISA står for Virtual Instrument Software Architecture og er et generalisert sett med styringskommandoer som kan brukes både mot GPIB instrument, mot VXI-instrument og porter på PCen. VISA-funksjonene finner dere i diagramdelen under Functions / Instrument IO / VISA. Vi foreslår at dere bruker disse VISA-funksjonene : VISA Open, VISA Write, VISA Read og VISA Close Konvertering, heksadesimal kode til bit-array For å plukke ut de to første karakterene av strengen på 3 karakterer som leses fra mikrokontrolleren, har LabVIEW funksjonen String Subset som dere finner under Programming / String. De to hexadesimale karakterene kan konverteres til et tall med Hexadecimal String to Number som dere finner under Programming / String / Number/String Conversion. Til sist må dette tallet konverteres til et bit-array for å vises på Knappearrayet. Dette kan gjøres med funksjonen Number to Boolean Array som dere finner under Programming/ Boolean LV3 Seriekommunikasjon med mikrokontroller Side 2 av 5

Eksempel på løsning. Diagram: Legg merke til at VISA resource name settes til den COM-porten som brukes i VISA Open og at dette føres videre til VISA Write, deretter videre til VISA Read og til slutt til VISA Close. VISA Open gir en status-utgang, error out, som kobles til error in på VISA Write. Dette status-signalet føres videre gjennom VISA Read til VISA Close. FRONTPANEL: Det kan være lurt å ha en visning av ev. feil i forbindelse med VISA-funksjonene. Dette gjøres enklest ved å høyre-klikke på Error-utgangen, velge Create og deretter Indicator. Her har vi bare vist dette for VISA Close, men spesielt under utviklingen av programmet kan det være lurt å ha en slik status-visning for alle VISA-funksjonene. LV3 Seriekommunikasjon med mikrokontroller Side 3 av 5

TIDSEFFEKTIVT PROGRAM : Programmet vist på forrige side viser en programsløyfe(while-loop). Hver gang sløyfen kjøres åpnes og lukkes kommunikasjonskanalen. I dette eksempelet er det ikke satt noe krav til hvor fort sløyfen skal gjennomløpes. Men dersom vi ønsker å skrive til og lese fra tidskritiske prosesser, kan vi flytte disse to funksjonene utenfor sløyfen: Du skal nå teste hvor mye tid vi sparer på å flytte disse to funksjonene utenfor sløyfen. Mål først tiden på det opprinnelige programmet. Mål så tiden når Visa Open og Visa Close står utenfor sløyfen. TIPS: Erstatt WHILE-løkken med en FOR-løkke (høyreklikk på rammen og velg replace). FORløkken kan for eksempel kjøres 100 ganger. Tiden dette tar kan eksempelvis måles ved bruk av funksjonen Get Date / Time in Seconds som vist nedenfor: Hvor lang tid brukte det opprinnelige programmet, med VISA Open og VISA Close inne i sløyfen? Hvor lang tid brukte programmet med VISA Open og VISA Close utenfor sløyfen? LV3 Seriekommunikasjon med mikrokontroller Side 4 av 5

APPENDIKS Mikrokontrollerprogrammet: /********************************************* Program for kommunikasjon med LabVIEW Forfatter : Georg Milvang Chip type : AT90S8515 Clock frequency : 4,000000 MHz *********************************************/ #include <90s8515.h> // Standard Input/Output functions #include <stdio.h> // Standard Input/Output functions #include <stdio.h> int tohex(int c) if (c<10)return c; else return (c+7); void main(void) int b,c; // Port B initialization DDRB=0xFF; // UART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // UART Receiver: On // UART Transmitter: On // UART Baud rate: 9600 UCR=0x18; UBRR=0x19; ACSR=0x80; while (1) c=getchar(); if(c=='r') c=~pinc; PORTB=~c; b=(c&0xf0)>>4; b=tohex(b); c=tohex(c&0xf); putchar(0x30+b); putchar(0x30+c); putchar('\n'); LV3 Seriekommunikasjon med mikrokontroller Side 5 av 5