Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Akkor kaptál volt egy az "USB eszköz nem ismerhető fel" vagy valami ilyesmi üzenetet. Szóval az biztosan jó.
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
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.
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...
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.
Ertem, es a 24V aramkorlatozas nelkul a zenerre kerul?
Ezekkel a kepletekkel mi a cel?
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:
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.
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
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
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!
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
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?
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
Meg is van, ezt elszúrtam. Az adatlap szerint VDD + max 300mV lehet a bemeneteken. PIC csere...így jártam.
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.
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.
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.
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:
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
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.)
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.
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
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
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
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?
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.
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?
|
Bejelentkezés
Hirdetés |