Nefunguje AD převod - vyřešeno

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
rkozeluh
Příspěvky: 262
Registrován: 17 úno 2007, 00:00
Bydliště: Liberec

Nefunguje AD převod - vyřešeno

#1 Příspěvek od rkozeluh »

DD.

mám na A90s2313, 3.6864MHz převodník TLC 549

s tímto sw:
PrevodAD:

cbi PORT549,Pclk
sbi PORT549,Pcs
ldi R20, $1E ;cekani 25uS
pWGLOOP0: dec R20
brne pWGLOOP0
nop
nop

cbi PORT549,Pcs
LDI R20, 8
SMYC: sec
sbis PIN549, PSO
clc
sbi PORT549,Pclk ;CLK=1
ROL AdcOut ;posun směrem k nejvyššímu bitu
cbi PORT549,Pclk ;CLK=0
dec R20
brne Smyc
ret



Když na vstup AD přivedu 0-5V, tak to převádí:
0 - 2.5V - převod 0x80 - 0xff a pak dál 2.5V - 5.0V převod 0x80 - 0xff
tzn. zdá se, že to D7 stále čte jako log1

reference 5V

nemůžu přijít na to, kde je sw chyba :twisted: :oops:
Uživatelský avatar
rkozeluh
Příspěvky: 262
Registrován: 17 úno 2007, 00:00
Bydliště: Liberec

#2 Příspěvek od rkozeluh »

smyčka pro čtení dat z převodníku musí být následující:

.
.
.
.
SMYC: sbi PORT549,Pclk
sec
sbis PIN549, PSO
clc
.
.
.

prostě jsem nejdříve nahodil signál Clk a pak teprve četl stav pinu PSO

ani z DS to není zrovna jeasné, ale funguje to.
Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 00:00

#3 Příspěvek od AB1 »

Myslím, že hodnota by se měla šiftnout na začátku smyčky, před hodinami.



Kód: Vybrat vše

PrevodAD:
      cbi   port549, cs 
      ldi   counter, 8
      clr   adc_value
L1:     
      sec                 ; přečti DOUT
      sbic  pin549, dout
      clc
      rol   adc_value     ; šiftni doleva a pak zapiš DOUT do adc_value.0
     
      sbi   port549,clk   ; clock
      cbi   port549,clk

      dec   counter
      brne  L1
     
      sbi   port549, cs
      ;delay 1 ms
ret     
     

Viz např. tady (v Bascomu)
http://www.mcselec.com/index.php?option ... &Itemid=57
Uživatelský avatar
rkozeluh
Příspěvky: 262
Registrován: 17 úno 2007, 00:00
Bydliště: Liberec

#4 Příspěvek od rkozeluh »

Taky jsem si myslel, že to má fungovat podle DS a stejně je to i v tom Bascomu, ale nešlo to.

Tak jsem hledal na netu a našel jsem na webu Pavla Janíka kuchyňskou váhu, kde byl tlc549 a tam to bylo přesně podle toho, jak jsem to potom opravil, tj. nejdříve hodin.

Tak fakt nevím..., ale teď to jde
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“