 |

|
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 10 17, 05:04. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Atmega128 - mistika.
|
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
|
|
|
 |
 |
 |
Atmega128 - mistika. |
Parašytas: 2010 04 27, 20:34 |
|
|
|
Tai va problema tame, kad man reikia išjungti UART0 priėmimą, kažkaip. Tiksliau išjungti, poto vėl įjungti.
Yra keli būdai:
1) cli(); ---> sei();
2) mux_disable(IRRX); ---> mux_enable(IRRX);
3) UCSR0B &= ~_BV(RXEN0) ---> UCSR0B |= _BV(RXEN0);
4) UCSR0B &= ~_BV(RXCIE0) ---> UCSR0B |= _BV(RXCIE0);
5) bool ignore = true ---> ignore = false;
Dabar taip, atrodo viskas gražu viskas turi veikt, bet neveikia!?
Kodas: |
ISR(TIMER0_OVF_vect)
{
//mux_disable(IRRX);
//while(PORTA & _BV(IRRX)) PORTA &=~ _BV(IRRX);
ignore = true;
int i = 8;
while(i--)
{
mux_scan(i);
uart_sendc(HANDSHAKE);
uart_sendc(HANDSHAKE);
uart_sendc(HANDSHAKE);
}
ignore = false;
dir = ++dir % 8;
mux_scan(dir);
//mux_enable(IRRX);
} |
Čia tas interruptas kuris išsiunčia signalą, o priėmimą reik atjungt todėl, kad nesuveiktų RX interruptas nuo savo pačio išsiųsto signalo.
Kodas: |
ISR(USART0_RX_vect)
{
unsigned char c = UDR0;
if(UCSR0A & 0b00011100) return;
if(ignore) return;
if(HANDSHAKE == c)
{
led(dir);
ind(ON);
delay_us(30);
rsig[dir]++;
ind(OFF);
return;
}
} |
Šitas interruptas suveikia, kai gauna signalą. Atkreipkit dėmesį į ignore. To kintamojo reikšmė prieš išsiunčiant HANDSHAKE pakeičiama į TRUE. Nepaisant to 'return' NESUVEIKIA.
Gal kas turit minčių kodėl?
Ir išvis nelabai suprantu kodėl net cli(); ---> sei(); nesuveikia, cli juk turi išjungt betkokį interruptą ar ne?
Labai reikėtų jūsų pagalbos ir kuo greičiau tuo geriau nes jau užp...so šita problema.
Ačiū  |
|
|
|
|
 |
 |
Atmega128 - mistika. |
Parašytas: 2010 04 27, 20:46 |
|
|
|
tokiu atveju daryciau tyrima: leisciau pertraukima kas kazkiek laiko ir vel ji drausciau ir stebeciau skopu taimerio veikima... Be to nenaudociau macrosu, o daryciau tiesioginius kreipinius i registrus ir bitus... Negali buti kad nesidraustu pertraukimai. tai gali buti tik del neteisingu nustatymu... Kodel jie neteisingi-kitas klausimas... Ka sako simuliatorius? |
|
_________________ Nieko taip lengvai nedaliname, kaip patarimus... |
|
|
|
 |
Atmega128 - mistika. |
Parašytas: 2010 04 27, 21:25 |
|
|
|
Simuliatorius sako, kad SREG - Globalaus interrupto flagas nusistato į nulį tuo pat metu kai iškviečiamas taimerio interruptas. Tai papildomai atjunginėt nieko nereik... Hmm reiškia UART interruptas, negali suveikti kol nepasibaigė taimerio interruptas. Klausimas: kaip jis tuomet suveikia??
Apskritai gal UART turi kažkokį išsiuntimo delay? ir duomenis išsiunčia tik po kažkiek taktų? arba tik pasibiagus visiems interruptams? |
|
|
|
|
 |
Atmega128 - mistika. |
Parašytas: 2010 04 27, 21:40 |
|
|
|
Ahhh... gerai išsprendžiau tą problemą pakankamai pigiai
Kodas: |
ISR(USART0_TX_vect)
{
mux_enable(IRRX);
} |
O išsiuntimo(taimerio) interrupte atjungiu mux'ą. mux_disable(IRRX);
Ačiū, už geras įdėjas. Bleee... o aš tiek knisausi... vos ne savaitę  |
|
|
|
|
|
 |
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 |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
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 |
|

|
 |