Anonymní profil Standa – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Standa – Programujte.comAnonymní profil Standa – Programujte.com

 

Příspěvky odeslané z IP adresy 88.100.62.–

Standa33
Mikrokontroléry › ATMega32 displej16x2
20. 2. 2013   #171719

 Pokud bys přešel z Bascomu na AVR Studio + WinAVR(jazyk C), tak bych měl odzkoušenou knihovnu pro LCD(HD44780) na vývojovém kitu EvB 4.3(také nemá vyveden  z LCD pin R/W).

Standa33
Mikrokontroléry › ATMega32 displej16x2
18. 2. 2013   #171658

Nedalo mi to a zkusil jsem to v Bascomu zkompilovat(použil jsem vzorový příklad z knihy: Mikrokontroléry ATMEL AVR programování v jazyce Bascom, příklad 6.2). Výsledek - na LCD se nic nezobrazí, tak asi bude chyba v knihovně pro Bascom. Funguje až příklad 6.3, kde je ovšem používán LCD pin R/W(při odstranění deklarace Const _lcd_rw = 1, kompilace skončí chybovým hlášením).

Standa33
Mikrokontroléry › ATMega32 displej16x2
18. 2. 2013   #171644

 Mám dotaz, zkoušel jsi nahrát do uProcesoru nějaký jednoduchý program?

 Např: blikání LED na PORTD.0 v intervalu 1s. Z foto nejde poznat hodnota krystalu(pokud je osazen, asi bude pod uProc.). V programu si můžeš nastavit hodnotu, ale musíš pak podle toho upravit pojistky(fuse) při programování - viz datasheet atmega32.

Jelikož z LCD modulu není vyveden pin R/W, musíš správné časování zajistit v programu. Nevím, jak je napsána knihovna pro LCD v Bascomu, některé typy LCD potřebují delší časování mezi příkazy.

Standa33
Mikrokontroléry › Připojení AD převodníku k AV…
29. 1. 2013   #170786

 Z datasheetu jsem odvodil následující postup komunikace:

Signál CS nastavíš do log.0, pak musíš počkat 8,5us(převod),nebo monitorovat stav na DOUT. Po dobu převodu je v log. 0. Poté postupně přečteš 2byte(MSB,LSB). Signál CS do log.1, před dalším převodem se musí počkat 0,5us.

Max. frekvence SCKL je 4MHz, takže musí být správně nastaven kmitočet pro SPI.

 Pro ochranu vstupu AIN bych volil hodnotu (P1 cca 10k) a ochranné diody(2 x 1N4148) na GND  a Vss.

Standa
Assembler › 48-bit binární číslo na BCD
22. 8. 2012   #161876

#1 remmidemmi

include"P16F877A.inc"
;***************************************************************
COUNT equ 20h
CISLA10 equ 21h
CISLA32 equ 22h
CISLA54 equ 23h
CISLA76 equ 24h
CISLA98 equ 25h
CISLABA equ 26h
CISLADC equ 27h
CISLAFE equ 28h

LOOP3 equ 2Ah

HEX_1 equ 30h
HEX_2 equ 31h
HEX_3 equ 32h
HEX_4 equ 33h
HEX_5 equ 34h
HEX_6 equ 35h
;***************************************************************
org 0000h
goto Start
;**************************************************************
; Podprogram prevede 48 bitove cislo z HEX na DEC
; HEX_6,HEX_5,HEX_4, HEX_3, HEX_2, HEX_1 -> CISLAFE,CISLADC,CISLABA,CISLA98, CISLA76, CISLA 54, CISLA32, CISLA10
; Priklad: FFFFFFFFFFh -> 281474976710655d

Start
movlw 0FFh
movwf HEX_1
movwf HEX_2
movwf HEX_3
movwf HEX_4
movwf HEX_5
movwf HEX_6

HEX6BCD
bcf STATUS,C ; vynuluj bit C pred rotaci
movlw d'48'
movwf COUNT
;       ------------------------
clrf CISLA10
clrf CISLA32
clrf CISLA54
clrf CISLA76
clrf CISLA98
clrf CISLABA
clrf CISLADC
clrf CISLAFE
;-------------------------------
LOOP48
rlf HEX_1,F 
rlf HEX_2,F
rlf HEX_3,F
rlf HEX_4,F 
rlf HEX_5,F
rlf HEX_6,F

rlf CISLA10,F
rlf CISLA32,F
rlf CISLA54,F
rlf CISLA76,F
rlf CISLA98,F
rlf CISLABA,F
rlf CISLADC,F
rlf CISLAFE,F

decfsz COUNT,F
goto DEKKOR  ; dekadicka korekce se provede s kazdym registrem

return
;-------------------------------
DEKKOR
movlw CISLA10
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA32
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA54
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA76
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLA98
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLABA
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLADC
movwf FSR
call BCDKOR  ; BCD korekce

movlw CISLAFE
movwf FSR
call BCDKOR  ; BCD korekce

goto LOOP48
;-------------------------------
BCDKOR
movlw 03h
addwf INDF,W
movwf LOOP3
btfsc LOOP3,3  ; test zda je vysledek > 7
movwf INDF
;       ------------------------
movlw 30h
addwf INDF,W
movwf LOOP3
btfsc LOOP3,7  ; test zda je vysledek > 7
movwf INDF
;       ------------------------
return

Opak
goto Opak
;***************************************************************
end

Zkuste tohle,doba převodu při 20MHz je cca 1,5ms. Program jsem jen upravil pro 48bit, původní je ze stránky http://doveda.byl.cz/…/prevody.htm#…

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý