16
Assignment 3 Review

Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Assignment  3  Review  

Page 2: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Task  1:  Analog  Input    

•  Many  solu:ons:  –  Some  much  more/less  efficient  than  others  –  Good:  

•  Bit-­‐ShiEing  •  Unsigned  Chars  •  At-­‐most  1  divide  (can  be  done  with  no  divides  for  8-­‐state)  

–  Bad:  •  Floa:ng-­‐point  arithme:c  •  Unnecessary  16-­‐bit  arithme:c  

–  Ugly:  •  LOOPING!!!  

8/05/12   2  Assignment  3  Review  

Page 3: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Task  1:  Analog  Input  

•  Example  Algorithm:  –  PORTB  =  0xFF  >>  (7-­‐(ADR1>>5));  

•  Common  Gotchas:  –  Don’t  a_empt  to  use  ADRx  for  storage  (Read-­‐only)  –  ADC  configura:on  –  if  polling,  do  it  properly  –  100  µSec  powerup  delay  

8/05/12   Assignment  3  Review   3  

Page 4: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Task  1e:  Home-­‐Brew  Voltmeter  

•  Good:  –  Req’d  resolu:on  =  0.1v  →  Use  an  integer  variable  which  represents  100mV  per  count...  

–  Interrupt  driven  7-­‐seg  refresh  •  Bad:  –  Implicit  floa:ng  point  type  conversion  

•  Ugly  :  –  All  maths  done  in  floa:ng  point,  use  calcula:ons  for  refresh-­‐rate  on  7-­‐segs  

8/05/12   Assignment  3  Review   4  

Page 5: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Task  2:  Interrupt  driven  serial  

•  Good:  –  Interrupt  driven  TX  and  RX.  –  Interrupts  enabling  and  disabling  as  appropriate.  

•  Bad:  –  Polled  TX  (or  RX)  in  Main.  

•  Ugly:  –  Polling  INSIDE  the  ISR.  

8/05/12   Assignment  3  Review   5  

Page 6: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Task  2:  Interrupt  Driven  Serial  

•  Many  different  ways  to  solve  this  problem:  –  Fundamental  unit  is  the  Buffer  (Array).  

•  Linear  Buffer  /  Stack  •  Circular  Buffer  

•  Data  to  be  TX’d  gets  placed  in  buffer  •  ISR  does  the  following:  –  If Serial TX interrupt (TDRE == 1?):

•  Read char from Buffer++ •  If char != ‘end of buffer’ then write to SCDR •  Else, clear TIE in SCCR1

8/05/12   Assignment  3  Review   6  

Page 7: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Task  2:  Pointer  management...  

•  All  good  interrupt-­‐driven  serial  requires  a  SOLID  understanding  of  pointers.  –  Pointer-­‐to-­‐a-­‐pointer  =  Arrays  of  pointers  –  A  pointer  is  just  a  16-­‐bit  number  

•  Copying  large  strings  takes  :me,  passing  pointers  is  a  lot  faster.  

8/05/12   Assignment  3  Review   7  

Page 8: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Describing  the  Problem  

8/05/12   Assignment  3  Review   8  

Page 9: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Program  Design  and  Buffers  

8/05/12   Assignment  3  Review   9  

Page 10: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

•  A  buffer  for  read  data  to  be  transmi_ed:  inCharBuffer  •  Current  size  of  Buffer:    numCharsInBuffer  •  Maximum  Size  of  Buffer:  BUFFSIZE  •  Buffer  for  the  Message    “x  data  received  \r\n$”:    *  outMessage  •  Current  character  to  be  sent:    *  charToSend  

•  End  of  Frame:      END_TRANMIT=  ‘$’;  

 

8/05/12   Assignment  3  Review   10  

Page 11: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

ISR  •  For  each  interrupt  

–  IF    (Receive  Interrupt)  •  Store  another  Character  in  Buffer  •  (  IF  Buffer  is  full  Rewrite  Last  !  )  

–  IF    (Transmit  Interrupt)  •  IF  (END  OF  FRAME)  

–  IF    (The  Buffer  is  not  Empty)  »  Build  next  FRAME  

–  ELSE  »  Return  (  no  more  data  to  transmit)  

•  Transmit  current  character  in  FRAME  •  return  

8/05/12   Assignment  3  Review   11  

Page 12: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

Init  Serial  

8/05/12   Assignment  3  Review   12  

Page 13: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

8/05/12   Assignment  3  Review   13  

Page 14: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

ISR:  Due  to  Data  received  

8/05/12   Assignment  3  Review   14  

Page 15: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

ISR:  In  case  TR  buffer  empty  

8/05/12   Assignment  3  Review   15  

Page 16: Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course Material/lectures/PDF… · Assignment 3 Review.pptx Author: eduardo nebot Created Date: 5/8/2012

8/05/12   Assignment  3  Review   16