1 / 24

Les 3 - onderwerpen

Les 3 - onderwerpen. Instruction timing Shadow port registers, Macro’s Opgaves: delay, IO_SET/IO_CLEAR, Kitt. Opmerkingen. Fouten in het DB038 document: graag doorgeven! Laptop gebruikers: USB power management uitzetten

livana
Download Presentation

Les 3 - onderwerpen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Les 3 - onderwerpen • Instruction timing • Shadow port registers, Macro’s Opgaves: • delay, • IO_SET/IO_CLEAR, • Kitt Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  2. Opmerkingen • Fouten in het DB038 document: graag doorgeven! • Laptop gebruikers: USB power management uitzetten • VMWare: soms komt de USB connectie in de root-PC terecht in plaats van in de gesimuleerde PC  • Bewaar je bordje tussen dat zwarte schuim, maar zet ‘m er niet op als je ‘m gebruikt. Ook niet op een geleidend oppervlak! Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  3. Instruction timing • Shadow port registers, Macro’s • Register file banks • Gebruik van het DB038 bord • Aftekenen vorige opgaves • Twee nieuwe opgaves Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  4. Programmeer opgave 1: Een delay subroutine Maak een subroutine die W ms wacht (nauwkeurigheid 1% of beter) Test dmv de stopwatch/instructie counter in de simulator. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  5. Een W * 1 ms delay int i = W; while( i > 0 ){ i--; delay_1ms(); } Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  6. Instruction timing • 20 MHz / 4  5 MIPS • Dus 0.2 us per instructie • Behalve als de PC geschreven wordt (GOTO, CALL, RETURN), dan 0.4 us Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  7. Een Delay_1ms • 5 MIPS, dus 1 ms is 5000 instructies* • In 8 bit kan je tot 256 tellen, neem 250 • 1 keer door de lus moet dan 5000 / 250 = 20 instructies zijn * GOTO etc. tellen voor 2 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  8. Delay_1ms : eerste poging cblock teller endc movlw D’250’ movwf teller loop: decfsz teller, f goto loop Hoeveel vertraging moeten we nog toevoegen, en waar precies? Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  9. Een paar instructies vertraging (1) loop: nop ; 17 NOPs ... nop decfsz teller, f goto loop Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  10. Een paar instructies vertraging (2) nop4: macro nop nop nop nop enmd loop: nop nop4 nop4 nop4 nop4 decfsz teller, f goto loop Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  11. Een paar instructies vertraging (3) cblock teller endc movlw D’250’ movwf teller loop: nop call delay_4 call delay_4 call delay_4 call delay_4 decfsz teller, f goto loop delay_4: return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  12. Een paar instructies vertraging (4) cblock teller endc movlw D’250’ movwf teller loop: nop call delay_16 decfsz teller, f goto loop delay_16: call delay_4 delay_12: call delay_4 delay_8: call delay_4 delay_4: return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  13. Een paar instructies vertraging (5) delay_2: macro goto $+1 endm delay_4: macro delay_2 delay_2 endm delay_8: macro delay_4 delay_4 endm delay_16: macro delay_8 delay_8 endm 13 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  14. Het ‘read-modify-write probleem • Macro’s • Shadow PORT registers Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  15. read-modify-write : IO pin Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  16. read-modify-write (fout) clrf PORTA bsf PORTA, 0 bsf PORTA, 1 bsf PORTA, 2 bsf PORTA, 3 bsf PORTA, 4 bsf PORTA, 5 bsf PORTA, 6 bsf PORTA, 7 Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  17. read-modify-write (goed) clrf PORTA_SHADOW call PORTA_FLUSH bsf PORTA_SHADOW, 0 call PORTA_FLUSH bsf PORTA_SHADOW, 1 call PORTA_FLUSH bsf PORTA_SHADOW, 2 call PORTA_FLUSH ... PORTA_FLUSH movfw PORTA_SHADOW movwf PORTA return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  18. wat is een macro • naam voor een aantal regels text • wordt letterlijk ingevoegd RRFW macro movwf temp rrf temp, w endm Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  19. wat is een macro • Kan (textuele) parameters parameters hebben double macro REGISTER bcf STATUS, C rlf REGISTER, f endm Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  20. macro voorbeeld en gebruik FLUSH_ MACRO MACRO Shadow, Port CBLOCK Shadow ENDC MOVFW Shadow MOVWF Port RETURN ENDM PORTA_FLUSH FLUSH_MACRO PORTA_SHADOW, PORTA PORTB_FLUSH FLUSH_MACRO PORTB_SHADOW, PORTB PORTC_FLUSH FLUSH_MACRO PORTC_SHADOW, PORTC PORTD_FLUSH FLUSH_MACRO PORTD_SHADOW, PORTD PORTE_FLUSH FLUSH_MACRO PORTE_SHADOW, PORTE Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  21. Macro Subroutine • een macro is een reeks regels die ingevoegd wordt • een macro kan assembly-time argumenten hebben • macro heeft geen call/return (gebruikt de stack niet) • subroutine aanroep is altijd 1 statement; macro ‘aanroep’ voegt de complete macro in (je programma wordt al snel erg groot) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  22. Macro – listing (.lst) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  23. Programmeer opgave 2: I/O pin set en clear macro’s Schrijf de macro’s IO_SET en IO_CLEAR met twee parameters X en Y. X moet een poort register zijn (PORTA, PORTB, etc), B een bit (0..7). De macro moet het betreffende bit in het shadow register zetten, en dan een subroutine ‘FLUSH_ALL’ aanroepen. Schrijf ook de FLUSH_ALL subroutine. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

  24. Programmeer opgave 3: KITT / Knight Rider Maak een ‘Kitt’ display op de LEDs. Iedere stap in de sequence moet 250 ms zijn. Gebruik de IO_SET en IO_CLEAR macro’s voor het aan en uit zetten van de LEDs. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology

More Related