;************************************************************************** ;* * ;* Programovy modul SPI_PWM slouzi pro obsluhu obvodu PWM 68HC68W1 * ;* ---------------------------------------------------------------- * ;* * ;* * ;* * ;* Obsahuje : * ;* SPI_INIT: - inicializace obvodu 68HC68W1 * ;* SPI_OUT: - zapis zmenay sirky pulsu * ;* * ;* Nutne externi nastaveni: * ;* * ;* Neni nutne zadne externi nastaveni * ;* * ;* Definice externich parametru: * ;* * ;* * ;* definice pripojeni pinu obvodu 68HC68W1 k mikroprocesoru * ;* ........................................................ * CE BIT P1.5 ;vyber obvodu * DAT BIT P1.6 ;datovy vodic SPI rozhrani * CLK BIT P1.7 ;vodic hodinovych impulsu SPI rozhrani * ;* * ;* * ;* Nastaveni pocatecnich podminek: * ;* * ;* Do uvodni casti programu je nutne zaradit * CLR CLK ;CLK pracuji v obracene polarite * ;* * ;*------------------------------------------------------------------------* ;* Brno : duben 2001 sestavil: Doc.Ing.Rudolf Jalovecky,CSC * ;* e-mail : vyvoj@jalsoft.iol.cz * ;************************************************************************** ; ; lze pouzit jako INCLUDE(SPI_PWM.ASM) - po upresneni uvodnich definic ; a pocatecnich podminek ;################################################################# ; P W M - obvod pulsne sirkove modulace - Inicializace ;################################################################# ; ; Popis : inicializuje cely obvod PWM, tj zapise 3x 8 bitu na SPI ; rozhrani, tim se nastavi PWM na impuls 1:1 = N/2 ; ; vstup : v ACC je N - opakovaci perioda sirky impulsu ; ; pro zmenu POWER_UP a CLOCK vybrat prikaz SETB nebo CLR ; ; vystup : - ; vola : - ; zmeni : Acc,B ; vnoreni: 0 ; SPI_INIT: CLR CE ;enable obvodu CLR DAT ;datovy vodic "L" MOV B,#6 ;6 x CLK 0 bitu pro data SPI_IN1: ; ---------------------------;zapis "Control Word" CLR CLK ;hodiny "L" NOP ;cekame SETB CLK ;hodiny "H" DJNZ B,SPI_IN1 ;opakovane 6x CLR DAT ;zapis "POWER UP" - "L" ; SETB DAT ;zapis "POWER UP" - "H" CLR CLK ;hodiny "L" NOP ;cekame SETB CLK ;hodiny "H" - 7 impuls NOP ;cekame CLR CLK ;hodiny "L" CLR DAT ;CLOCK nedelit "L" ; SETB DAT ;CLOCK delit "H" NOP ;cekame SETB CLK ;hodiny "H" - 8 impuls ; ---------------------------;zapis "Frequency Word" PUSH Acc ;ulozime pro PWM MOV B,#8 ;8 impulsu SPI_IN2: CLR CLK ;hodiny "L" RLC A ;nejvyssi z Acc do CY MOV DAT,C ;vyslani na pin dat SETB CLK ;zapis bitu DJNZ B,SPI_IN2 ;opakujeme 8x POP Acc ;vyzvedneme pro PWM ANL A,#11111110B ;dolni bit pryc RR A ;delime 2 pro puls 1:1 ; --------------------------;zapis "PWM Word" MOV B,#8 SPI_IN3: CLR CLK ;hodiny "L" RLC A ;nejvyssi do CY MOV DAT,C ;vyslani SETB CLK ;hodiny "H" =zapis bitu DJNZ B,SPI_IN3 ;opakujem 8x CLR CLK ;hodiny "L" SETB CE ;disable obvodu RET ;################################################################# ; P W M - obvod pulsne sirkove modulace - Zmena sirky ;################################################################# ; ; Popis : meni sirku impulsu PWM podle dat v Acc ; ; vstup : v ACC je pozadovana sirka impulsu 01H - 0FEH ; ; vystup : - ; vola : - ; zmeni : Acc,B ; vnoreni: 0 ; SPI_OUT: MOV B,#8 ;8 pulsu SETB CLK ;hodiny "H" CLR CE ;enable obvodu OPAK: CLR CLK ;hodiny "L" RLC A ;nejvyssi bit Acc do CY MOV DAT,C ;vyslani na pin dat SETB CLK ;hodiny "H" DJNZ B,OPAK ;opakujeme 8x NOP ;male cekani SETB CE ;disable obvodu CLR CLK ;hodiny "L" RET ;---------------- END modulu SPI_PWM.ASM -----------------