 |

|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 12 21, 21:10. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » duomenų skaitymas su atmega16 per SPI
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 28, 15:09 |
|
|
|
|
Sveiki, štai tokia situacija:
Aš noriu su mikrovaldikliu valdyti DAC'a. Bendravimas vyksta 16 bitų žodžiais. Pirmi 8 bitai adresas su krypties (skaitymo ar rašymo) bitu ir sekantys 8 bitai duomenys siunciami arba priimami, priklausomai kokią operaciją pasirinkau.
Pradžiai reikėtų bent nuskaityti registrą. Atmega16 sukonfiguravau kaip masterį. Pirmus 8 bitus (adresą) nesunku, bet po išsiuntimo atmega nustoja generuoti kloką ir niekas nebevyksta, o turėčiau nuskaityti 8 bitus duomenų. Tai mano klausimas: kaip priimti duomenis kai mikrovaldiklis dirba master režimu ir pats užduoda kloką? Nes aš dar galvoju, kad DAC'as laukia kloko duomenis išsiūsti ir nesulaukia.
Ir dar tokia keistenybė: aš įrašau į SPI duomenų registrą žodį ir tada jis išsiunčiamas. Žiurėjau su osciolografu tai pastebėjau, kad tą žodį jis siunčia nuolat kas 512us (tam laike zodzio siuntimas uzima tik 17us) nors aš į ciklą nieko nedėjau. Programa prabėga kartą ir sustoja. Kodėl taip vyksta? |
|
|
|
|
|
 |
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 29, 13:09 |
|
|
|
|
| Kodel programa tavo neveikia pakomentuoti negaliu, bet tam kad nuskaitytum SPI duomenis tu turi issiusti bet kokius, tarkim 0xff ar pan. Matomai neskaitei manualo. Zodziu siusi 3 baitus: adresai, duomenys ir dummy read'as. Visa tam, kad butu sugeneruotas clock'as sleivui. |
|
_________________ -----
That's what she said. |
|
|
|
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 29, 14:54 |
|
|
|
|
Datasheeta atmegos beabejo skaiciau ir apie dummy baita nierko neradau arba nemokejau ieskoti na bet radau seip interneto platybese Dekui Jedas uz pagalba dabar tikrai aisku, kad reikia daryti fiktyvu siuntima.
Bet kodel tris baitus, cia parasei tik kaip pavyzdy ar butinai taip reikia? Nes as galvojau tik du. Adresas kuriam yra nuskaitymo bitas ir iskarto dummy nuskaitymui. Ar duomenis toki divaisai atiduoda tik sekanciu zodziu? |
|
|
|
|
|
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 29, 16:12 |
|
|
|
|
adresas negali buti dummy baitas, nes prietaisas kol jo neperskaite nezino ka atiduoti.
siulau tiesiog rasyti ir skaityti kokius 3-5 dummy baitus, ir paskui pasiziureti kuriame is ju yra reikiamas atsakymas. |
|
|
|
|
|
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 29, 20:00 |
|
|
|
|
| Digix rašo: |
adresas negali buti dummy baitas, nes prietaisas kol jo neperskaite nezino ka atiduoti.
|
Beabejo
| Digix rašo: |
| siulau tiesiog rasyti ir skaityti kokius 3-5 dummy baitus, ir paskui pasiziureti kuriame is ju yra reikiamas atsakymas. |
Taip ir padarysiu
O gal žinot apie antra klausimo daly?
| Citata: |
| aš įrašau į SPI duomenų registrą baitą ir tada jis išsiunčiamas. Žiurėjau su osciolografu tai pastebėjau, kad tą baitą jis siunčia nuolat kas ~500us (Paty baitą išsiunčia per 17us) nors aš į ciklą nieko nedėjau. Programa prabėga kartą ir sustoja. Kodėl taip vyksta? |
Gal po duomenu apsikeitimo būtina disabel'int SPI ? |
|
|
|
|
|
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 29, 20:08 |
|
|
|
|
manau nebutina, bet SPI isjugngimas nuresetins ta interfeisa, todel kai kada gali buti naudinga arba gali buti ir kenksminga.
pvz LCD man tokiu budua tsisake vekti per daznai resetinant. |
|
|
|
|
|
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 30, 08:05 |
|
|
|
|
| Jei programa labai nedidele papastink ta vieta kur "turetu" baigtis programa. Ar bent jau po issiuntimo uzdek while (1) {} jei C, jei ASM, neatsimenu, bet analogiska komanda,jumpinti i save. |
|
_________________ -----
That's what she said. |
|
|
|
 |
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 30, 10:49 |
|
|
|
|
Visas progranos kodas atrodo stai taip:
.INCLUDE "m16.inc"
;********* SPI nustatymas *******************
ldi r17,0b10110000
out DDRB,r17
ldi r17,0b01011101
out SPCR,r17
sbi PORTB,4
;******* DAC aktyvavimas ********************
cbi PORTB,4
ldi r19,250
kilpa:
dec r19
brne kilpa
;********* Adreso isiuntimas *****************
ldi r16,0b10010010
out SPDR,r16
laukti:
sbis SPSR,7
rjmp laukti
;************ Dummy baitas ********************
clr r17
out SPDR,r17
lauktiiii:
sbis SPSR,7
rjmp lauktiiii
;********** Pertrauka po 16 bitu zodzio *********
sbi PORTB,4
ldi r19,50
kilpaa:
dec r19
brne kilpaa
;***** DAC aktyvavimas po pertraukos ***********
cbi PORTB,4
ldi r19,20
kilpaaa:
dec r19
brne kilpaaa
;***** Du dummy baitai 16 bitu zodzui formuoti***
out SPDR,r17
lauktii:
sbis SPSR,7
rjmp lauktii
out SPDR,r17
lauktiii:
sbis SPSR,7
rjmp lauktiii
;******* DAC neaktyvuojamas *****************
sbi PORTB,4 |
|
|
|
|
|
 |
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 30, 10:53 |
|
|
|
|
Kai pabaigoj įterpiu amžiną ciklą:
amzinas:
rjmp amzinas
tai jau išsiunčia tik viena kartą. ka tai reiškia? Kad mikrovaldiklis pats visa laiką vyksdo programą iš naujo? |
|
|
|
|
|
 |
duomenų skaitymas su atmega16 per SPI |
Parašytas: 2007 11 30, 11:01 |
|
|
|
|
| Pereina per visa flasa o tada turbut soka i pradzia. Niekad nepalik tokiu neterminuotu programu. Netgi jei tau reikia pakartotinai vykdyti, vykdyk tai cikle ar pan. |
|
_________________ -----
That's what she said. |
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |