• 28 odgovora
  • 7.803 pregleda
Re: Problem sa ispisom poruka na 7seg displeju 19.08.2018. u 08:56 · pre 99 meseci #21
Citat:
janko11:
P0 i P2 se koriste za spoljasnji EPROM na kome se nalazi program koji se izvrsava. Da li je do hardvera problem, jer su displeji i dip switch - evi povezani na isti port?


OK. Pretpostavljam da si odradio softverske izmene koje su kolege sugerisale:

1. Iz interapt rutine je izbačena funkcija delay.

2. Pre čitanja linija na portu koje se koriste kao dvosmerne (P1.3, P1.4, P1.5 i P1.6) treba ih prebaciti u READ (upisati "1" u dogovarajući latch).
Nije dovoljno samo pri inicijalizaciji uraditi P1=0xFF. To ima smisla ako se port koristi isključivo kao ulazni.

Pretpostavljam da imaš neki 8051 datasheet, u njemu verovatno postoji poglavlje koje se zove "port hardware configuration" ili nešto slično. Pažljivo pročitaj,

3. Ovo nije uzrok problema, ali bi trebalo zaustaviti tajmer pre inicijalizacije:

Umesto

TH0=0xFC;
TL0=0x66;

bi trebalo da stoji

TR0=0;
TH0=0xFC;
TL0=0x66;
TR0=1;

Re: Problem sa ispisom poruka na 7seg displeju 19.08.2018. u 17:37 · pre 99 meseci #22
Mozes li mi detaljnije objasniti kako dvosmerne linije (P1.3, P1.4, P1.5 i P1.6) prebaciti u READ, posto nisam nasao u datasheet. Da li mozes pokazati smernice kako to treba uraditi? Pokusacu da pronadjem.

Sto se tice pullup, da li je dovoljno staviti 10k za pullup - ove na svim izlaznim pinovima 4051 ka napajanju?
Re: Problem sa ispisom poruka na 7seg displeju 20.08.2018. u 21:13 · pre 99 meseci #24
Citat:
janko11:
Mozes li mi detaljnije objasniti kako dvosmerne linije (P1.3, P1.4, P1.5 i P1.6) prebaciti u READ, posto nisam nasao u datasheet. Da li mozes pokazati smernice kako to treba uraditi? Pokusacu da pronadjem.


Pre svakog čitanja podataka (stanja DIP prekidača) treba linije P1.3 - P 1.5 postaviti na "1".

Uz poruku je prikačena šema jednog pina na portu P1.

Za čitanje logičkog nivoa sa pina FET na izlazu mora da bude isključen, a isključuje se tako što se u D latch upiše "1".
Logički nivo na pinu određuje signal sa 74HC573.

Kada se pin koristi ako izlazni:

Kada se u D latch upiše "0" FET se uključuje i drži izlazni pin na niskom nivou.

Kada se u D latch upiše "1" FET se isključuje i interni pullup drži izlazni pin na visokom nivou.






[Ovu poruku je menjao uart dana 20.08.2018. u 22:29 GMT+1]
Re: Problem sa ispisom poruka na 7seg displeju 24.08.2018. u 15:34 · pre 99 meseci #26
Poruke se prikazuju na displeju. Hvala kolegama bogdan.kecman i uart na savetima i pomoci.
Samo jos jedno pitanje: U kodu za prijem podataka sa serijskog porta, sta treba podesiti da recimo kada se izgubi komunikacija na displeju pise recimo STOP umesto poslednjeg primljenog podatka.
Kod za prijem podataka sa serijskog porta izgleda ovako
Code:

  void serial(void) interrupt 4
  {
     if(RI)
     {
         el=SBUF;
      RI=0;
      switch(el)
      {
        case 0x02:
            prijem=1;
        zavrsen=0;
        tail=0;
        break;
        case 0x03:
          zavrsen=1;
              prijem=0;
        break;
        default:
          if(prijem==1 && zavrsen==0)
              {
           buff[tail]=el;
           tail++;
           if(tail==20)
                tail=0;
           }
           else if(prijem==0 && zavrsen==1)
           {
           buff[tail]=el;
           tail++;
           buff[tail]='\0';
           }
        break;
      }
     }
}
Re: Problem sa ispisom poruka na 7seg displeju 24.08.2018. u 19:12 · pre 99 meseci #27
Citat:
Samo jos jedno pitanje: U kodu za prijem podataka sa serijskog porta, sta treba podesiti da recimo kada se izgubi komunikacija na displeju pise recimo STOP umesto poslednjeg primljenog podatka.


Koliko vidim podaci stižu u paketima formata 0x02 <podaci> 0x03

Šta tačno znači "da se izgubi komunikacija"? Da stigne deo paketa, a nikad ne stigne 0x03?
Da li paketi stižu stalno, sa nekim vremenskim razmakom ili povremeno?

Nevezano za ovo pitanje: mislim da umesto promenljivih "prijem" i "zavrsen" može da se koristi samo jedna.


Re: Problem sa ispisom poruka na 7seg displeju 24.08.2018. u 21:13 · pre 99 meseci #28
Da, podaci stizu u formatu 0x02 <podaci> 0x03. Pocinje sa 0x02 a zavrsava se sa 0x03. Podaci stizu stalno brzinom 9600 baud/s. Pod pojmom da se izgubi komunikacija znaci da stigne deo paketa, a nikad ne stigne 0x03 ili da jednostavno prestane slanje podataka usled na primer da se iskljuci kabl koji povezuje uredjaj koji salje podatke sa procesorom koji prima podatke i prikazuje na displeju. U tom slucaju na displeju trebalo bi da se prikaze recimo STOP umesto poslednje primljenog podatka. Kada se ponovo uspostavi komunikacija podaci stalno pristizu, smestaju se u bafer i prikazuju na displeju. Kada ponovo prestane slanje paketa, na displeju pise recimo STOP, sve dok ponovo ne pocne slanje podataka.
Re: Problem sa ispisom poruka na 7seg displeju 25.08.2018. u 20:09 · pre 99 meseci #29
Iskoristiš tajmer. Resetuješ ga svaki put kada stigne 0x02 (početak paketa).
Ako dođe do prekida komunikacije tajmer će okinuti interapt i u tada u bafer za ispis upišeš "STOP".

Za inicijalizaciju tajmera treba znati koliki je vremenski razmak između paketa.
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme