Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   273 / 1320
(#) potyo válasza Csaplar hozzászólására (») Aug 30, 2008 /
 
Akkor kaptál volt egy az "USB eszköz nem ismerhető fel" vagy valami ilyesmi üzenetet. Szóval az biztosan jó.
(#) Master_of_the_web válasza trudnai hozzászólására (») Aug 30, 2008 /
 
helló!

Ezt az égetőt használom: Bővebben: Link

Egy angol nyelvű fórumon olvastam, hogy neki az icprog beégette a programot, de ki már nem tudta olvasni, és utána viszont ment a kapcsolás.

Általában amikor visszaolvasom a programot, csak pár karakter jelenik meg az első sorban. Ha a programozás közbeni ellenőrzést választom, akkor azt mondja OK
(#) trudnai válasza Master_of_the_web hozzászólására (») Aug 30, 2008 /
 
Hat, ez egy JDM es raadasul kulso tapellatas nelkuli amirol koztudott tud bizonytalanul mukodni. Mindezek mellett hianyzik a kapcsolasbol a decoupler capacitor amit mar emlitettem, csupan egy 10u -sat latok ami mas celokat szolgalhat. Amiket kepeket kuldtel az alapjan az latszik, hogy az elso ket szo jo a tobbi nem - lehet addigra merul le a kondi annyira, hogy az mar nem megfelelo a PIC-ednek? Amugy em egeszen ertem a 10k es a 470u szerepet? kondi sorban az MCLR aggal?

Ezenfelul nembiztos, hogy sokat tudok meg segiteni, kiveve egy tanacs: kellene egy valamivel megbizhatobb programozo ha PIC-ekkel szeretnel foglalkozni, pl PicKit2. Ha nem szeretnel PIC-ekkel foglalkozni akkor pedig probald ki jo e az egetes es ha nem akkor kerj meg valakit akinek van rendes egetoje, hogy programozza fel neked.
(#) potyo válasza trudnai hozzászólására (») Aug 30, 2008 /
 
Az a 470u elvileg azért van, hogy a TXD vonal alacsony állapotában feltöltődjön a kondenzátor, és a magas állapotában hozzáadódjon a feszültsége a vonal magas állapotbeli feszültségéhez. Így valamelyest megkerülve azt a problémát, hogy a soros porton a feszültség alacsonyabb, mint az égetéshez szükséges feszültség. A megbízhatóság természetesen olyan-amilyen...
(#) Csaplar hozzászólása Aug 30, 2008 /
 
Sziasztok!

Szeretnék újból egy kis segítséget kérni. Egy MTPK4-es RFID modullal szeretnék kommunikálni, de nem nagyon akar összejönni. RB0 lábra kötöttem, így szoftveres uart-al kellene megoldani.
MCC18 fordítót használok hozzá.

Átjavítottam a ../PMC/SW_UART könyvtárban levő asm fájlokat:
SWRXD equ PORTB ; Receive pin port and pin
SWRXDpin equ 0
TRIS_SWRXD equ TRISB ; Receive pin tris and pin

Valamint létrehoztam egy uartdelay.c fájlt, ahol megvalósítottam a késleltetéseket az általam használt 20Mhz-nek megfeleően:

void DelayRXHalfBitUART()
{
((((2*20) / (8*9600) ) + 1) / 2);
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();

}

void DelayTXBitUART()
{
((((2*20) / (4*9600)) + 1) / 2);
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
}

void DelayRXBitUART()
{
((((2*20) / (4*9600)) + 1) / 2);
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
}

Ezek után újrafordítottam a libeket, de sajnos nem működik.

OpenUART();

...

#pragma code
#pragma interrupt InterruptHandlerHigh
void
InterruptHandlerHigh ()
{
if( INTCONbits.INT0IF ) // RB0 megszakítása
{
INTCONbits.INT0IF = 0; // ürítem a megszakítás flaget! (Stopper)
sprintf(str2,PORTBbits.RB0);
getsUART(str,16);
}
}

Mi lehet a baj? Mit rontok el? Van esetleg valakinek ötlete?

Köszönöm!

Üdv.
(#) trudnai válasza potyo hozzászólására (») Aug 30, 2008 /
 
Ertem, es a 24V aramkorlatozas nelkul a zenerre kerul?
(#) trudnai válasza Csaplar hozzászólására (») Aug 30, 2008 /
 
Ezekkel a kepletekkel mi a cel?
  1. ((((2*20) / (8*9600) ) + 1) / 2);

Mert igy kiszamolodik valami de nem tarolod el - ez forditasi idoben kiertekelodik, keletkezik egy immediate ertek, de semmit nem csinalsz vele ha jol ertelmezem.

Na mindegy, az ISR-ben ket problemat latok:
  1. #pragma code
  2. #pragma interrupt InterruptHandlerHigh
  3. void InterruptHandlerHigh ()
  4. {
  5.   if( INTCONbits.INT0IF ) // RB0 megszakítása
  6.   {
  7.     INTCONbits.INT0IF = 0; // ürítem a megszakítás flaget! (Stopper)
  8.     sprintf(str2,PORTBbits.RB0);
  9.     getsUART(str,16);
  10.   }
  11. }

Az egyik, hogy az RB0-at elobb kellene kiolvasni, mint az IF-et torolni. A masik, hogy nem vagyok abban biztos, hogy szerencses eset interruptbol sprintf-eket hivogatni.
(#) potyo válasza trudnai hozzászólására (») Aug 30, 2008 /
 
Nem, ott a 10k a kondenzátorral sorban.
(#) Csaplar válasza trudnai hozzászólására (») Aug 30, 2008 /
 
Szia !

Javítottam a kódon. A késleltetést módosítottam:
void DelayTXBitUART(void)
{
char delay_time = (((((2*20000000)/(4*9600))+1)/2)-12)/10;
Delay10TCYx (delay_time);
return;
}
...

Valamint a teszt kódot:

INTCON2bits.NOT_RBPU = 0;
INTCONbits.GIE = 1;
RCONbits.IPEN = 1;

TRISBbits.TRISB0 = 1; // RFID-Transponder
LATBbits.LATB0 = 0;
OpenRB0INT (PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & FALLING_EDGE_INT);
OpenUART();

#pragma code
#pragma interrupt InterruptHandlerHigh

void
InterruptHandlerHigh ()
{
if( INTCONbits.INT0IF ) // RB0 megszakítása
{
getsUART(str,5);
INTCONbits.INT0IF = 0;
}
}

De sajnos így sem működik. A program induláskor valamiért folyamatosan várakozik, így még a kijelzőn sem jelenik meg semmi. Amint elhúzom az RFID kártyát a tekercs előtt kétszer, beugrik a megszakításhoz.
Sajnos ekkor is hibás néhány hibás karakter látszódik csak.

Lenne esetlég még valami ötlet, hogy mit érdemes másképp csinálnom?

Köszönettel:
Zoli
(#) brichy76 válasza Doncso hozzászólására (») Aug 30, 2008 /
 
Bocsi én nem olyanra gondoltam hanem lcd kijelzősre , olyan mint a kapcsolások között található voltmérő!

http://www.hobbielektronika.hu/kapcsolasok/digitalis_voltmero_led_k...el.htm
(#) watt válasza Master_of_the_web hozzászólására (») Aug 30, 2008 /
 
Olvasd el - Ezt - ! (megjegyzem, hogy az elmúlt 3 napban volt szó a JDM-ről. Javaslom olvasd végig a fórumot, mielőtt újra megkérdezel valamit, ami már rég ki lett tárgyalva. Használd a keresőt is!
(#) googa válasza watt hozzászólására (») Aug 30, 2008 /
 
Linkeljetek nekik "Tranyókát"...
(#) zsuscsinyo hozzászólása Aug 30, 2008 /
 
Sziasztok! Egy kisebb problémával fordulok hozzátok. Most foglalkozok a soros jel feldolgozásával, és azt szeretném kérdezni, hogyha bitenként olvasom ki az értéket, szóval van egy rakás 1-es meg 0 és ezt mondjuk 8 bit-be csoportosítani. Gondolom bonyolultnak hangzik ahogy elgondoltam, de valójában csak úgy akarom megoldani, mintha papírra írnánk a biteket és a végén olvasnánk ki az egésznek az értékét. ezt változókkal hogyan lehetne megoldani? egyéb más ötletet is várnék
(#) watt válasza zsuscsinyo hozzászólására (») Aug 30, 2008 /
 
Pontosíts! Honnan jönnek a bitek? (jelszintek, freki)
A PIC-el akarod venni ezt a jelfolyamot? Van valami szinkronjel is, vagy csak a jelsorozat?
(#) menyus hozzászólása Aug 30, 2008 /
 
Sziasztok!

Kérdésem lenne hogy a PIC komparátora kaphat e a tápfeszültségnél nagyobb feszültséget a bemeneteire? Egy LI-on akku feszültségét chekkolnám egy hordozható kütyüben, és az a helyzet hogy ha véget ér a töltés akkor az akkuban lévő elektronika leválasztja az akkut a töltőről. Ekkor viszont terhelés híján a töltő feszültség az akkufeszültség fölé megy 2-3 V al. Tönkremehet ettől a komparátor? Mert a töltés óta nem működik az akkuchekk a kütyüben. Nem generál megszakítást a komparátor. Kellett volna egy zener a komparátor bemenetre...?

Köszi
(#) menyus válasza menyus hozzászólására (») Aug 30, 2008 /
 
Meg is van, ezt elszúrtam. Az adatlap szerint VDD + max 300mV lehet a bemeneteken. PIC csere...így jártam.
(#) watt válasza menyus hozzászólására (») Aug 30, 2008 /
 
Osztóról nem hallottál még?
(#) szilva válasza menyus hozzászólására (») Aug 30, 2008 /
 
Legalább egy soros ellenállást tehettél volna oda, esetleg egy zener társaságában, hogy semmiképp ne kapjon tápnál nagyobbat. De ahogy watt is írta, ilyen helyekre leginkább feszültségosztót szoktunk tenni.
(#) menyus válasza watt hozzászólására (») Aug 30, 2008 /
 
De igen, már hallottam. Egy trimmeren keresztül le is van osztva a mérendő feszültség mivel a referencia a tápfeszültségből előállított 1,8 V. Ettől függetlenül előfordulhatott hogy a mérendő feszültség meghaladta a 3 V os tápfeszültséget mert a töltő üresjáratban 6 - 7 V ot ad le.
(#) menyus válasza szilva hozzászólására (») Aug 30, 2008 /
 
A trimmer után van egy soros ellenállás is (5,6K) mert a trimmer egyik lába közvetlenül a mérendő tápon van. Lehet hogy mégis kellett volna az a zener, bár szerintem az 5,6 K miatt nem folyhatott ott akkora áram ami miatt a komparátor tönkrement volna. De hogy nem működik az biztos... Mindenesetre kicserélem a PIC et és teszek oda egy 2,7 V os zenert.

Köszönöm a válaszokat.
(#) zsuscsinyo válasza watt hozzászólására (») Aug 30, 2008 /
 
Igen PIC16F628-cal. Egy távirányító infrájából, csak azért bajlódok vele mert a fenetudja mennyi a baud rate ezeknél a távirányítóknál, különben USART-tal próbálkoznék. Néztem már a googli-val is de semmit nem ír. A TMR0-ás idő figyelgetése nekem kicsit komplikált mivel tudni kell hogy a bitek között mennyi idő telik el. Kénytelen voltam rádugni a TSOP vevőmet a hangkártyára, és legjobb felbontásban mintavételezni. 1 bit-re 800uSec időt mértem kerekítve, bár nemtudom hogy ez mennyire hiteles, mivel ezen a téren még nagyon kezdő vagyok, de egyben kitartó is.

Ha jól számoltam kb 25-26 bit
Íme a gombnyomások jelsorozatai:
(#) trudnai válasza Csaplar hozzászólására (») Aug 31, 2008 /
 
Szia,

Nem tudom hirtelen melyik forditot hasznalod, de MPLAB-nal - meg talan mas C forditonal is - volt olyan, hogy ha egy szamot leirsz, akkor azt byte meretukent kezeli. Ezert ott castolni szokas - pl "20000000L", tehat egy nagy L a vegen long tipusra castolja, vagy "20000000UL" unsigned long-ra. Nem tudom ez okoz-e hibat nalad?

Masik, hogy az INT0IF elott ugy emlekszem ki kell kiolvasni a PORTB-t. Most ertem haza party-rol es most nincs kedvem elovenni az adatlapot, de nezd majd meg.

Amugy ezt a DelayTXBitUART -ot honnan hivogatod? Bitenkent kezeled az UART-ot? Vagy az OpenUART miert van ott akkr? Vagy ennel a forditonal ilyen furin kell beallitani az UART kezelo modulnal a sebesseget?

Tamas
(#) Csaplar válasza trudnai hozzászólására (») Aug 31, 2008 /
 
Szia!

Én simán az sw_uart-ot akarom használni. A Library pdf azt írta, hogy a forrásban ki kell fejteni a késleltetéseket (DelayTXBitUART), ezért írogattam kézzel.
Ezek után újrafordítottam a p18F4520-as libet. És most elvileg egyszerűen az openUART után a getcUART-al vagy a getsUART-al ki kellene tudni olvasni az érkező adatokat, nem?
Mindenképpen úgy szeretném, hogy az RB0 megszakítás hatására olvassam ki a rajta érkező adatokat. (az SW_UART-nál is az RB0-át állítottam be, mert arra kötöttem az MTPK4 data lábát.)
(#) Doncso válasza brichy76 hozzászólására (») Aug 31, 2008 /
 
Ja, értem már, van még egy LCD-s is a kapcsik között, az is ICL-el van megvalósítva. Ezt át tudod simán alakitani LED-esre.
(#) proci hozzászólása Aug 31, 2008 /
 
Sziasztok!

Az a kérdésem lenne, hogy lehetséges e két külön DC motor vezérlése (különböző fordulatszámon egy időben) PWM-el a PIC16F690-el? Mivel az adatlap szerint csak egy PWM csatornája van.

Kösz
(#) kissi válasza proci hozzászólására (») Aug 31, 2008 /
 
Szia!

Lehetséges, csak szoftveresen kell megvalósítani a PWM-et (pl. egy változó értékét 0-255-ig változtatva és egy PWM-re jellemző értékkel összehasonlítva: ha a szám kisebb, mint a PWM akkor egy kimenet 0, ha nagyobb, akkor 1).

Steve
(#) kissi válasza menyus hozzászólására (») Aug 31, 2008 /
 
Nincs előttem az adatlap, de emlékeim szerint a PIC lábak egy-egy diódán keresztül fel vannak kötve a tápra, illetve a GND-re. Ennek szerintem egy 5k6 ellenálláson keresztül meg kell fognia a magasabb feszültséget!
Szerintem ha tönkrement, akkor más okozta...

Steve
(#) littlejoe hozzászólása Aug 31, 2008 /
 
Van egy ilyen sorosportos égetőm:http://haromb.freeweb.hu/letolt/picpgm/picpgm.html
tudok az ic-proggal 16f628-at programozni de most .egy 18f1320-at kellene vele égetnem de nem akar semmit belesütni.Mi a megoldás más lábat is be kellene kötni mint a 16f628-hoz?
(#) proci válasza kissi hozzászólására (») Aug 31, 2008 /
 
Nos, igazábol nekem 2 PWM kellene, de sehol sem találok olyan kódot, ahol két szoftveres PWM működik egymástól függetlenül interruptokkal. Tudom a 877-esnek alapból van két hardveres PWM-je de biztosan meg lehet oldani 690-esel is.
(#) littlejoe hozzászólása Aug 31, 2008 /
 
Tönkre tehette az ic-prog az új 18f1320-as pic-et (megölte az adatvonalat?)ha véletlen a 16f628-as beállitásaival töröltem?Hogyan tudnám leellenőrizni?
Következő: »»   273 / 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