Kommunikation Först några nya PIC-instruktioner

Slides:



Advertisements
Liknande presentationer
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Advertisements

void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Några moln tillgängliga gratis på Internet
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
© X-on Data EdWord. © X-on Data EdWord – tillägg till Word EdWord är en anpassning för att göra Microsoft Word enklare.
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
PICKit2 programmer-to-go
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
SmartCard laborationen
William Sandqvist Varför använda en liten 8-bitars processor när det finns billiga kraftfulla 32-bitars? William Sandqvist
C-programmering ID120V William Sandqvist Länkad lista
Komparatorn en 1 bits AD-omvandlare
Programmeringsteknik K och Media
Nätverk Logistikprogrammet 2012.
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
OPERATIVSYSTEM WINDOWS
Bakgrunden till PIC-kursen IL131V
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
William Sandqvist C:s minnesmodell.
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Databashantering Do it Max-style!. SELECT SELECT vad FROM tabellnamn Exempel: ◦ SELECT * FROM stralin_max  * = Välj allt som finns i tabellen ◦ SELECT.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Modulär programutveckling
William Sandqvist Kodlåsmall lockmall.vhd William Sandqvist
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
Namnrum, räckvidd och rekursion Linda Mannila
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
INTRODUKTION TILL PROGRAMMERING
Problemlösningsmetodik
 Installation av Windows Vista (Kapitel 9)  Haidar Al Attar (IT lärare)  Jensen Education.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
William Sandqvist Polling och Interrupt Antag att Du sitter i en skön fåtölj och läser en bok. Plötsligt blir Du avbruten av att telefonen.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
Din rapport ? Beskriv din applikation.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
William Sandqvist Många spännande komponenter passar inte 2,54 mm modulen? Därför finns det ”Breakoutboard” som anpassning, för den som.
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
William Sandqvist DA-omvandling, oftast PWM.
William Sandqvist Övning 6 Seriekommunikation - serieport William Sandqvist
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: - Förening av dataströmmar -Blockerande I/O multiplexering -Icke blockerande.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Kronljusströmställaren 0, 1, 2, 3
Robotprogrammering med Arduino Robot
DA-omvandling, oftast PWM William Sandqvist En DA-omvandlare tar stor plats på processor- chippet. Den vanligaste DA-lösningen är i stället.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
William Sandqvist Några experiment med XPortPro.
Meddelanden Panel-PC Co-Driver 3.0, version 1.0.
KPP053, HT2015 MATLAB, Föreläsning 4
Microprocessor / Microcontroller
Lektion 4.
Presentationens avskrift:

Kommunikation Först några nya PIC-instruktioner William Sandqvist william@kth.se

William Sandqvist william@kth.se Rotation av tal PIC-processorerna har två instruktioner för att ”rotera” tal RLF och RRF. Dom här instruktionerna behöver vi i fortsättningen … William Sandqvist william@kth.se

Rotera tal = rotera stegmotor En bipolär stegmotor ansluten till ett fyrabitarsregister. Roterar man talet i registret roterar även stegmotorn. CW (ClockWise) CCW (CounterClockWise). William Sandqvist william@kth.se

Cc5x har inbyggda funktioner rl() och rr() char rl( char ); char rr( char ); C-språket har två skiftoperatorer högerskift >> och vänsterskift << , någon egentlig "rotations"-operator finns inte. För att man trots detta ska kunna utnyttja PIC-processorernas rotations-instruktioner, har kompilatorn Cc5x lagt till två interna funktioner char rl( char ); och char rr( char );. Funktionerna genererar direkt assemblerinstruktionerna RLF och RRF. Carryflaggan når man som bitvariabeln bit Carry; William Sandqvist william@kth.se

Stegmotorprogrammet … STATE = 0b1100.1100; /* number 1100 twice in 8-bit register */ TRISB = 0b1111.0000; /* Steper motor Windings are outputs */ /* at pin RB2-RB0 and RB3-RB1 */ /* one step CW */ Carry = STATE.0; /* Bypass old Carry */ STATE = rr( STATE ); PORTB = STATE; /* one step CCW */ Carry = STATE.7; /* Bypass old Carry */ STATE = rl( STATE ); PORTB = STATE; Dom här instruktionerna behöver vi i fortsättningen … William Sandqvist william@kth.se

William Sandqvist william@kth.se Kommunikation William Sandqvist william@kth.se

William Sandqvist william@kth.se ASCII-tabellen Varje tecken lagras i en Byte, char. ”Hej!” 48 65 6A 21 00 01001000 01100101 01101010 00100001 00000000 PICKit 2 UART Tool använder \r\n http://ascii-table.com/ William Sandqvist william@kth.se

Parallell och Serie -kommunikation Seriekommunikation behöver få ledningar, men går därför långsammare än parallell kommunikation. William Sandqvist william@kth.se

Parallell kommunikation Handskakning. Två styrsignaler DAV (DataAVailable, data tillgängligt) och DAK (Data AcKnowledge, data bekräftelse) ser till att mottagaren hinner med. A presenterar en byte för B. När data är stabilt signalerar A detta till B med DAV = 1. B upptäcker detta och mottager byten. Med DAK = 1 kvitterar B till A att data mottagits. A kan nu ta bort byten och sätta DAK = 0. I sista steget upptäcker B att DAV = 0 och svarar i sin tur med att sätta DAK = 0. William Sandqvist william@kth.se

Seriekommunikation parallell-serie-parallell omvandling William Sandqvist william@kth.se

Asynkron seriekommunikation Vid seriekommunikation är det nödvändigt att sändare och mottagare opererar med samma i förväg överenskommna hastighet. Den hastighet med vilken bitarna överförs kallas för Bitrate [bit/sek]. Vanliga Bitrate´s är multiplar av 75 bit/sek som: 75, 150, 300, 600, 1200, 9600, 19200 och 38400 bit/sek. William Sandqvist william@kth.se

William Sandqvist william@kth.se UART-enhet Serie/Parallell-omvandlingen på bitnivå tas ofta om hand med en specialkrets UART (Universal Asynchronous Reciever/ Transmitter), så att processorn kan leverera/mottaga hela tecken. En sådan finns inbyggd i de flesta PIC-processorer (USART/EUSART). William Sandqvist william@kth.se

William Sandqvist william@kth.se Seriell handskakning Det kan finnas tillfällen då mottagaren behöver hejda dataflödet. Mottagaren behöver då ett buffertminne, och kan med två speciella tecken XON/XOFF (sändning på/ sändning av) meddela sändaren att bufferten håller på att bli full. Som tecknen XON/XOFF brukar man använda 0x11/0x13 ( DC1/DC3, Crtl-Q/Ctrl-S, 00010001/00010011 ). William Sandqvist william@kth.se

William Sandqvist william@kth.se Modem Telenätet kan inte överföra logiknivåer ( = likspänningar ) dessa omformas till ton-signaler med hjälp av Modem ( MOdulator DEModulator ). För att kunna styra och kontrollera uppkopplingen av en uppringd förbindelse är modemen försedda med handskaknings-signaler. I princip ska varje åtgärd som endera sidan företar sig för att etablera förbindelsen kvitteras av den andra sidan. Modemkontakten är en ofta använd standardiserad inkörsport till olika datorutrustningar. William Sandqvist william@kth.se

William Sandqvist william@kth.se Modem styrsignaler Förutom de seriella datasignalerna RXD och TXD, förekommer det två nivåer av handskakningssignaler. Signalparet DTR (Data Terminal Ready, UART klar) och DSR (Data Set Ready, modem klar) är den överordnade handskakningsnivån. RTS (Request To Send, sändningsbegäran från UART) och CTS (Clear To Send, datakanal klar från modemet) är en underordnad handskakningsnivå. Det är få tillämpningar, förutom modem, som behöver handskaknings-signaler i två nivåer. Signalparet RTS-CTS används till den parallella handskakningen. Signalparet DTR-DSR brukar anslutas till respektive datautrustnings matningsspänning. Man kan då upptäcka enklare fel som att man "glömt" att slå på matningsspänning eller att man "glömt" att ansluta kabeln. William Sandqvist william@kth.se

William Sandqvist william@kth.se 0-modem För att ansluta två utrustningar som har modemkontakter till varandra måste man tillverka ett så kallat 0-modem. Det är en kabel där signalparen RXD-TXD, DTR-DSR, och RTS-CTS korsats. (Den ena enheten är ju sändare för den andra och vice versa). Med ett 0-modem får man tillgång till handskakningssignalerna och kan använda dessa till flödeskontroll. Om man inte ansluter handskakningssignalerna kan flödeskontrollen ske med kommunikationssignalerna XON/XOFF, annars måste utrustningen ha så höga prestanda att man klarar man sig utan flödeskontroll. Spänningsnivåerna är ”0” = +12V, ”1” = -12V. (RS232 V24) William Sandqvist william@kth.se

William Sandqvist william@kth.se Bitar och extrabitar Den asynkrona överföringstekniken innebär att man för varje byte lägger till extra bitar som ska göra det möjligt att skilja ut byten från bitströmmen. Ofta lägger man dessutom till en bit för felindikering. En nackdel med detta arrangemang är att dessa extra bitar sänker den effektiva överföringshastigheten (det vill säga antalet överförda bytes/sek). William Sandqvist william@kth.se

William Sandqvist william@kth.se Skicka ett tecken … Dataöverföringens startar med att datalinjen hålls låg "0" under ett tidsintervall som är en bit långt (T = 1/Bitrate). Detta är startbiten. Under 8 lika långa tidsintervall följer sedan databitarna, ettor eller nollor, med den minst signifikantabiten först och den mest signifikanta biten sist. Därefter kan följa en paritetsbit, ett hjälpmedel vid detekteringen av överföringsfel. Överföringen avslutas slutligen av att datalinjen för åtminstone ett bit-tidsintervall är hög. Det är stoppbiten. William Sandqvist william@kth.se

William Sandqvist william@kth.se Mottaga ett tecken Mottagningen av data sker genom att man först inväntar startbitens negativa flank, för att därefter registrera datalinjen vid tidpunkterna 3T/2, 5T/2, ... 17T/2 relativt startflanken (dessa tider är databitarnas "mittpunkter"). Mottagaren "synkroniseras om" på nytt av varje startflank. Detta medför att relativt stora avvikelser från överens-kommen bauderate kan förekomma, hos både mottagare och sändare, innan dataöverföringen misslyckas! William Sandqvist william@kth.se

William Sandqvist william@kth.se Paritetsbit/9:e bit En sedan länge använd metod för feldetektering är den s.k. paritets-kontrollen. Till den byte som överförs lägger man en extra s.k. paritetsbit som är så vald att det totala antalet ettor är jämnt vid jämn paritet (J), eller udda vid udda paritet (U). Sedan det överenskommits om vilken paritet J/U som ska gälla, kan mot-tagaren upptäcka om någon av de överförda bitarna "bytt" värde till följd av en störning. Paritetsbiten härstammar från automatiseringsteknikens barndom, då data överfördes med stansade hålremsor. De mekaniska stansutrustningarna "hängde sig" ibland, men att två stanspinnar skulle kärva samtidigt var obefintlig. En alternativ användning för en nionde bit är att låta den betyda ”allmänt anrop”. De åtta vanliga bitarna tolkas då som den anropades adress. William Sandqvist william@kth.se

William Sandqvist william@kth.se Bit-banging Det är mycket vanligt att man programmerar seriekommu-nikation ”bit för bit”. Valfri portpinne kan användas så om inte annat är detta ett mycket bra felsökningshjälpmedel. En lämplig Bitrate är då 9600. T = 1/9600 = 104,167 s. Om processorns klockfrekvens är 4 MHz behövs det en fördröjningsloop som tar 104 instruktioner. /* delay one bit 104 usec at 4 MHz */ /* 5+18*5-1+1+9=104 without optimization */ i = 18; do ; while( --i > 0); nop(); Fördröjningsrutinen blir beroende av klockfrekvens och proceessortyp. Koden ovan gäller 16F690. Fler exempel finns på kurswebben. William Sandqvist william@kth.se

William Sandqvist william@kth.se void putchar( char ) void putchar(char d_out) { char count, i; Serial_out = 0; /* set startbit */ for(count = 10; count > 0; count--) { /* delay 104 usec */ i = 18; do ; while( --i > 0); nop(); Carry = 1; d_out = rr(d_out); Serial_out = Carry; } } William Sandqvist william@kth.se

William Sandqvist william@kth.se char getchar( void ) char getchar( void ) { char d_in, count, i; while( Serial_in == 1) /* wait for startbit */; /* 1.5 bit 156 usec no optimization */ i = 28; do ; while( --i > 0); nop(); nop2(); for(count = 8; count > 0; count--) { Carry = Serial_in; d_in = rr( d_in ); /* 1 bit 104 usec no optimization */ i = 18; do ; while( --ti > 0); nop(); } return d_in; } William Sandqvist william@kth.se

Debug-verktyg debug690bb.c PICKit2 UART-tool kan användas som ett enkelt debug-verktyg. Samma ledningar som används till att programmera PIC-chippet används av UART-tool för seriekommunikation. Man behöver därför en bitbanging-rutin för seriekommu-nikation med dessa pinnar. void initserial( void ) /* init PIC16F690 serialcom */ { ANSEL.0 = 0; /* No AD on RA0 */ ANSEL.1 = 0; /* No AD on RA1 */ PORTA.0 = 1; /* marking line */ TRISA.0 = 0; /* output to PK2 UART-tool */ TRISA.1 = 1; /* input from PK2 UART-tool */ } William Sandqvist william@kth.se

William Sandqvist william@kth.se debug690bb.c void main( void) { char c; initserial(); delay10(100); /* 1 sek delay */ /* 1 sek to ”turn on VDD" and click "Connect” */ while( 1) { char x = 0xAA; /* your code ... */ /* What is the value of x now ? */ getchar( ); /* breakpoint, wait for charachter */ putchar( x ); /* PK2 UART-tool displays x in hex */ /* moore of your code ... */ } } William Sandqvist william@kth.se

William Sandqvist william@kth.se PICKit 2 UART Tool Obs! Inställning Mode: Hex Programmet kör till brytpunkten och väntar där på tecken, Send ”00”. Därefter skrivs variabeln x ut. Vem hade kunnat ana att x var 0xAA? Konvertera sedan 0xAA till önskad bas med hjälp av Windows kalkylator … William Sandqvist william@kth.se

Konvertera variabelvärdet till valfri bas Använd Windows kalkylator för att konvertera svaret till valfri bas. Debug funktionerna är bara på c:a 113 instruktioner så det finns gott om plats kvar för ditt eget program … William Sandqvist william@kth.se

William Sandqvist william@kth.se PIC16F628 USART De flesta PIC-processorer innehåller en inbyggd serie-kommunikationsenhet, USART ( Universal Synchronous or Asynchronous Reciever and Transmitter ). Som namnet anger är denna enhet användbar både för synkron och asynkron seriekommunikation, men vi kommer bara utnyttja asynkron seriekommunikation. USART består av tre delar. SPBRG ( Serialunit Programable BaudRateGenerator ) är en programmerbar Baudgenerator för överföringshastigheten. USART Transmitter och USART Reciever är sändarenhet respektive mottagarenhet. William Sandqvist william@kth.se

William Sandqvist william@kth.se Transmitter För att sända ett tecken räcker det med att lägga det i TXREG-registret. När sändarregistret TSR är "redo" kopieras tecknet över till detta och skiftas ut seriellt på pinnen TX/CK. Om man har ytterligare ett tecken att sända kan man nu placera detta i "väntkö" i TXREG. Så fort TSR är tomt laddas nästa tecken in från TXREG automatiskt till TSR. I blockdiagrammet visas flaggan TRMT ( TransmitterRegister eMpTy ) som anger om sändarregistret TSR är upptaget eller ej. Flaggan kan läsas av programmet ( eller generera interrupt ) så att man kan se till att tecken skickas kontinuerligt. Flaggan 0-ställs automatiskt när ett tecken hamnar i TSR. William Sandqvist william@kth.se

William Sandqvist william@kth.se Transmitter settings bit 6 = 0 TX9: Ingen niobits-sändning. bit 5 = 1 TXEN: Transmit Enable bit. Måste vara på. bit 4 = 0 SYNK: Usart mode select bit. Vi väljer asynkront arbetssätt. bit 2 = 1 BRGH: High Baudrate select bit. Vi väljer höghastighetsläge. bit 1 TRMT: Flagga som är ”1” om TSR är tomt. William Sandqvist william@kth.se

William Sandqvist william@kth.se Reciever Tecken inkommer från pinnen RX/DT till mottagarregistret RSR. När mottagningen av ett tecken är klart förs det över till RCREG som är en så kallad FIFO-buffert. Denna buffert rymmer två tecken som läses i samma ordning som de kom. Flaggorna OERR, FERR varnar för felaktigt mottagna tecken. Bufferten tillsammans med TSR medför att ett program kan låta bli att bevaka mottagarregistret under den tid det tar att mottaga tre tecken. Flaggan RCIF anger om det finns tecken i bufferten eller ej. Denna flagga "0"-ställs automatiskt när man läst så att bufferten blivit tom, ett /två tecken. William Sandqvist william@kth.se

William Sandqvist william@kth.se Reciever settings bit 7 = 1 SPEN: Enablar serieporten. bit 6 = 0 TX9: Ingen niobitsmottagning. bit 4 = 1 CREN: Continuous Receive Enable bit. Mottag tecken i följd. bit 2 och bit 1 FERR OERR Flaggor som anger om mottagningen blivit fel. Det är biten RCIF som anger om det finns tecken att hämta. William Sandqvist william@kth.se

Baud Rate Generator BRG En bit BRGH bestämmer låghastighets eller höghastighets läge. Ett register SPBRG innehåller Bauderategeneratorns neddelningstal. BRGH = 0; BaudRate = fosc/(64(SPBRG+1)) BRGH = 1; BaudRate = fosc/(16(SPBRG+1)) BRGH=1; SPBRG = 26-1; /* 9600 Baud @ 4 MHz */ William Sandqvist william@kth.se

Initiering av serieporten void initserial( void ) /* initialise serialcom port 16F628 */ { SPEN = 1; BRGH = 1; /* Async high speed */ TXEN = 1; /* transmit enable */ SPBRG = 26-1; /* 9600 Baud @ 4 MHz */ CREN = 1; /* Continuous receive */ RX9 = 0; /* 8 bit reception */ TRISB.2 = 0; /* TX is output */ TRISB.1 = 1; /* RX is input */ } William Sandqvist william@kth.se

William Sandqvist william@kth.se Seriecom-funktioner char getchar( void ) /* recieves one char */ { char d_in; while ( RCIF == 0 ) ; /* wait for char */ d_in = RCREG; return d_in; } Blockerande funktion! Här blir man sittande tills ett tecken inkommer! void putchar( char d_out ) /* sends one char */ { /* wait until previus character transmitted */ while (!TXIF) ; TXREG = d_out; } William Sandqvist william@kth.se

Varning! Recievern kan låsa sig! Programmet måste läsa mottagarenheten innan den hunnit mottaga tre tecken - annars låser den sig! När man ansluter seriekontakten kanske man "darrar" på handen på sådant sätt att "kontaktstudsarna" blir till många mottagna tecken. Om mottagarenheten då "låser sig" är detta naturligtvis ett mycket svårt/omöjligt "programfel" att hitta! Lösningen är en upplåsningsrutin att kunna ta till vid behov. Man anropar upplåsningsfunktionen direkt innan man förväntar sig inmatning via serieporten. William Sandqvist william@kth.se

William Sandqvist william@kth.se OverrunRecover() void OverrunRecover( void ) { char trash; trash = RCREG; trash = RCREG; CREN = 0; CREN = 1; } Upplåsningsrutinen. William Sandqvist william@kth.se

Seriekommunikation Hårdvara 1) PICKIT 2 UART Tool 2) PC med serieport Bygla PIC-processorns serieport till programmerings-ledningarna (Or, Red). Invertera signalerna till/från PIC-processorns serieport innan den ansluts till PC:ns serieport. William Sandqvist william@kth.se

Seriekommunikation USB-serial-TTL De flesta PC saknar nuförtiden serieport, en drivrutin kan installera en virtuell USB-serieport. Installationsprogram för drivrutin från FTDI. 3) FTDI TTL232R ansluts direkt till processorpinnarna. William Sandqvist william@kth.se

William Sandqvist william@kth.se Terminalprogram Hyperterminalen (ingår i Windows XP) MTTTY (Ingår i vårt installationsprogram) William Sandqvist william@kth.se

Terminalprogram till Vista Om Du använder USB-virtuell serieport – tag reda på COM-portens nummer först (med Enhetshanteraren/Device Manager) … PuTTY PuTTY William Sandqvist william@kth.se

Testprogram: echo()/crypto() void main( void) { char c; TRISB.6 = 1; /* not to disturb UART-Tool */ TRISB.7 = 1; /* not to disturb UART-Tool */ initserial(); delay10(100); /* 1 sek delay */ /* 1 sek to turn on VDD and Connect UART-Tool */ while( 1) { c = getchar( ); /* input 1 character */ if( c == '\r'||c == '\n') putchar(c); else putchar(c); /* echo the character */ /* putchar(c+1) => Crypto! */ } } Om PIC-processorn ”ekar” de skrivna tecknen så fungerar kommunikationen. Variant: krypto ! AB William Sandqvist william@kth.se

Testprogram: fyrkantvåg 9600 Baud, bit/sek. Om man sänder kontinuerligt 8 bitar med startbit och stoppbit bokstaven ’U’ (1010101010) får man en fyrkatvåg med f = 4800 Hz. Detta test är bra att känna till. while(1) putchar(’U’); William Sandqvist william@kth.se