Komparátor 16F628A - assembler
Moderátori: psichac, Moderátori
- mat100
- Zaslúžilý člen
- Príspevky: 1360
- Dátum registrácie: 07 Feb 2010, 00:00
- Bydlisko: Plzen - jih
- Vek: 30
Komparátor 16F628A - assembler
Hoj
Prosím poraďte
Píši program , pro odpojovač zátěže a potřebuji použít dva komparátory . Bohužel se nikde nemohu dočíst , na jaké piny mají výstup . V datasheetu se píše něco o pinech RA4 a RA3 , ale RA3 může být neinvertující vstup . Jak to tedy je ? Prosím poraďte
S pozdravem mat100
Prosím poraďte
Píši program , pro odpojovač zátěže a potřebuji použít dva komparátory . Bohužel se nikde nemohu dočíst , na jaké piny mají výstup . V datasheetu se píše něco o pinech RA4 a RA3 , ale RA3 může být neinvertující vstup . Jak to tedy je ? Prosím poraďte
S pozdravem mat100
0
- mat100
- Zaslúžilý člen
- Príspevky: 1360
- Dátum registrácie: 07 Feb 2010, 00:00
- Bydlisko: Plzen - jih
- Vek: 30
Hm
Asi sem to stejně nepochopil , protože mi komparátor nefunguje !
Tady mam program , kterej má rozsvěce / zhasínat led podle toho , jestli je vyšší napětí na RA1 , nebo RA2
Prosím mohl by jste mi někdo najít chybu ?
Asi sem to stejně nepochopil , protože mi komparátor nefunguje !
Tady mam program , kterej má rozsvěce / zhasínat led podle toho , jestli je vyšší napětí na RA1 , nebo RA2
Prosím mohl by jste mi někdo najít chybu ?
LIST P=16F628A
INCLUDE<P16F628A.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF &
_INTRC_OSC_NOCLKOUT
#DEFINE LED1 PORTB,1
#DEFINE TL1 PORTA,4
CLRF PORTA ; smazat A
CLRF PORTB ; smazat B
MOVLW B'00000100' ; typ komparátoru
MOVWF CMCON
BSF STATUS,RP0
MOVLW B'00000111' ; 0,1,2 vstupy
MOVWF TRISA
MOVLW B'00000000' ; výstupy
MOVWF TRISB
BCF STATUS,RP0
START BTFSC TL1
CALL ZAP
CALL VYP
ZAP BSF LED1
GOTO START
RETURN
VYP BCF LED1
GOTO START
RETURN
END
- Prílohy
-
- 6666.txt
- (550 Bajtov) 61 stiahnutí
0
- mat100
- Zaslúžilý člen
- Príspevky: 1360
- Dátum registrácie: 07 Feb 2010, 00:00
- Bydlisko: Plzen - jih
- Vek: 30
Hoj
Zase vás prosím o radu !
Už jsem vyzkoušel snad vše , ale stále mi překladač vypisuje chybu :
Napsal jsem si program na trvalé odpojení baterie . Ve zkratce : Když se překlopí komparátor do vysoké úrovně , odpojí se zátěž spínaná BUZ11. Stav ( vypnuto ) se zároveň uloží do eeprom , kde vydrží i po odpojení baterie . Prostě už se to samo nezpustí ! Musí se zmáčknou tlačítko TL1
Přikládám zdroják :
Problém nastává v překladu , kdy mi programátor vypíše tuto chybu :
Error[108] C:\DOCUMENTS AND SETTINGS\MATěJ\PLOCHA\66665.ASM 84 : Illegal character (,)
Jedná se o toto místo programu :
Potřebuji , aby když se z eeprom vyčte stav , aby se tento stav přenesl na portB 1
Prosím poraďte
Zase vás prosím o radu !
Už jsem vyzkoušel snad vše , ale stále mi překladač vypisuje chybu :
Napsal jsem si program na trvalé odpojení baterie . Ve zkratce : Když se překlopí komparátor do vysoké úrovně , odpojí se zátěž spínaná BUZ11. Stav ( vypnuto ) se zároveň uloží do eeprom , kde vydrží i po odpojení baterie . Prostě už se to samo nezpustí ! Musí se zmáčknou tlačítko TL1
Přikládám zdroják :
Problém nastává v překladu , kdy mi programátor vypíše tuto chybu :
Error[108] C:\DOCUMENTS AND SETTINGS\MATěJ\PLOCHA\66665.ASM 84 : Illegal character (,)
Jedná se o toto místo programu :
Když v tomto místě přepíšu funkci MOVWF na jinou ( třeba BSF) , tak se program přeloží bez chyby.LIST P=16F628A
INCLUDE<P16F628A.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _INTRC_OSC_NOCLKOUT
#DEFINE BUZ11 PORTB,1
#DEFINE KOMP CMCON,7
#DEFINE TL1 PORTB,2
CISLO equ 20h ; data pro zapis do EEPROM
EADR equ 21h ; adresa pro EEPROM
CISLB equ 22h
CISLA equ 23h
CLRF PORTA ; smazat A
CLRF PORTB ; smazat B
MOVLW B'00000100' ; typ komparátoru
MOVWF CMCON
BSF STATUS,RP0
MOVLW B'00001111'
MOVWF TRISA
MOVLW B'00000100' ; výstupy
MOVWF TRISB
BCF STATUS,RP0
START BTFSC TL1
CALL RESET
CALL READ
KOM BTFSC KOMP
CALL ODPOJ
GOTO START
ODPOJ BCF BUZ11
MOVLW 0
MOVWF CISLO
CALL WRITE
RETURN
RESET CLRF CISLB
CLRF CISLA
ZNOVU BTFSC TL1
GOTO RESET
INCFSZ CISLB,1
GOTO ZNOVU
INCFSZ CISLA,1
GOTO ZNOVU
BSF BUZ11
MOVLW 1
MOVWF CISLO
CALL WRITE
GOTO KOM
RETURN
WRITE BTFSC EECON1,WR ; je zápis již dokončen
GOTO WRITE ; čekání na dokončení zápisu
MOVF EADR,0 ; příprava adresy ke čtení do W
BSF STATUS,RP0 ; volba banky 1
MOVWF EEADR ; nastavení adresy EEPROM
BCF STATUS,RP0 ; volba banky 0
MOVF CISLO,0 ; příprava dat k zápisu do W
BSF STATUS,RP0 ; volba banky 1
MOVWF EEDATA ; nastavení dat k zápisu do EEPROM
BSF EECON1,WREN ; povolení zápisu do EEPROM
BCF INTCON,GIE ; zákaz všech přerušení
MOVLW H'55' ; 1 odemykací kód
MOVWF EECON2 ; zápis 1. kódu
MOVLW H'AA' ; 2 odemykací kód
MOVWF EECON2 ; zápis 2 kódu
BSF EECON1,WR ; zapnutí požadavku k zápisu bajtu
BCF EECON1,WREN ; zákaz dalšího zápisu do EEPROM
BSF INTCON,GIE ; povolení přerušení
BCF STATUS,RP0
RETURN
READ MOVF EADR,0 ; příprava adresy ke čtení do W
BSF STATUS,RP0 ; volba banky 1
MOVWF EEADR ; nastavení adresy EEPROM
BSF EECON1,RD ; zapnutí požadavku ke čtení bajtu
MOVF EEDATA,0 ; načtení bajtu do registru W
BCF STATUS,RP0 ; volba banky 0
MOVWF BUZ11
RETURN
END
Potřebuji , aby když se z eeprom vyčte stav , aby se tento stav přenesl na portB 1
Prosím poraďte
- Prílohy
-
- 66665.asm
- (1.92 KiB) 62 stiahnutí
0
no neni tam len jeden byt teda 0(1), ale v eeprom je jeden bajt teda 8 čísel a tie načítavaš z eeprom do W a z W do BUZ11, ale to si definoval ako RB1, takže iba ako jedno číslo a nie ako 8 čísiel
kukol som si na rýchlo ten tvoj program a neni mi jasne mačo tam je vlastne ten BUZ11, raz do neho zapíšeš 0 raz 1 a potom raz chceš do neho vložiť 8 čísel.
proste ho vymaž, ten posledný riadok .....
kukol som si na rýchlo ten tvoj program a neni mi jasne mačo tam je vlastne ten BUZ11, raz do neho zapíšeš 0 raz 1 a potom raz chceš do neho vložiť 8 čísel.
proste ho vymaž, ten posledný riadok .....
0
- mat100
- Zaslúžilý člen
- Príspevky: 1360
- Dátum registrácie: 07 Feb 2010, 00:00
- Bydlisko: Plzen - jih
- Vek: 30
děkuji za uporoznění to exekutor ! V nové verzi už toto není !
to mato3000.
To uložení do eeprom je tam proto , aby při odpojení napájení si procesor pomotoval , zda byla ( nebyla ) baterie odpojena !
Už je mi to samotnému hloupé , ale zase si nevím rady !
Potřebuji použít integrovaný VOLTAGE REFERENCE
MODULE pro dva integrované OZ
Vůbec jsem z datasheetu nepochopil nastavení napětí . Mohl by jste mi někdo prosím ukázat , jak vypočítat hodnotu 0 - 3 bitu pro různá napětí ?
Předem děkuji
to mato3000.
To uložení do eeprom je tam proto , aby při odpojení napájení si procesor pomotoval , zda byla ( nebyla ) baterie odpojena !
Už je mi to samotnému hloupé , ale zase si nevím rady !
Potřebuji použít integrovaný VOLTAGE REFERENCE
MODULE pro dva integrované OZ
Vůbec jsem z datasheetu nepochopil nastavení napětí . Mohl by jste mi někdo prosím ukázat , jak vypočítat hodnotu 0 - 3 bitu pro různá napětí ?
Předem děkuji
0
- mat100
- Zaslúžilý člen
- Príspevky: 1360
- Dátum registrácie: 07 Feb 2010, 00:00
- Bydlisko: Plzen - jih
- Vek: 30
Hoj
Děkuji za radu
Ale já do eprom zapisuju tak jednou do tejdne ( při vybitej baterce , nebo při zmáčknutí tlačítka reset ) a čtu tak maximálně 2 x do minuty. Je tedy třeba ty čekací doby ?
Stačí , když jsem do hlavního programu doplnil část se zobrazování stavu baterie na 3 led ? Zdrží to dostatečne měření ?
Upravená verze je v příloze !
S pozdravem mat100
Děkuji za radu
Ale já do eprom zapisuju tak jednou do tejdne ( při vybitej baterce , nebo při zmáčknutí tlačítka reset ) a čtu tak maximálně 2 x do minuty. Je tedy třeba ty čekací doby ?
Stačí , když jsem do hlavního programu doplnil část se zobrazování stavu baterie na 3 led ? Zdrží to dostatečne měření ?
Upravená verze je v příloze !
A prosím poraď s tím nastavením reference .;----------------------------------------------------------------------
;Vlastní program
;----------------------------------------------------------------------
START BTFSC TL1 ; otestuj , zda stisk reset
CALL RESET ; pokud ano , tak vyresetuj ( 1 )
BTFSC KOMPAR ; pokud ne, otestuj komparátor
CALL ODPOJ ; pokud je ve stavu 1 , odpoj zátěž
CALL STAV ; zkontroluj stav baterie a zobraz na led
GOTO START ; jdi na začátek
;----------------------------------------------------------------------
;Podprogramy
;----------------------------------------------------------------------
STAV BCF LEDV ; zhasni všechny tři led
BCF LEDS
BCF LEDN
BTFSC KOMPAR1 ; otestuj komparátor 1/2 baterie
CALL LED ; pokud 1 jdi na led
BSF LEDV ; pokud 0 rozsviť LED plné baterie
STAV1 BTFSS BUZ11 ; otestuj zda není odpojená záťěž
BSF LEDN ; pokud je rozsviť led vybité baterie
RETURN
LED BSF LEDS ; rozsviť led 1/2 baterie
GOTO STAV1 ; jdi na stav1
RETURN
S pozdravem mat100
- Prílohy
-
- lipol.asm
- (3.49 KiB) 60 stiahnutí
0
return vyhoď ....
nechápem tvoju otázku o nadstavení referencie, viac to popíš
ešte k tej rýchlosti. ak sa ti nabije baterka, tak sa odpojí a program bude predsa bežať ďalej, a potom sa ti bude do eeprom stále zapisovať nejaké číslo. neviem či si si to meral ale ten celý cyklus trvá 40uSek pri 4MHz ... odíde ti ta eepromka
nechápem tvoju otázku o nadstavení referencie, viac to popíš
ešte k tej rýchlosti. ak sa ti nabije baterka, tak sa odpojí a program bude predsa bežať ďalej, a potom sa ti bude do eeprom stále zapisovať nejaké číslo. neviem či si si to meral ale ten celý cyklus trvá 40uSek pri 4MHz ... odíde ti ta eepromka
0
- mat100
- Zaslúžilý člen
- Príspevky: 1360
- Dátum registrácie: 07 Feb 2010, 00:00
- Bydlisko: Plzen - jih
- Vek: 30
To exekutor
nechapu ? Tu část , kterou si psal v programu vůbec nemám . Prosím označ mi , kde mám chybu . Vůbec netuším , protože mi program frčí.
to mato3000
prosím poraď jak je to s nastavením VOLTAGE REFERENCE
MODULE
16F628 má možnost nastavit vnitřní referenci . ( velikost napětí )
Jenže z datasheetu jsem nepochopil , jak se zapíše to napětí do 4 bitů.
Mohl by jsi se na to mrknout ?
Předem oboum děkuji
S pozdravem mat100
nechapu ? Tu část , kterou si psal v programu vůbec nemám . Prosím označ mi , kde mám chybu . Vůbec netuším , protože mi program frčí.
to mato3000
prosím poraď jak je to s nastavením VOLTAGE REFERENCE
MODULE
16F628 má možnost nastavit vnitřní referenci . ( velikost napětí )
Jenže z datasheetu jsem nepochopil , jak se zapíše to napětí do 4 bitů.
Mohl by jsi se na to mrknout ?
Předem oboum děkuji
S pozdravem mat100
0
.
.
.
LED BSF LEDS ; rozsviť led 1/2 baterie
GOTO STAV1 ; jdi na stav1
RETURN
za goto nejde return ...
kuknem sa ti na to ....
bit 5 VRR: VREF Range Selection bit
1 = Low range
0 = High range
bit 4 Unimplemented: Read as ‘0’
bit 3-0 VR<3:0>: VREF Value Selection bits 0 ≤ VR <3:0> ≤ 15
When VRR = 1: VREF = (VR<3:0>/ 24) * VDD
When VRR = 0: VREF = 1/4 * VDD + (VR<3:0>/ 32) * VDD
VR = 0-15 <3:0>
takže ak je VR napr 0010 = 2 DEC , Vdd 5V a VRR=0
Vref= (2/24)*5=0.41666 V
a spon ja som to tak pochopil
.
.
LED BSF LEDS ; rozsviť led 1/2 baterie
GOTO STAV1 ; jdi na stav1
RETURN
za goto nejde return ...
kuknem sa ti na to ....
bit 5 VRR: VREF Range Selection bit
1 = Low range
0 = High range
bit 4 Unimplemented: Read as ‘0’
bit 3-0 VR<3:0>: VREF Value Selection bits 0 ≤ VR <3:0> ≤ 15
When VRR = 1: VREF = (VR<3:0>/ 24) * VDD
When VRR = 0: VREF = 1/4 * VDD + (VR<3:0>/ 32) * VDD
VR = 0-15 <3:0>
takže ak je VR napr 0010 = 2 DEC , Vdd 5V a VRR=0
Vref= (2/24)*5=0.41666 V
a spon ja som to tak pochopil
0
Naposledy upravil/-a mato3000 v 31 Okt 2010, 18:28, upravené celkom 2 krát.