Les 6 - onderwerpen - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Les 6 - onderwerpen

Description:

Title: PowerPoint-presentatie Author: Peter Kramer Last modified by: wvanooijen Created Date: 9/20/2000 9:37:54 AM Document presentation format: On-screen Show (4:3) – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 31
Provided by: PeterK229
Category:
Tags: les | onderwerpen

less

Transcript and Presenter's Notes

Title: Les 6 - onderwerpen


1
Les 6 - onderwerpen
  • Volgende weken
  • Keypad, dender (bouncing)
  • U(S)ART
  • IR
  • Motortjes
  • C library
  • Opdrachten
  • toetsenbord en UART (asm),
  • LCD (C)

2
Na vandaag
  • Week 22
  • maandag 32 mei inhaalles voor de
    maandag-klas
  • Week 24 projectweek!
  • maandag 14 juni SLO / ABC
  • docent(en) aanwezig wo, vry 1000 1400
  • Week 25 projectweek!
  • docent(en) aanwezig di 1000 1400
  • donderdag 24 juni beoordeling woensdag-klas
    1000 1500
  • vrijdag 25 juni beoordeling maandag-klas 1000
    1500
  • Practicum opgaven kunnen uiterlijk dinsdag 26
    juni worden afgetekend.

3
keypad
DB038 manual 2.18
4
Keypad lezen
  • Maak pin RA1 een ingang (bit 1 in TRISA)
  • Maak poort A een digitale poort
  • ANSEL 0
  • Zet een waarde 0x01, 0x02, 0x04 of 0x08 op PORTD
  • Zet een waarde 4 .. 7 op PORTE
  • Lees pin RA1
  • Doe dit voor alle 16 toetsen

DB038 manual 2.18
5
Keypad lezen - demo
main_loop BCF PORTA_SHADOW, 2 LCALL
PORTA_FLUSH LCALL kbd_read XORLW
0xFF MOVWF PORTD_SHADOW LCALL
PORTD_FLUSH MOVLW .4 MOVWF
PORTE_SHADOW LCALL PORTE_FLUSH BSF
PORTA_SHADOW, 2 LCALL PORTA_FLUSH LCALL
M10WAIT LGOTO main_loop END
  • errorlevel -307
  • errorlevel -302
  • include ltDB038-01.INCgt
  • include ltkbd.incgt

Archive kbd-asm.zip
6
Keypad lezen kbd.inc
  • LGOTO kbd_inc_end
  • define kbd_0 .0
  • define kbd_1 .1
  • define kbd_2 .2
  • define kbd_3 .3
  • define kbd_4 .4
  • define kbd_5 .5
  • define kbd_6 .6
  • define kbd_7 .7
  • define kbd_8 .8
  • define kbd_9 .9
  • define kbd_A .10
  • define kbd_B .11
  • define kbd_C .12
  • define kbd_D .13
  • define kbd_S .14
  • define kbd_H .15
  • define kbd_none .16

kbd_read banksel TRISA bsf TRISA,
1 banksel TRISD clrf TRISD banksel
TRISE clrf TRISE banksel ANSEL clrf
ANSEL banksel 0 kbd_test 1, 4,
kbd_S kbd_test 1, 5, kbd_0 kbd_test 1, 6,
kbd_H kbd_test 1, 7, kbd_D kbd_test 2, 4,
kbd_7 kbd_test 2, 5, kbd_8 kbd_test 2, 6,
kbd_9 kbd_test 2, 7, kbd_C kbd_test 4, 4,
kbd_4 kbd_test 4, 5, kbd_5 kbd_test 4, 6,
kbd_6 kbd_test 4, 7, kbd_B kbd_test 8, 4,
kbd_1 kbd_test 8, 5, kbd_2 kbd_test 8, 6,
kbd_3 kbd_test 8, 7, kbd_A retlw
kbd_none kbd_inc_end
kbd_test macro D, E, K movlw D movwf
PORTD_SHADOW LCALL PORTD_FLUSH movlw
E movwf PORTE_SHADOW LCALL PORTE_FLUSH BTFS
C PORTA, 1 RETLW K endm
7
Switch bounce (denderen)
  • Als je een drukknop indrukt maakt hij niet 1 keer
    contact hij dendert een tijdje (maximaal 50
    ms)

8
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 en Vista hebben al een driver)
  • control panel ? system ? hardware ? device
    manager ? ports
  • Evt. driver van www.ftdichip.com 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 ?

9
PIC - USART
power van de 2e USB poort
DB038 manual 2.4
10
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

11
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)

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)

12
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

Archive uart.zip
13
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 '"'

14
De IR ontvanger
16F887 pins Direction Value
RA2 Digital input Low when an IR signal is received, otherwise high.
RE0 RE2 Outputs 0b110
  • RA2 must be a digital input
  • RE0..RE2 outputs, value 0b110

DB038 manual 2.8
15
De IR ontvanger
  • TFM5360 of TSOP1736
  • (alleen) gevoelig voor een 36 kHz signaal.
  • Dat signaal mag niet continu zijn (goed is bv.1
    kHz 500 us signaal, 500 us uit)

16
De IR ontvanger
  • (alleen) gevoelig voor een 36 kHz signaal.
  • Bij 10 afwijking, dus 33-40 kHz, 60 vd.
    Afstand.

17
De IR ontvanger
  • Aanbevolen puls gt 400uS, periode lt 0.4

18
De IR ontvanger
19
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

20
DB038 - motortjes
20
  • Voeding, bv 12V
  • Motor
  • aansluitingen
  • Driver chips

Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
21
H-brug (H-bridge)
21
Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
22
22
DB038 manual 2.19
Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
23
23
16F887 pins Direction Value
RC0 Output Motor 1 A
RC1 Output Motor 2 enable
RC2 Output Motor 1 enable
RC3 Output Motor 1 B
RC4 Output Motor 2 A
RC5 Output Motor 2 B
A B value Motor effect (if enable is high)
0 0 Brake
0 1 Forward
1 0 Backward
1 1 Brake
  • Wat moet je op RC0..RC5 zetten om het
    onderstaande te bereiken
  • Motor 1 (links) vooruit, motor 2 (rechts) vooruit
  • Links vooruit, rechts op de rem (bocht naar
    rechts)
  • Links achteruit, rechts vooruit (draai om de as
    naar links)

DB038 manual 2.19
Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
24
24
PIC programmeren in C
  • Gewoon in MPLAB
  • DB038 manual hoofdstuk 5
  • Gewoon dubbel-klikken op de .mcp file van een
    bestaand C project.
  • Let op de omvang van de integer types
  • Compiler handelt pages en banks af
  • De 8-level stack limit bestaat nog steeds!
  • PORTA, ADRESL, etc zijn al gedefinieerd

Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
25
25
integers
Types Size Remarks
Bit 1 bit Non-standard see manual
(signed or unsigned) char 8 bits 1 byte
(signed or unsigned) short int 16 bits 2 bytes
(signed or unsigned) int 16 bits 2 bytes
(signed or unsigned) short long int 24 bits 3 bytes non-standard
(signed or unsigned) long int 32 bits 4 bytes
Float 24 bits 3 bytes
Double 24 bits 3 bytes, or 32 bits 4 bytes see manual
Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
26
26
C libraries
Files Contain
db038.h db038.c Configuration fuses, busy waiting, I/O port shadowing, nibble-to-char.
db038-adc.h db038-adc.c Read the A/D converter.
db038-dallas.h db038-dallas.c Access to Dallas one-wire peripherals.
db038-i2c.h db038-i2c.c I2C library.
db038-keypad.h db038-keypad.c 4 x 4 keypad reading.
db038-lcd.h db038-lcd.c HD44780 character LCD initialization, clear, cursor position control, char print, string print, custom character definition.
db038-leds.h db038-leds.c Show values on the seven segment displays and the LEDs.
db038-string.h db038-string.c Character and string functions.
db038-uart.h db038-uart.c UART initialization, character send and receive, string send.
Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
27
27
LCD library
void lcd_init( unsigned char x, unsigned char y
) void lcd_char_print( char c ) // note
\v void lcd_string_print( const char p )  
Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
28
28
Simpel C voorbeeld
include "db038-leds.h" include
"db038-adc.h" void main(void) volatile
unsigned int ad_result for()
ad_result adc_potmeter()
display_decimal_show( ad_result, 0, 0, 10 )

Hogeschool Utrecht / Institute for Computer,
Communication and Media Technology
29
oefening 1 toetsenbord, UART (asm)
  • Schrijf met behulp van de de programmas - een
    programma dat het toetsenbord leest, en via de
    UART laat zien welke toets er is ingedrukt. Je
    programma moet ook reageren als er door de PC een
    character naar de PIC wordt verzonden. Bepaal
    zelf hoe.

30
oefening 2 LCD (C)
  • Schrijf in C een programma dat gebruik maakt
    van het LCD, en ten minste 1 andere peripheral
    (A/D, UART, toetsjes, IR, etc) op het bord.
Write a Comment
User Comments (0)
About PowerShow.com