 |

|
|
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, 17:08. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Reikia programos C kalba
|
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
|
|
|
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 11:55 |
|
|
|
|
| JonasK rašo: |
Prašau: elektronika.lt, schemų archyvas, mikrovaldikliai.
O gal tu manai, kad ten yra konkretus pavyzdys kaip valdyti tavo automobilį? |
archyvus jau perziurejau nieko ten net panasau nera man reikia kad butu per uarta, nes as per kompa noriu valdyti per COM |
|
|
|
|
|
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 11:57 |
|
|
|
|
| oni rašo: |
Niekaip iš posto nesuprantu, ar komandos turi ateiti iš PC per UARTĄ ar tu nori jungti klaviatūrą tiesiogiai prie AVR. Jei tiesiogiai, tai kad ir (google pirmam lape):
http://www.scienceprog.com/interfacing-pc-keyboard-to-avr-microcontroller/
Jei valdymas iš kompiuterio, tai priklausomai nuo programavimo kalbos pasirenki RS232 komponentą ir pirmyn.. Pvz. Delphiui yra ComPort3.0 ir kt. |
is kompiuterio valdymas per COM jeigu jusu neapsunkintu gal galit pavyzdeliu kodu C kalba man atsiusti ar cia imesti, buciau labai dekingas, nes man niekaip neiseina padaryt  |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 13:13 |
|
|
|
|
| Mindaugasu rašo: |
Pirmiausia issiaiskink ko reikia ir pasistenk tai aiskiai isdestyti zinuteje. Nes tikrai ne visi uzsiimineja telepatija
Antra vargiai ar rasi kas tures gatava produkta tavo reikmem. galiam tik Uzvesti ant teisingo kelio parodant panasius pavyzdzius. O jeigu reikia gatavo daikto, tai daugumoj atveju galioja komerciniai pasiulymai.
Ir trecia jeigu sakai kad kazkurioj vietoj kazkas neveikia, tai efektyviausia butu ideti tos vietos koda, kad matytume kur darai klaida.
Kaip sakant tu dirbi kazka toj srity ir esi daugiausiai isigilines tame projekte o kiti "by default" tikrai nepagaus visko. Todel svarbu pateikti informacija taip kad kiti suprastu apie ka kalba eina ir kaip tai daroma. Taikau cia ne tik tau bet visiems tiems kurie raso kazka panasaus: "Uzprogramavau ta ir ta bet man neveikia...". Ar ne paprasciau parasyti kodo gabaliuka kurioj vietoj tikiesi kad kazkas darysis, arba kokias klaidas meta. Ir svarbiausia netingekit patys pasieiskoti informacijos o neuzkraukit to kitiems zmonems. Blyn kai pavariau
Manau taip bus lengviau susisneketi. |
ne tai man ir reikia kad kas koki pavyzdi duotu.
man uzduota padaryti masinele kad galeciau valdyti per kompa su hyper terminalu, susilitavau programatoriu ir kita schema valdikli, ir programatorius ir valdiklis ant COMjungties, pas mane ATmega8, MAX232 ir valdiklyje L293D, programatorius veikia, nes paprastas programeles kur su diodu uzdegimu ikeliu i atmega ir veikia, taip ir masinelei programa parasiau kad atliktu tam tikru veiksmu seka tai yra pavaziuotu poto pasuktu poto vel pavaziuotu ir t.t. cia nesunku, bet nesigauna parasyt programos kad paspaudus ant klaviaturos mygtuka i prieki ir masinele vaziuotu i prieki taip ir kiti mygtukai i sonus ir t.t.
turiu viena panasaus projekto koda kur irgi ant COM jungties bet nesuprantu kodel neveikia |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 13:17 |
|
|
|
|
#include <iom8.h>
#include <avr_macros.h>
#include <inavr.h>
#include "intrinsics.h"
//globalus kintamieji
unsigned int k=0;
unsigned int n=0;
//deklaruojame funkcijas
void USART_Init( unsigned int );
void main()
{SREG=0; //isjungime globalius pertraukimus
USART_Init(12); //nustatome bodo dydi - 19200 b/s
DDRB=0xff; //nustatome PORTB kaip isejima
SREG=128; //ijungiame globalius pertraukimus
while(1) // Amzinas ciklas
{//tikrinama ar yra nuspaustas koks mygtukas ir isvedamas atitinkamas pranesimas
if (((PINC&1)==0)&&(k==0)) {
UDR='K';
__delay_cycles(5000);
UDR='l';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='u';
__delay_cycles(5000);
UDR='t';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='s';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='j';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='g';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='l';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='\n';
k=1;
}
if (((PINC&2)==0)&&(k==0)) {
UDR='K';
__delay_cycles(5000);
UDR='l';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='u';
__delay_cycles(5000);
UDR='t';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='s';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='d';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='s';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='j';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='g';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='l';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='\n';
k=1;
}
if (((PINC&4)==0)&&(k==0)) {
UDR='K';
__delay_cycles(5000);
UDR='l';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='u';
__delay_cycles(5000);
UDR='t';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='s';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='j';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='\n';
k=1;
}
if (((PINC& ==0)&&(k==0)) {
UDR='K';
__delay_cycles(5000);
UDR='l';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='u';
__delay_cycles(5000);
UDR='t';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='s';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='d';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='s';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='j';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='k';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='\n';
k=1;
}
}
}
//funkcija skirta inicializuoti USART'a
void USART_Init( unsigned int baud )
{
/* Nustatome bodo dydi */
UBRRH = (unsigned char)(baud>> ;
UBRRL = (unsigned char)baud;
/* Ijungiam Receiver'i ir Transmitter'i */
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<TXCIE)|(1<<RXCIE);
/* Nustatome frame formata: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
#pragma vector = USART_RXC_vect //Priemimas
__interrupt void UDR_RX()
{
int b,i,a=0;
k=0;
b=UDR-0x30; // Eliminuojam ASCII
//tikriname koks klavisas nuspaustas ir pagal tai i tam tikrus portus paduodame loginius 1 ar 0
switch(b) {
case 8:
a=43;
break;
case 2:
a=23;
break;
case 7:
a=9;
break;
case 9:
a=34;
break;
case 1:
a=5;
break;
case 3:
a=18;
break;
case 4:
n=100;
UDR='P';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='m';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='v';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='\n';
break;
case 5:
n=50;
UDR='A';
__delay_cycles(5000);
UDR='n';
__delay_cycles(5000);
UDR='t';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='v';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='\n';
break;
case 6:
n=0;
UDR='T';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='e';
__delay_cycles(5000);
UDR='c';
__delay_cycles(5000);
UDR='i';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR=' ';
__delay_cycles(5000);
UDR='p';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='v';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='r';
__delay_cycles(5000);
UDR='a';
__delay_cycles(5000);
UDR='\n';
break;
}
PORTB=a;
__delay_cycles(500000);
PORTB=0;
for (i=0; i<n; i++){
__delay_cycles(1000);
}
}
Cia kodas kuri turiu, klaidu nemeta, Programuoju IAR, C kalba, bandziau ir savo portus irasyt bet vistiek neveikia, PAS MANE isejimas per D porta, O MAX'as prie atmegos prijungtas ant B portu ten MISO MOSI
LABAI PRASAU PAGALBOS ACIU |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 13:48 |
|
|
|
|
argi nera printf funkcijos?
gal tu pitma karta c kalba matai, ir jau toki sudetinga projekta darai?
pradek nuo paprastu dalyku.
p.s. komentarai turetu tureti daugiau prasmes, |
|
|
|
|
|
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 14:23 |
|
|
|
|
| Digix rašo: |
argi nera printf funkcijos?
gal tu pitma karta c kalba matai, ir jau toki sudetinga projekta darai?
pradek nuo paprastu dalyku.
p.s. komentarai turetu tureti daugiau prasmes, |
ka jus skaitot paprastesniu projektu, diodus uzdegt?
C kalboj as naujokas, cia panasus projektas kaip ir man padaryti reikia, o ar jiem veike sitas kodas nzn, nes su tai zmonem nebendravau ir nzn, o kurioj vietoj ta funkcija turetu buti gal galetum sita koda pakuoreguoti? ACIU  |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 15:38 |
|
|
|
|
sita programa kiek suprantu nieko bendro su tuo ko tu nori neturi.
ir nera ka koreguoti. (tuo labaiu kad labai kvailai padarytas)
butent pradek nuo diodu uzdegimo.
paskui uart inicializacijos, ir suzinok kas yra printf funkcija.
tavo prgrama bus MAZDAUG tokia
bet jei cia nieko nesupranti tai is viso to naudos bus mazai bes labai daug ko dar truksta.
while(1){
a=getchar();
if (a=='x'){PORTA=0b0001;}
if (a=='y'){PORTA=0b0010;}
if (a=='z'){PORTA=0b0100;}
if (a=='t'){PORTA=0b0100;}
}
Tau reikia pirma ismokti C kaba, jei nori tik rezultato niekor nesimokius tai teks pasieskoti kazko kas padarytu tavo darba uz pinigus |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 16:15 |
|
|
|
|
| Digix rašo: |
sita programa kiek suprantu nieko bendro su tuo ko tu nori neturi.
ir nera ka koreguoti. (tuo labaiu kad labai kvailai padarytas)
butent pradek nuo diodu uzdegimo.
paskui uart inicializacijos, ir suzinok kas yra printf funkcija.
tavo prgrama bus MAZDAUG tokia
bet jei cia nieko nesupranti tai is viso to naudos bus mazai bes labai daug ko dar truksta.
while(1){
a=getchar();
if (a=='x'){PORTA=0b0001;}
if (a=='y'){PORTA=0b0010;}
if (a=='z'){PORTA=0b0100;}
if (a=='t'){PORTA=0b0100;}
}
Tau reikia pirma ismokti C kaba, jei nori tik rezultato niekor nesimokius tai teks pasieskoti kazko kas padarytu tavo darba uz pinigus |
tai diodus as uzdegineju kaip noriu nieko ten su jais sunkaus nera, ACIU Kad nukreipei tinkama linkme jau kazka pradedu suprast |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 16:23 |
|
|
|
|
Paemiau sita programini koda is elektronika.lt pirmi zingsniai UART
#include <iom8.h>
void main()
{
UBRR=25; // Nustatome 9600 bps perdavimo greitá 4 MHz rezonatoriui
//Ájungiame perdavimo pertraukt á 1-> TXCIE
//Ájungiame perdavimo pertrauktá per UART kai UDR tuðèias
//Iðjungiame priëmimà 0-> RXEN
//Ájungiame perdavimà 1-> TXEN
UCR=(1<<TXCIE)|(1<<UDRIE)|(0<<RXEN)|(1<<TXEN);
SREG =128;// Ájungiame globalias pertrauktis
while(1) // Aþminas ciklas
{}
}
#pragma vector=UART_UDRE_vect //Pertraukties procedûra kai UDR=0
__interrupt void UDR_tuscias()
{
UDR=0x35; // Siunèiam ASCII simbolá, kuris atitinka skaièiø 5
}
IR MAN META TOKIAS KLAIDAS, kodel gal galit paaiskint jau ir visa atmega8 summary istudijavau ir net kai is ten imu kodus meta klaidas, cia as kiek suprantu reikia parasyti kode dar kazka ar cia IAR nustatymus reikia ziuret?
Error[Pe020]: identifier "UBRR" is undefined
Error[Pe020]: identifier "UCR" is undefined
Error[Pe020]: identifier "UART_UDRE_vect" is undefined
Error[Pe661]: expected an integer constant
Warning[Ta006]: Interrupt function has no assigned vector
Total number of errors: 4
Total number of warnings: 1 |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 11 17, 19:03 |
|
|
|
|
Na man sitas veike, tik as per Codevision
tik siunte nesamones ir prireike 2 menesiu
kad suprasciau kodel, tik negaliu isbandyti
nes kazkos virusas siaucioja po kompa  |
|
|
|
|
|
 |
Reikia programos C kalba |
Parašytas: 2006 11 29, 09:38 |
|
|
|
|
| Ogiss85 rašo: |
Error[Pe020]: identifier "UBRR" is undefined
Error[Pe020]: identifier "UCR" is undefined
Error[Pe020]: identifier "UART_UDRE_vect" is undefined
Error[Pe661]: expected an integer constant
Warning[Ta006]: Interrupt function has no assigned vector
Total number of errors: 4
Total number of warnings: 1 |
Na cia matosi ryskiai kad su bibliotekomis negerai. Tvarkyk #Include dali. Cia kaip suprantu su IAR ar CodeVision. Su WinAVR galeciau tiksliau pasakyti. |
|
|
|
|
|
 |
Reikia programos C kalba |
Parašytas: 2006 11 29, 16:52 |
|
|
|
|
| Jei čia su IAR, uždėk varnelę project -> options -> general -> library configuration "enable bit definitions.." |
|
_________________ Teorija - kai viską žinai, bet niekas neveikia,
Praktika - kai viskas veikia, bet nežinai kodėl.
Skype : VytautasRX |
|
|
|
 |
Reikia programos C kalba |
Parašytas: 2006 12 01, 12:07 |
|
|
|
|
| Vytautasr rašo: |
| Jei čia su IAR, uždėk varnelę project -> options -> general -> library configuration "enable bit definitions.." |
zinau ta varnele, uzdejau ir vistiek meta... |
|
|
|
|
|
 |
 |
Reikia programos C kalba |
Parašytas: 2006 12 01, 12:11 |
|
|
|
|
gal kas galit dar patarti kaip cia sita koda pataisyti, kazkas cia neiseina su if funkcija, kai if funkcija buna viena veikia, o kai parasau dvi nebeveik...cia kodas:
#include "iom8.h"
int main( void )
{
DDRC = 255; //Nustatome uostą c kaip išėjimą
DDRB = 0; //Nustatome uostą B kaip įėjimą
PORTC=0; //Užgesiname visyus šviesos diodus
while (1) { //Amžinas ciklas
int test=PINB; //Nuskaitome uostą b
int OUT=0; //Kintamasis laikinam išėjimų kodam saugoti
//Tikriname ar PINB0 nelygus 1 (t.y. ar
//kontaktas atviras
if (((test & (1<<PINB0))!=1)){
//Jei taip OUT pridedame vienetą ties
//pirmu išėjimu.
OUT=OUT || (1<<PORTC0);
}
//Lygiai taip su antru uostu elementu
if (((test & (1<<PINB1))!=1)){
OUT=OUT || PORTC=(1<<PORTC1);
}
//Lygiai taip su trečiu uostu elementu
if (((test & (1<<PINB2))!=1)){
OUT=OUT || PORTC=(1<<PORTC2);
}
//Ketvirtas uosto elementas
if ((test & (1<<PINB3))!=1){
OUT=OUT || PORTC=(1<<PORTC3);
}
//Išvedame duomenis
PORTC=OUT;
}
} |
|
|
|
|
|
 |
|
 |
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 |
|

|
 |