Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course...
Transcript of Assignment 3 Review - University of Sydneyweb.aeromech.usyd.edu.au/MTRX2700/Course...
![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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/10.jpg)
• 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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042807/5f82f699deb5587a3d4aaa55/html5/thumbnails/16.jpg)
8/05/12 Assignment 3 Review 16