Witam! Pod³±czy³em TLV5618A poprzez SPI z ATMega8. Wszystko zrobi³em tak jak w notach obu uk³adów. No i nie dzia³a poprawnie. ¬ród³o programu: $regfile = "m8def.dat" $crystal = 1000000 $baud = 4800 Config Spi = Hard , Master = Yes , Noss = 0 Spcr.5 = 0 Spcr.3 = 0 Spcr.2 = 1 Dim Wart As Word , A(2) As Byte Dim Nap As Single Spiinit Do Input "Podaj wartosc napiecia." ; Chr(9) ; "U=" , Nap Wart = Nap / 0.000625 '2,56V/2^12=0,000625V A(1) = High(wart) A(2) = Low(wart) A(1).7 = 1 'Rejestr kana³u A przetwornika Print "Wart=" ; Wart ; Chr(9) ; "A(1)=" ; A(1) ; Chr(9) ; "A(2)=" ; A(2) Spiout A(1) , 2 Loop End Problem polega na tym, ¿e po wys³aniu warto¶ci do przetwornika przetwornik nie reaguje lub na wyj¶ciu pojawia siê napiêcie losowe z przedzia³u od 0 do VCC. Vref=2,56V. Vcc=4,5V. Przetwornik jest sprawny (sprawdza³em na 2 egzemplarzach).
Problem: ATMega8, TLV5618A, SPI i Bascom
Sep 27, 2004
2 Replies
formatting link
Niestety, powszechnie wiadomo ze w Bascomie jest spieprzona obsluga SPI. JA mialem problem z RTC na SPI DS1305. U mnie pomogly wlasne procedury odczytu i zapisu jak nizej:
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 1 , Clockrate = 4 Spiinit
Rtc_cs Alias Portb.5
'Write SPI Sub Write_ds1305(_adres , _data) Rtc_cs = 1 Spdr = _adres Gosub _spi_wait Spdr = _data Gosub _spi_wait Rtc_cs = 0 End Sub
'Read SPI Function Read_ds1305(_adres) Rtc_cs = 1 Spdr = _adres Gosub _spi_wait Spdr = &H00 Gosub _spi_wait Read_ds1305 = Spdr Rtc_cs = 0 End Function
_spi_wait: sbis SPSR,SPIF rjmp _spi_Wait Return
Dziêki! Pomog³o, ale teraz mam kolejny problem. Reaguje tylko na co drug± porcjê danych. Mo¿e kto¶ siê domy¶la dlaczego? Konrad
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required