2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen Code paging Switch bounce A/D conversie Seriele communicatie met een PC (UART - USB - VCP) IR Muziek
2PROJ5 – PIC assembler Code paging 11 bits == 2k instructies...
2PROJ5 – PIC assembler Code paging Als je minder dan 2k code gebruikt geen probleem Anders: GOTO LGOTO CALL LCALL Maar: LGOTO en LCALL worden vertaald naar meerdere instructies, dus je kan niet skippen! Wel kan: BANKSEL daarzo SKPNZ GOTO daarzo
2PROJ5 – PIC assembler Switch bounce (denderen) Als je een drukknop indrukt maakt hij niet 1 keer contact: hij dendert een tijdje (maximaal ~ 50 ms)
2PROJ5 – PIC assembler PIC - USART USART = Universal Synchronous / Asynchronous Receiver + Transmitter wij gebruiken asynchroon PIC UART pins zijn verbonden met een FT232R USB-to- asynchronous converter Op de PC wordt een (virtuele) seriele poort aangemaakt (XP heeft al een driver) control panel system hardware device manager ports evt driver van gebruiken op de PC gebruik je een terminal, bv HyperTerminal (hypertrm, 19k2, no parity, no flow control, hu: com3 (?)) In de image staat een icoon
2PROJ5 – PIC assembler PIC - USART
2PROJ5 – PIC assembler
BRGH = 0 BRGH = 1
2PROJ5 – PIC assembler R
RR-0101-
PIC – USART - init make TxD (RC6) output, RxD (RC7) input SPBRG: 19k2 value for high speed TXSTA: 8 bit, enable, asynch, high speed RCSTA: enable, 8 bit, continuous, no ADDEN
2PROJ5 – PIC assembler PIC – USART - send wacht tot TSR bit aangeeft dat TSR empty is copy het te verzenden byte naar TXREG (wacht tot TSR bit aangeeft dat TSR empty is)
2PROJ5 – PIC assembler PIC – USART - receive als OERR bit gezet is: –clear CREN –wacht een paar instructies –set CREN als PIR1 : TXIF op 0 gezet is: –lees RCREG, dit is het ontvangen byte (anders is er nog niets ontvangen)
2PROJ5 – PIC assembler power van de 2e USB poort
2PROJ5 – PIC assembler PIC – USART – demo code subroutines UART_INIT : call to inistialise the UART for 19k2 UART_CHAR_SEND : sends the char in W UART_CHAR_RECEIVE : checks the UART for a received char, C flag set when a char is received (char in W), C flag is cleared when no char is received UART_CLRF_SEND : sends the CR LF sequence
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 16 PIC – USART – demo code main MAIN CALL UART_INIT MOVLW 'H' CALL UART_CHAR_SEND MOVLW 'i' CALL UART_CHAR_SEND CALL UART_CLRF_SEND MAIN_LOOP CALL UART_CHAR_RECEIVE SKPC GOTO MAIN_LOOP MOVWF Char MOVLW '"' CALL UART_CHAR_SEND MOVFW Char CALL UART_CHAR_SEND MOVLW '"' CALL UART_CHAR_SEND CALL UART_CLRF_SEND GOTO MAIN_LOOP
2PROJ5 – PIC assembler De IR ontvanger (1) TFM5360 (alleen) gevoelig voor een ~ 36 kHz signaal. Dat signaal mag niet continu zijn (goed is bv.1 kHz: 500 us signaal, 500 us uit)
2PROJ5 – PIC assembler De IR ontvanger (2) (alleen) gevoelig voor een 36 kHz signaal. Bij 10% afwijking, dus kHz, 60% vd. Afstand.
2PROJ5 – PIC assembler De IR ontvanger (3) Aanbevolen: puls >= 400uS, periode =< 0.4
2PROJ5 – PIC assembler De IR ontvanger (4)
2PROJ5 – PIC assembler Eenvoudig IR zenden / ontvangen 36 kHz 28 us per puls 5 * 28 instructies per fase (hoog en laag) 400 us / 28 us minimaal 14 pulsen, neem bv 30 pulsen Onmiddelijk daarna de IR ingang lezen (laag == signaal gedetecteerd) Pauze! (bv. 400 us) herhaal
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 22 DB038 circuit – multiplexers
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 23 PIC – A/D A/D converter vertaald een analoge spanning naar een waarde (8 bits) of (10 bits) RA0
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 24 PIC – A/D – configure pin as analog
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 25 PIC – A/D – aan zetten
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 26 PIC – A/D – channel
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 27 PIC – A/D – clock
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 28 PIC – A/D – start, wait
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 29 PIC – A/D – start, wait
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 30 PIC – A/D – enable, go / done
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 31 PIC – A/D – result format
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 32 Read an analog input Zet de juiste code op poort RE Configureer de pin (RA0) als input (TRISA) Configureer de pin (RA0 = AN0) in ANSEL als analoog Activeer de A/D, selecteer het betreffende kanaal, selecteer de conversie clock (ADCON0) Selecteer VSS en VDD als referenties, en de alignment (ADCON1) wacht 100 us start de conversie (ADCON0) wacht tot de conversie voltooid is (ADCON0) lees het resultaat (ADRESH, eventueel ADRESL)
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 33 DB038 circuit – luidspreker
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 34 piepen RE0..RE3 output, waarde 0x02 RA1 output En nu maar ‘knipperen’ op RA1
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 35 Hoogte en duur Met een punt er achter: 50% langer
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 36 nootnaam frequentie
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 37 C4 – ¼ E4 – ¼ C4 – ¼ E4 – ¼ C4 – ¼ E4 – ¼ G4 – 3/8 Stilte – 1/8 G4 – 3/8 F4 – 1/8...
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 38 oefening (facultatief): toetsenbord, A/D, display, UART Schrijf een programma dat het toetsenbord leest, en de ingedrukte toets laat zien op het meest linker display. De ingedrukte toets bepaald het A/D kanaal dat wordt gelezen, en (hexadecimaal) wordt weergegeven op de rechter 2 displays.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 39 oefening ‘A/D’ (facultatief) 1) Lees met de A/D converter de potentiometer uit en laat het 8-bits resultaat zien op 2 zeven- segment displays. 2) Lees met de A/D converter de LDR uit en laat het 8-bit resultaat zien op de LEDs
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 40 oefening ‘piepen’ (facultatief) Maak een programma dat 1 keer een piep laat horen (bv 4 seconde op 1 kHz) Piepen is niets anders dan knipperen, maar dan met een luidspreker in plaats van een LED, en wat sneller. 1 kHz = 1ms per puls = 500 us hoog / 500 us laag 4 seconde = 4000 pulsen = 80 x 250