Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   413 / 1320
(#) icserny válasza Szárnyas hozzászólására (») Feb 19, 2009 /
 
Igen, jó. Végül is csak a RESET lábat kell, hogy felhúzza, amikor nincs programozás....
(#) Szárnyas válasza icserny hozzászólására (») Feb 19, 2009 /
 
Rendben, köszi!
(#) potyo válasza icserny hozzászólására (») Feb 19, 2009 /
 
Aztán meg hagyja felmászni a Vpp potenciálját, amikor le van húzva a programozóról, és resetel össze-vissza tőle a chip. Inkább ki kéne azt a diódát hagyni és egy 10k-val húzni fel a lábat. Nagyon félősek tehetnek egy 5,5V-os zénert is a Vcc és GND közé, de totál felesleges.
(#) watt válasza Szárnyas hozzászólására (») Feb 19, 2009 /
 
Potyo leírta miért, én csak annyit írok, nem kell oda dióda.
(#) kisedison hozzászólása Feb 19, 2009 /
 
Helló

Van valakinek kapcs rajza PIC16C56-os hoz programozója
köszi.
(#) watt válasza kisedison hozzászólására (») Feb 19, 2009 /
 
Mit szeretnél?
(#) (Felhasználó 35255) hozzászólása Feb 19, 2009 /
 
Üdv!

Valaki tudna segíteni, hogy hogyan kell assemblyben a WAIT parancsot használni, mert az MPlab egyfolytában lehurrogja, akárhogy is írom be!
Köszi!
(#) watt válasza (Felhasználó 35255) hozzászólására (») Feb 19, 2009 /
 
Tudomásom szerint nincs olyan assemly utasítás, hogy WAIT.
(#) (Felhasználó 35255) válasza watt hozzászólására (») Feb 19, 2009 /
 
Hmm.. Köszi! Na mindegy, pedig ebben a topicban láttam egy ilyet:
1.
CALL START_CONVERT
2.
BSF LED
3.
WAIT D'255'
4.
WAIT D'255'
5.
WAIT D'255'
6.
WAIT D'255'
7.
BCF LED
8.
CALL READ_TEMPERATURE


Nézd meg, hogy ha a LED -et be ki kapcsolod a jelzett pontokon, mennyi ideig világít. 500ms-et elég jól lehet érzékelni, és inkább több időt állíts be, mint kevesebbet.

Akkor marad a jó öreg DECFSZ rutin....
(#) kisszee hozzászólása Feb 19, 2009 /
 
Ha figyelmesebben elolvasod a hozzászólást, akkor abból kiderült, hogy az egy makró: "#include "E:\Munka\forumra\modules\m_wait.asm". Plusz utána kérte is egy illető, hogy mutassa meg ezt a makrót.
(#) (Felhasználó 35255) válasza kisszee hozzászólására (») Feb 19, 2009 /
 
Ja igen! Jogos!
Találtam egy ilyet én is a gépen, csak kicsit hosszú.
Marad a normál delay rutin akkor is...
Köszi a segítségeket!
(#) benjami válasza trudnai hozzászólására (») Feb 19, 2009 /
 
Ezt már én is próbáltam, de ugyanoda teszi / próbálja tenni ahova a sima udata
Viszont ASM-ben UDATA_ACS után létrehozva a változót, a C-ben meg extern-ként hivatkozva rá simán jó helyre teszi. Ez egy másik működő, de nem túl szimpatikus megoldás.
(#) sirály12 hozzászólása Feb 19, 2009 /
 
Újra itt vagyok. Icserny már próbált nekem segíteni, de még mindig ott tartok, ahol tartottam.

Mivel már régebben volt, ezért újra leírom, hátha valaki megtudja mondani, hogy mi lehet a hiba.

Egy GPS-ből jövő soros adatot kellene piccel fogadnom, és bizonyos részeit továbbküldenem usb-n. Erre egy pic 18f4550-es áll a rendelkezésemre. A pic-pc közötti usb-s kapcsolat már megy. De mivel igen kezdő vagyok c-ben ezért egyszerűen nem tudom rendesen megcsinálni, hogy a soros porton fogadott adatot usb-n kiküldje. A sorosporti tulajdonságai 4800,8,1


main.c

user.c

A kód annyiban változott, hogy módosult az alábbi rész:


  1. OpenUSART (USART_TX_INT_OFF &
  2.              USART_RX_INT_ON &
  3.              USART_ASYNCH_MODE &
  4.              USART_EIGHT_BIT &
  5.              USART_CONT_RX &
  6.              USART_BRGH_LOW, 155);



Tudna valaki segíteni ebben?
(#) benjami válasza benjami hozzászólására (») Feb 19, 2009 /
 
Megvan a megoldás
#pragma udata access mysession = 0
Tehát az a lényeg hogy nem elég csak simán megmondani neki hogy az access területre tegye, hanem konkrét címet is kell rendelni hozzá session névvel együtt.
(#) trudnai válasza (Felhasználó 35255) hozzászólására (») Feb 19, 2009 /
 
Idézet:
„Hmm.. Köszi! Na mindegy, pedig ebben a topicban láttam egy ilyet:”


Akkor az a WAIT egy makro ami valahil definialva van a projectben - nezd vissza azt a projectet, hogy hol definialtak...
(#) benjami válasza sirály12 hozzászólására (») Feb 19, 2009 /
 
Ha jól értelmezem a programod, azt csinálja hogy ha a PC-ről küldesz neki egy 'O' karaktert (mondjuk egy terminál programból) akkor a GPS felől egy byte-ot megpróbál beolvasni és a PC felé átküldeni.
(#) potyo válasza sirály12 hozzászólására (») Feb 19, 2009 /
 
Nekem gyanús, hogy az egyes lefutásoknál az output_buffer tartalma felülírásra kerül. Célszerűbb lenne egy pufferbe gyűjteni az adatokat, és ha van a pufferben adat, akkor a ProcessIO()-n belül csak egy helyről hívni a továbbítását az USB felé. Kell egy
  1. static unsigned char nr=0;
változó az ProcessIO() függvénybe, és amikor valamit a pufferbe akarsz tenni, akkor azt
  1. output_buffer[nr++]=akarmi;
formában teszed bele. Aztán a ProcessIO() végén
  1. if (mUSBUSARTIsTxTrfReady() && nr)
  2.         {
  3.                 mUSBUSARTTxRam((byte*)output_buffer,nr);
  4.                 nr=0;
  5.         }

Most így ez jutott eszembe...
(#) sirály12 válasza potyo hozzászólására (») Feb 19, 2009 /
 
Kipróbáltam, de sajnos még így sem jó, az usb-n jó minden, de egyszerűen olyan mintha nem is lenne soros portom, semmit sem továbbit az usb felé. Valamit kihagytam volna?
(#) potyo válasza sirály12 hozzászólására (») Feb 20, 2009 /
 
Átviteli sebesség jó? A gps folyamatosan küld adatot?
(#) sirály12 válasza potyo hozzászólására (») Feb 20, 2009 /
 
A gps folyamatosan küldi az adatokat, megnéztem.
Elvileg 4800bps a sebesség.
(#) Mate12345 hozzászólása Feb 20, 2009 /
 
Hy! Egy PIC mennyire birja az erős mágneses teret? Nagyon összezavarja, ha van mellette egy erős állandó vagy elektromos mágnes?
(#) potyo válasza Mate12345 hozzászólására (») Feb 20, 2009 /
 
Ha a mágneses tér időben állandó, akkor semmit nem számít. Ha váltakozó a mágneses tér, akkor az számíthat, de ahhoz azért nem gyenge mágneses térre van szükség.
(#) watt válasza sirály12 hozzászólására (») Feb 20, 2009 /
 
Nem látom, hogy a soros port kiszolgáló rutinban vizsgálnád-e, hogy kész-e a vétel. Hiába küldi folyamatosan az adatokat a GPS, ha nem várod meg, míg beér egy értelmezhető csomag.
(#) sirály12 válasza watt hozzászólására (») Feb 20, 2009 /
 
Tudnál mutatni hozzá valamilyen forráskódot, amiből ki tudnék indulni? Keresgettem a neten, de nemis tudom igazán hogy keressek pont erre.
(#) watt válasza sirály12 hozzászólására (») Feb 20, 2009 /
 
Az MCC18 helpje nagyon jó ám! Keresd a telepedett könyvtár docs könyvtárában!

Egyébként azt, hogy van-e beérkezett adat, egyszerű megnézni:
  1. while (!DataRdyUSART());

Ezzel csak annyiban kell vigyázni, hogy ha nem jön adat, akkor innen soha nem lép ki, de ezt majd ráérsz lekezelni, ha már a programkereted kész. (lekezelés egy ciklussal való várakozás lehet, ami ha letelik, akkor kilép és hibakóddal jelzi, hogy nem jött adat. Ez a módszer, akkor jó, ha közben más feladat nincs...)
(#) trudnai válasza watt hozzászólására (») Feb 20, 2009 /
 
  1. while (!DataRdyUSART());

Ezzel csak az a gond, hogy nincs timeout benne - otthonra jo megtanulni a fuggvenyeket, de igazi kornyezetbe inkabb valami for-os ciklus kellene ido lejarattal, pl valami hasonlo:
  1. // 1s timeout...
  2. for(i=100; DataRdyUSART(); Delayms(10) ) {
  3.     if ( 0 == --i ) {
  4.         Hiba_timeOutVan();
  5.         break;
  6.     }
  7. }

De lehet jobb lenne valami interruptos timeout, de akkor is figyelni kellene egy flag-et...
(#) sirály12 hozzászólása Feb 20, 2009 /
 
Ezt alkottam a hozzászólásaitok alapján:
  1. void ProcessIO(void)
  2. {  
  3.     BlinkUSBStatus();
  4. while (DataRdyUSART() == 1)
  5. {
  6.   c = ReadUSART();
  7. output_buffer[1]= c;
  8.         if (mUSBUSARTIsTxTrfReady())
  9.                         {                                       mUSBUSARTTxRam((byte*)output_buffer,1);                         }
  10. }


És mintha menne, mert másodpercenként 1-2 alkalommal küld adatot a gépre a pic, csak az a baj, hogy értelmezhetetlen karakterek jönnek.
(#) sirály12 válasza sirály12 hozzászólására (») Feb 20, 2009 /
 
Csupa H betű érkezik.
(#) watt válasza trudnai hozzászólására (») Feb 20, 2009 /
 
Nem mentegetőzni akarok, de mintha én is említést tettem volna erről a hozzászólásomban! Nem olvastad?
(#) watt válasza sirály12 hozzászólására (») Feb 20, 2009 /
 
A PIC-től a PC-re érkezik H az USB-n?

És ha lecseréled valami teszt értékre a "c"-t, akkor az jól érkezik a PC-re?

A GPS panel mit küld, azt tudod? Ha az GPS panelt rögtön a PC-re csatlakoztatod(max232-vel!), akkor milyen karaktereket küldözget?

A H egyébként 72dec(0x48h). Ez nem valami kommunikációra felszólító jel a GPS modultól?
Következő: »»   413 / 1320
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem