240 likes | 353 Views
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
E N D
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
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
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
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
Een W * 1 ms delay int i = W; while( i > 0 ){ i--; delay_1ms(); } Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
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
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
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
Een paar instructies vertraging (1) loop: nop ; 17 NOPs ... nop decfsz teller, f goto loop Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
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
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
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
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
Het ‘read-modify-write probleem • Macro’s • Shadow PORT registers Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
read-modify-write : IO pin Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
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
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
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
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
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
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
Macro – listing (.lst) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
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
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