Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   1 / 3
(#) mrcdcscc válasza Ge Lee hozzászólására (») Aug 28, 2019
Köszönöm a gyors és részletes választ. Tudnál példát írni alkatrészteszterre?
(#) mrcdcscc hozzászólása Aug 28, 2019
Egy monitor tápból 3 diódát szedtem ki, mert beszerelt állapotban gyanúsak voltak, mikor megmértem. A 3 dióda: SR5100, SR515 és SR506. Mindegyik kiszerelt állapotban a multiméter dióda funkciójában 0,300 alatti értéket mértem: SR5100-nál 0,299V; SR506-nál 0,188V és SR515-nél 0,272V. Ezek a diódák rossznak számítanak ugye?

A lomex webáruházában láttam SR506-ost, viszont SR5100-ast és SR515-öst nem. Ezek mivel helyettesíthetők?
(#) mrcdcscc hozzászólása Aug 26, 2019
Korábban 2 monitorunkat meg tudtam javítani, mert a táp nyákján mindegyiknél volt felpúposodott kondenzátor, azt kicseréltem, és megjavultak a monitorok. Most egy harmadik monitort szeretnék megjavítani. Ennek is a táp nyákján volt 2 kondenzátor, ami púpos volt, azokat kicseréltem (lásd feltöltött képen a pirossal bekeretezett kondenzátorok) (illetve volt a két púpos mellett egy harmadik nem púpos is, azt is kicseréltem), de nem javult meg a monitor, ráadásul kiszerelt állapotban a kondenzátorok kapacitását megmértem, és az a rájuk írt kapacitással egyezett.
Szóval a monitort ha bekapcsolom, akkor kb. fél másodpercre előjön a kép, amit látni kellene, de utána elsötétül a képernyő. Ha kikapcsolom majd be, akkor megint kb. fél másodpercig látható a kép majd eltűnik. Valakinek van valami ötlete mit kellene kicserélnem? A nyákról a képeket csatoltam.
Amikor a monitort bekapcsolom, akkor a táp nyákon az egyenáramú végén az 5 és 15V-ot mérni tudom.
A hozzászólás módosítva: Aug 26, 2019
(#) mrcdcscc hozzászólása Okt 28, 2015
Sziasztok!

Az autóm gyári ülésfűtés kapcsolója tönkrement. Helyette be szeretnék szerelni egy a lomex-ben vásárolt 3P SPST kapcsolót (a [45-07-09] azonosítójút vettem meg). Ezen van LED is. Most, mikor raktam volna össze a dolgot, kezdtem el gondolkodni, hogy a régi kapcsolómon nem volt led, és csak két vezeték ment a kapcsolóhoz. Viszont ezen az új kapcsolón 3 pólus van. Jól gondolom, hogy valahonnan még oda kellene vezetnem ehhez a kapcsolóhoz a földet?
(#) mrcdcscc hozzászólása Júl 24, 2014
Sziasztok!

Pic16F1829 mikrovezérlőt kapcsoltam össze az UART modulján keresztül a számítógéppel.

Ha a CCS-C 5.009-ben a program elejére a:
  1. #include <16F1829.h>
  2. #fuses INTRC_IO, NOLVP, NOWDT, NOPROTECT,NOMCLR
  3. #device ADC=8
  4. #use delay(clock=4000000)
  5. #use rs232(baud=9600, UART1, xmit=pin_b7, rcv=pin_b5,stream=HOSTPC)

dirktívákat írom, szépen megy a soros kommunikáció.

Ha viszont a
  1. #include <16F1829.h>
  2. #fuses HS, NOLVP, NOWDT, NOPROTECT,NOMCLR
  3. #device ADC=8
  4. #use delay(clock=20000000)
  5. #use rs232(baud=9600, UART1, xmit=pin_b7, rcv=pin_b5,stream=HOSTPC)

direktívákat írom (azaz a FUSES-ban átírtam az INTRC_IO-t HS-re, és a delay-ben 4millió helyet 20milliót írtam), akkor nem megy egyáltalán a soros kommunikáció.

Mi lehet ennek az oka? Szeretném, ha a mikrovezérlő 20MHz-en menne, mert az egyik pin-jén egy jelet mintavételezek, és ezért minél nagyobb órajelet szeretnék használni.
A hozzászólás módosítva: Júl 24, 2014
(#) mrcdcscc válasza Medve hozzászólására (») Júl 26, 2013
Kedves Medve!

Úgy tűnik, hogy ha az "üveg"-et leszorító keretet jobban megnyomom, akkor megjelennek új pixelsorok. Azaz az "üveg" kontaktjával lehet tényleg probléma. Leszedtem az üveget a panelhez szorító fémkeretet, és azt láttam, hogy a panelen nagyon sok kis réz "pad"-van az üveg hosszabbik oldala mentén mindkét oldalon. Az üvegből pedig szintén a két hosszanti oldala mentén 1-1 szivacsszerű, az üveglap vastagsága irányában túlnyúló lap van, aminek a panellel érintkező peremén mintha valami csatlakozó dolog lenne. Mintha ezek érintkeznének a panel réz "pad"-jaivel. Lehet ez a kontaktus a rossz?
Csak nem értem mitől romlottak el bizonyos kontaktusok? Mert eddig egy fejlesztett áramkört próbapanelen tesztelgettem, ott még a 2. és 4. sora a kijelzőnek tökéletes volt, aztán a legyártott áramkör első tesztelésekor volt egy kis probléma, mert volt az áramkörben egy rövidzár rész, amitől a tápegység egyből lekapcsolt, viszont azóta már a 2. és 4. sorból is csak az alsó 4 pixelsor jelenik meg. Lehet ez okozta a problémát?
Ezekkel a kontaktusokkal lehet valamit csinálni?
(#) mrcdcscc válasza _vl_ hozzászólására (») Júl 19, 2013
Kedves hozzászólók. Nem tudom miért, de mostmár működik.
(#) mrcdcscc válasza potyo hozzászólására (») Júl 18, 2013
16F1829
(#) mrcdcscc válasza potyo hozzászólására (») Júl 18, 2013
Azt nem írtam, de az interrupt-on-change próbánál felfutó élere történő megszakítást állítottam be. De próbálkozom tovább, és kipróbálgatom a javaslatokat.
(#) mrcdcscc válasza kissi hozzászólására (») Júl 18, 2013
Elnézést, a Pic kezdőknek akartam beírni, csak siettem, és nem olvastam végig a fórum címet.

A tekerés irányát úgy próbálom meghatározni, hogy ehhez az egértekerőhöz van egy infraled, és ehhez egy tokba épített 2 fototranzisztor van. Kipróbáltam, hogy figyelem külön-külön a PIC azon lábait, amikre a fototranzisztor van kötve, és ha a jelszint magas, akkor a neki megfelelő LED-et felkapcsolom, ha meg alacsony, akkor lekapcsolom (a jobb érthetőség kedvéért a PIC RB5 és RB6 lábára vannak kötve a fototranzisztork, a RC0 és RC1 lábra egy-egy LED, és az RB5 láb jelszintjeinek függvényében kapcsolgatom az RC0-ra kötött LED-et, és az RB6 láb jelszintjének függvényében kapcsolgatom az RC1-re kötött .LED-et). És ahogy szép lassan tekertem az egértekerőt, akkor először felkapcsolódik az egyik LED, majd a másik is, majd lekapcsolódik az 1. LED, majd lekapcsolódott a 2. LED is. Úgyhogy elvileg jól működik a dolog.
Ezután kipróbáltam, hogy interrupt-on-change-re kötöttem az RB6-os fototranziszort, és az interrupton belül a másik jelszintjének függvényében a 8db PORTC-re kötött LED-eken egymás után jobbról balra vagy balról jobbra léptetem a felkapcsolt LED-et, de ez már nem működött, állandó irányú tekerés esetén is felváltva villódzott az egymás melletti LED-ek, van hogy továbblépett, de ott megint az egymás mellettiek villództak a tekerés hatására.
Úgyhogy emiatt már az utolsó tippem az, hogy az okozhatja a problémát, hogy van egy rész, amikor a tekerés hatására a PIC lábán a tiltott tartományba esik a feszültség, és ez okozza bajt.
(#) mrcdcscc hozzászólása Júl 18, 2013
Sziasztok!

A PIC-em adatlapjának DC Characteristics részében az Input Low Voltage-hoz max 0.8 V van írva, a Input High Voltage-hoz min 2V. Azt szeretném megkérdezni, hogy ha a PIC lábára 0.8-2V közti feszültség jut éppen, és lekérdezem a PIN állapotát, akkor most arra mit fogok kapni?

Onnan jön ez a problémám, hogy egy egér tekerőgombját a hozzá tartozó infraled+2 db egybeépített fototranzisztor együttessel szeretném felhasználni, és ahogy tekerem szép lassan a tekerőt, akkor a fototranzisztoron (attól függően, hogy a lyukacsos tárcsán keresztül mennyi infrafény jut rá), más más feszültség esik, azaz a PIC-en lábán 0.2-4.5V- ig mindent mérek a tekerő helyzetének függvényében. És az a problémám, hogy lehet hogy emiatt, de nem működik a tekerés irányának meghatározása.
(#) mrcdcscc hozzászólása Júl 14, 2013
Sziasztok!

Van egy 4soros, soronként 20 karakteres LCD kijelző modulom DEM 20486 SYH-LY/V.
PIC-cel vezérelem. Az a problémám, hogy az első és 3. sorban a karakterek felső felét írja csak ki, a 2. és 4. sorban rendesen a teljes karaktereket. Találkozott már valaki ilyennel? Rossz a modul, vagy valahogy elállítódott?
(#) mrcdcscc válasza mrcdcscc hozzászólására (») Júl 14, 2013
Viszont most hogy már nekem is van CCS 5, kipróbáltam az IOC funkciót PORTB 4-es pinjére, aztán a 7-es pinjére is, de itt már a lefutó élnél is belemegy a megszakítást lekezelő ciklusba. Megírtam a teljes programot MPLAB-ban assembly-ben, és annál is úgy működött, hogy a lefutó élre is belement a megszakításba. Ez viszont már valami CHIP probléma lehet.
(#) mrcdcscc válasza Sasmadár hozzászólására (») Júl 14, 2013
Kedves Sasmadár!

Kipróbáltam, és ahogy sejtettem, így is tökéletesen működik élőben is. Csak a felfutó élre indul az interrupt, és csak egyszer fut le egy felfutó élre.
(#) mrcdcscc válasza mrcdcscc hozzászólására (») Júl 14, 2013
Egy kis kiegészítés az előző hozzászólásomhoz. Először meghatároztam, hogy milyen chip kell a feladathoz, és meg is vettem. Aztán azért kell a PORTB-s IOC, mert előre ittam a medve bőrére, és mivel láttam a 16F1829 adatlapján, hogy a PORTB-n is van IOC, én oda terveztem azokat a dolgokat, amihez az IOC kell. És már le is gyártottam a nyákot, és ezután kezdtem neki a vezérlőprogram megírásához. Akkor szembesültem azzal, hogy a nekem meglevő CCS v4.086 nem is ismeri ezt a chip-et. Akkor ami frissebb verzióhoz "hozzájutottam", az a v4.114 volt. Ez már ismerte, bár azt a header file alapján rögtön furcsáltam, hogy miért csak a PORTA-s IOC-t ismeri. Mindenesetre elkeztem próbálkozni a PORTA-s IOC-vel, ami nem sikerült vele. Akkor írtam ASM-ben ilyen LED villogtatást az IOC tesztelésére, és az működött mind a PORTA, mind PORTB esetén. Azaz a chip az jó. Úgyhogy tovább próbálkoztam a CCS-el PORTA-s IOC-t csinálni, hátha csak én rontottam el valamit, és jártam ezt a fenti kanosszajárást.

Mindenesetre most ma hozzájutottam az 5-ös CCS-hez köszönhetően Nektek. Úgyhogy mostmár menni fog egyszerűen a dolog. Köszönöm segítségeteket.
A hozzászólás módosítva: Júl 14, 2013
(#) mrcdcscc válasza sysy hozzászólására (») Júl 14, 2013
Kedves sysy.

Ez igaz, de nekem 2 db PORTB lábon kell IOC funkció majd.

Le is írom, hogy mihez csinálom ezt az egészet. Egy majdan saját használatú nyák levilágító berendezés vezérlését tervezem. A mikrovezérlő a következőképpen fog működni:
Egy egérből kiszedtem a görgetőgomb és az alatt levő nyomógomb részt (a görgetővel együtt az ott levő Infraled-et és annak jelét vevő fototranzisztort, ami ráadásul olyan kivitelű, hogy kettő az egyben, mivel kettő kell ahhoz, hogy az egérgomb forgatásának irányát is meg lehessen határozni). Namost ha benyomkodom a gombot, azzal kiválaszthatom, hogy a levilágítás időtartamát, vagy a melegítés időtartamát, vagy a melegítés hőmérsékletét akarom beállítani. Ezek közül amelyik ki van választva, annak az időtartamát meg a görgő görgetésével tudom beállítani. Lesz még egy nyomógomb, aminek megnyomásával a levilágítás vagy a melegítés indítható.
A levilágítás alatt azt értem, hogy a fóliára kinyomtatott áramkört ráteszem a lakkal befújt nyáklapra, és UV lámpával világítom a beállított ideig.
A melegítés alatt pedig azt értem, hogy a lakkal befújt nyáklapot valamilyen hőforrással (még nem tudom mi lenne a legalkalmasabb erre a célra) melegítem, hogy a lakk minél hamarabb megszáradjon a nyáklapon.
Ez egy ládaszerű berendezés volna, aminek a lehajtható tető részében lenne a melegítő rész, az alja felén meg a levilágító UV csövek.
Mert jelenleg filctollal rajzolom az áramkört a nyákra, és maratom le utána vas-kloriddal a felesleges rezet. És ez a filctollas áramkör átrajzolás meglehetősen időigényes.
A berendezésen a kapcsolattartást egy LCD kijelző biztosítja (8bites üzemmódra terveztem meg a nyákot, aztán jutott eszembe, hogy 4bittel is lehet vezérelni). Kell még 2 pin az LCD enable és utasítás/adat pinjéhez. Kell 1-1 pin a funkció választó nyomógombnak illetve a start gombnak, ami a levilágítást vagy a melegítést indítja. Kell 2 pin a görgőnek. Kell 2 pin az Uv csöveket illetve a melegítő egység reléjét kapcsoló tranzisztornak, valamint 1 pin a hőmérséklet mérő szenzornak (a DS1820 hőmérséklet szenzorral 1 pinen is lehet kommunikálni). És ekkor 17 pin-nél járunk. Kell még 1-1 pin a föld és a Vdd-nek. Így jött ki, hogy egy 20 pin-es chip kell.
Mondjuk első körben csak a levilágító részt fogom megépíteni, a melegítést majd megoldom manuálisan egy hajszárítóval kezdetben. Csak úgy akartam ezt az egészet megcsinálni, hogy alkalmas legyen melegítéses funkcióra is. A nyákra terveztem egy 4 pinen csatlakozási lehetőséget ICSP (áramkörön belüli programozás) célra, hogy ha esetleg módosítani kell a chip-en a programot, akkor azt is meg tudjam csinálni.
2 éve kezdtem tanulgatni ezt a mikrovezérlős dolgot, mert érdekelt, egyébként gépészmérnök vagyok, és nagyon élvezem ezt a dolgot. Hála istennek itt van ez az internet is, ahol csomó tudást össze lehet szedni, köszönhetően azon önzetlen embereknek, akik ilyen kis bevezető leírásokat, jegyzeteket készítenek, illetve akik pl. ilyen fórumokon is segítenek azoknak, akik megakadtak valamiben. Kár, hogy nem fiatalabb koromban találták ki ezt az internetet.
(#) mrcdcscc válasza Sasmadár hozzászólására (») Júl 14, 2013
Kedves Sasmadár!

Az általad a v5.09-el fordított program tökéletesen működik. Csak felfutó élre megy bele az iterruptba.

A v5.09-es CCS verzióból csatolt 16F1829.h header file-ban pedig már látom, hogy a PORTB IOC-je is benne van, nem csak a PORTA-é, mint nekem a v4.114 verzióban.

Bárcsak nekem is v5.09-es verzióm lenne, és nem vesztegettem volna el 2 hetet ezzel az IOC-vel a rossz működés miatt. Annak ellenére, hogy tudjuk, hogy a v5.09-ben már jól működik ez a 16F1829 chip esetén, ennek ellenére nekem ASM-ben kell ezt megírnom a v4.114-es CCS-emen belül, mert ráadásul nekem a PORTB-n kell ez a IOC funkció.

Azt még kipróbálhatnánk, hogy a v5.09 verzión belül kell-e az interruptban a PORT olvasása. Mert a 16F1829-es adatlapjában az IOC fejezetben én ezt nem olvastam, hogy "be KELL olvasni a portot, hogy a belső tárolóban elmentésre kerüljön az állapota. És ehhez képest, ha megváltozik, akkor hívja megint a megszakítást." Azaz ki kellene úgy is próbálni, hogy az interruptnál meghívott szubrutin elejéről ki kellene törölni az input_a() sort.
(#) mrcdcscc válasza Sasmadár hozzászólására (») Júl 13, 2013
Köszi, ezt már csak holnap próbálom ki, mert már elraktam a próbapanelt meg programozót. Jó éjt.
(#) mrcdcscc válasza Sasmadár hozzászólására (») Júl 13, 2013
Beírnál a program elejére egy #byte IOCAF = 0x393 sort, a megszakítást lekezelő szubrutin végére pedig egy IOCAF = 0x00 sort? És akkor ezzel szoftveresen törölnénk a megszakítás flag-et, és akkor szerintem már nem villognának felváltva a 4-4 LED. Ugyanis szerintem most is csak a felfutó élre vált a LED, csak mivel a megszakítást jelző flag nem lett törölve, így ahogy kijön a megszakítást lekezelő szubrutinból a program futás, már megy is vissza, mert azt hiszi, egy újabb felfutó él jött.

És akkor leellenőrizném a futását a chip-en élőben.
Szerintem ezzel meg is lesz oldva a dolog.

Illetve ha van 5.09-es CCS-ed, elküldenéd az ebben levő 16F1829.h header filet (valahol a Program Files\PICC\Devices könyvtárban vannak)? Meg szeretném nézni, hogy abban már benne van-e a PORTB-re vonatkozó IOC is. Ugyanis a v4.114-ben a header fileban csak a PORTA-ra vonatkozó IOC van benne, a chip adatlapja alapján (illetve Assembly-ben meg is csináltam) a PORTB-n is van IOC megszakítás.
A hozzászólás módosítva: Júl 13, 2013
(#) mrcdcscc válasza Sasmadár hozzászólására (») Júl 13, 2013
Kipróbáltam a hex file-t. Azt csinálja, hogy kb 5 másodpercig világít az összes lámpa. Majd kialszik. Ezután ha az optokapcsolót kikapcsolom (és ekkor a PORTA,2-re magas jel jut), akkor elkezd váltakozva hol az első 4, hol a második 4 LED lámpa világítani. Azaz szerintem mostmár bement az interruptba, csak valószínűleg most is úgy akarta törölni az IOC flag-et, hogy az INTCON-ban törli a 0-s IOCIF bit-et, ami viszont nem törölhető, csak olvasható. És a chip meg folyamatosan azt látja emiatt, hogy megint van egy megszakítás (mivel a vlóságban az IOCIF bit éréke 1 maradt), és újra bemegy a megszakítást lekezelő interrupt-ba, és átváltja az egyik 4 LED világítását a másik 4 LED világítására. Érdekes, hogy még az 5.09-ben sem tudták ezt az IOC-t normálisan megcsinálni.

Feltöltenéd az lst file-t is? Megnézném benne, hogy hogy törli az interrupt flag-et a megszakítás szubrutinjában.
A hozzászólás módosítva: Júl 13, 2013
(#) mrcdcscc válasza sysy hozzászólására (») Júl 12, 2013
Kedves sysy és Sasmadár!

Köszönöm, hogy foglalkoztok a problémámmal. Én sem ülök a babérjaimon, hanem próbálom kideríteni a hiba okát. A Bővebben: Link hozzászólásomban levő kis tesztprogramnak megnéztem a CCS C v4.114-ben történő fordításakor kapott lst file-ját:

  1. CCS PCM C Compiler, Version 4.114, 93460303               12-júl.-13 20:48
  2.  
  3.                Filename: D:\mikrovezerlok\levilagito\25_PIC16F1829_proba\25_PIC16F1829_proba.lst
  4.  
  5.                ROM used: 141 words (2%)
  6.                          Largest free fragment is 2048
  7.                RAM used: 14 (3%) at main() level
  8.                          27 (5%) worst case
  9.                Stack:    3 worst case (1 in main + 2 for interrupts)
  10.  
  11. *
  12. 0000:  MOVLP  00
  13. 0001:  GOTO   051
  14. 0002:  NOP
  15. *
  16. 0004:  CLRF   03
  17. 0005:  CLRF   0A
  18. 0006:  MOVLB  00
  19. 0007:  MOVF   77,W
  20. 0008:  MOVWF  20
  21. 0009:  MOVF   78,W
  22. 000A:  MOVWF  21
  23. 000B:  MOVF   79,W
  24. 000C:  MOVWF  22
  25. 000D:  MOVF   7A,W
  26. 000E:  MOVWF  23
  27. 000F:  BTFSS  0B.3
  28. 0010:  GOTO   013
  29. 0011:  BTFSC  0B.0
  30. 0012:  GOTO   01C
  31. 0013:  MOVF   20,W
  32. 0014:  MOVWF  77
  33. 0015:  MOVF   21,W
  34. 0016:  MOVWF  78
  35. 0017:  MOVF   22,W
  36. 0018:  MOVWF  79
  37. 0019:  MOVF   23,W
  38. 001A:  MOVWF  7A
  39. 001B:  RETFIE
  40. 001C:  MOVLP  00
  41. 001D:  GOTO   034
  42. .................... #include <16F1829.h>
  43. .................... //////// Standard Header file for the PIC16F1829 device ////////////////
  44. .................... #device PIC16F1829
  45. .................... #list
  46. ....................  
  47. .................... #fuses INTRC_IO, NOLVP, NOWDT, NOPROTECT,NOMCLR  
  48. .................... #use delay(clock=4000000)
  49. 001E:  MOVLW  20
  50. 001F:  MOVWF  05
  51. 0020:  MOVLW  0A
  52. 0021:  MOVWF  04
  53. 0022:  MOVF   00,W
  54. 0023:  BTFSC  03.2
  55. 0024:  GOTO   033
  56. 0025:  MOVLW  01
  57. 0026:  MOVWF  78
  58. 0027:  CLRF   77
  59. 0028:  DECFSZ 77,F
  60. 0029:  GOTO   028
  61. 002A:  DECFSZ 78,F
  62. 002B:  GOTO   027
  63. 002C:  MOVLW  4A
  64. 002D:  MOVWF  77
  65. 002E:  DECFSZ 77,F
  66. 002F:  GOTO   02E
  67. 0030:  GOTO   031
  68. 0031:  DECFSZ 00,F
  69. 0032:  GOTO   025
  70. 0033:  RETURN
  71. ....................  
  72. .................... int gomb = 0;
  73. ....................  
  74. .................... #INT_RA
  75. .................... void interrupt_kezeles(void)
  76. .................... {
  77. ....................       input_a();
  78. 0034:  MOVLW  FF
  79. 0035:  MOVLB  01
  80. 0036:  MOVWF  0C
  81. ....................       if (gomb==1) //egyik felfutó élre
  82. 0037:  MOVLB  00
  83. 0038:  DECFSZ 25,W
  84. 0039:  GOTO   042
  85. ....................          {
  86. ....................             gomb=0;  
  87. 003A:  CLRF   25
  88. ....................              output_c(0xf0);
  89. 003B:  MOVLB  01
  90. 003C:  CLRF   0E
  91. 003D:  MOVLW  F0
  92. 003E:  MOVLB  02
  93. 003F:  MOVWF  0E
  94. ....................          }
  95. ....................          else //másik felfutó élre
  96. 0040:  GOTO   049
  97. 0041:  MOVLB  00
  98. ....................          {
  99. ....................             gomb=1;  
  100. 0042:  MOVLW  01
  101. 0043:  MOVWF  25
  102. ....................             output_c(0x0f);
  103. 0044:  MOVLB  01
  104. 0045:  CLRF   0E
  105. 0046:  MOVLW  0F
  106. 0047:  MOVLB  02
  107. 0048:  MOVWF  0E
  108. ....................            
  109. ....................          }
  110. ....................          
  111. ....................        delay_ms(10);  
  112. 0049:  MOVLW  0A
  113. 004A:  MOVLB  00
  114. 004B:  MOVWF  2A
  115. 004C:  CALL   01E
  116. ....................       CLEAR_INTERRUPT(INT_RA);
  117. 004D:  BCF    0B.0
  118. .................... }
  119. ....................  
  120. ....................  
  121. ....................    
  122. 004E:  BCF    0B.0
  123. 004F:  MOVLP  00
  124. 0050:  GOTO   013
  125. .................... void main(void)  
  126. .................... {
  127. 0051:  CLRF   05
  128. 0052:  CLRF   04
  129. 0053:  MOVLW  1F
  130. 0054:  ANDWF  03,F
  131. 0055:  MOVLW  6C
  132. 0056:  MOVLB  01
  133. 0057:  MOVWF  19
  134. 0058:  MOVLB  00
  135. 0059:  CLRF   25
  136. 005A:  MOVLB  03
  137. 005B:  CLRF   0C
  138. 005C:  CLRF   0E
  139. 005D:  MOVLB  02
  140. 005E:  CLRF   12
  141. 005F:  CLRF   11
  142. 0060:  CLRF   14
  143. 0061:  CLRF   13
  144. ....................    int seged1, seged2;
  145. ....................    gomb=1;
  146. 0062:  MOVLW  01
  147. 0063:  MOVLB  00
  148. 0064:  MOVWF  25
  149. ....................    output_c(0xff);
  150. 0065:  MOVLB  01
  151. 0066:  CLRF   0E
  152. 0067:  MOVLW  FF
  153. 0068:  MOVLB  02
  154. 0069:  MOVWF  0E
  155. ....................    delay_ms(1000);
  156. 006A:  MOVLW  04
  157. 006B:  MOVLB  00
  158. 006C:  MOVWF  28
  159. 006D:  CLRF   24
  160. 006E:  BTFSC  0B.7
  161. 006F:  BSF    24.7
  162. 0070:  BCF    0B.7
  163. 0071:  MOVLW  FA
  164. 0072:  MOVWF  2A
  165. 0073:  CALL   01E
  166. 0074:  BTFSC  24.7
  167. 0075:  BSF    0B.7
  168. 0076:  DECFSZ 28,F
  169. 0077:  GOTO   06D
  170. ....................    output_c(0x00);
  171. 0078:  MOVLB  01
  172. 0079:  CLRF   0E
  173. 007A:  MOVLB  02
  174. 007B:  CLRF   0E
  175. ....................    
  176. ....................    ENABLE_INTERRUPTS(INT_RA2_L2H);
  177. 007C:  BSF    0B.3
  178. 007D:  MOVLB  07
  179. 007E:  BSF    14.2
  180. 007F:  BCF    15.2
  181. ....................    ENABLE_INTERRUPTS(GLOBAL);
  182. 0080:  MOVLW  C0
  183. 0081:  IORWF  0B,F
  184. ....................    input_a();  
  185. 0082:  MOVLW  FF
  186. 0083:  MOVLB  01
  187. 0084:  MOVWF  0C
  188. ....................  
  189. ....................    while (TRUE)
  190. ....................     {
  191. ....................           seged1=0;
  192. 0085:  MOVLB  00
  193. 0086:  CLRF   26
  194. ....................           seged2=0;
  195. 0087:  CLRF   27
  196. ....................           seged1=0;
  197. 0088:  CLRF   26
  198. ....................           seged2=0;
  199. 0089:  CLRF   27
  200. ....................           seged1=0;
  201. 008A:  CLRF   26
  202. ....................           seged2=0;
  203. 008B:  CLRF   27
  204. ....................      }  
  205. 008C:  GOTO   086
  206. .................... }
  207. ....................  
  208. ....................  
  209. ....................  
  210. 008D:  SLEEP
  211.  
  212. Configuration Fuses:
  213.    Word  1: 3F84   INTRC_IO NOWDT PUT NOMCLR NOPROTECT NOCPD BROWNOUT NOCLKOUT IESO FCMEN
  214.    Word  2: 1EFF   NOWRT PLL_SW STVREN BORV19 NODEBUG NOLVP


Ebben a következő furcsaságokat találtam:
1. A 004D sorban BCF 0B.0 van írva a clear_interrupt(INT_RA) megfelelőjének, ami BCF INTCON.IOCIF-et jelent, azaz törli a IOCIF flag-et. Azonban a PIC16F1829 chip adatlapjában a 13.3 Interrupt Flags fejezetben írják, hogy "The IOCIF bit of the INTCON register reflects
the status of all IOCAFx and IOCBFx bits." Illetve a 13.4 Clearing Interrupt Flags fejezetben
"The individual status flags, (IOCAFx and IOCBFx bits),
can be cleared by resetting them to zero." Továbbá a 8.6.1 INTCON REGISTER fejezetben "Note 1: The IOCIF Flag bit is read-only and cleared when all the Interrupt-on-Change flags in the IOCxF register have been cleared by software." Azaz szerintem nem úgy kell törölni az IOC megszakítás flag-jét, hogy törlöm az INTCON regiszter IOCIF bit-jét, hanem az IOCAFx regisztereket törlöm.

2. A 007D program sorban: MOVLB 07 = Bank 7 kiválasztása
007E programsorban BSF 14.2 = BSF IOCBP.2 azaz a PORTB 2-es pinjének pozitív átmenetének a figyelése!!! Azaz nem a PORTA 2-es pinjének figyelését állította be, hanem a PORTB 2-es pinjének.

3. A 0080 és 0081-es sor voltaképp 1-re állítja az INTCON regiszter GIE és PEIE bitjét. Hogy a PEIE bit-et minek kell 1-re állítani, azt nem tudom. Amikor ezt a teszt programot Assembly-be írtam meg, nem állítottam a PEIE bit-et 1-re, mégis működött a program.

4. A gomb változót csak arra használom, hogy az interruptot lekezelő szubrutinban hol egyik, hol másik sort hajtassam végre, azaz hol az első 4, hol a második 4 LED-et kapcsoljam fel, hogy lássam mikor lép be az interrupt-ba. Csak éppen egyszer sem lép be.

5. Kipróbáltam sysy a kódodat, de az sem működik.

6. A CCS C programnak megvolt a v4.108 verziója, de az még nem ismerte a PIC16F1829-es chipet. A legfrissebb CCS, amihez hozzájutottam, és már ismerte ezt a chipet, az a v4.114. Valószínűnek tartom, hogy ebben jelenhetett ez a chip meg először, és nem jól csinálták meg. Lehet a CCS C v5-össel már jól menne, de az sajnos nincs meg nekem.
A hozzászólás módosítva: Júl 12, 2013
(#) mrcdcscc válasza sysy hozzászólására (») Júl 12, 2013
Kedves sysy!

Csak most volt időm tovább foglalkozni a dologgal. Beolvastam a PORTA-t még a main-ben is, meg az interruptban is, de nem működik. Bele sem megy az interruptba.
A program bekapcsoláskor 1 másodpercre felkapcsolja a PORTC-n levő 8 LED-et, majd lekapcsolja. Ezt követően a PORTA2-re kötött optokapcsoló kikapcsolásával a PORTA2 magasra egy, meg kellene hívódnia az interruptnak, ami a PORTC-n levő LED-ek felét kapcsolgatja tesztelés céljából, de nem kapcsolódnak fel, azaz be sem lép az interruptba. Pedig a chip PORTA2-es lábán mérem is az alacsony és magas jelszintet.
Mi hiányzik még a programból?

  1. #include <16F1829.h>
  2. #fuses INTRC_IO, NOLVP, NOWDT, NOPROTECT,NOMCLR
  3. #use delay(clock=4000000)
  4.  
  5. int gomb = 0;
  6.  
  7. #INT_RA
  8. void interrupt_kezeles(void)
  9. {
  10.       input_a();
  11.       if (gomb==1) //egyik felfutó élre
  12.          {
  13.             gomb=0;
  14.              output_c(0xf0);
  15.          }
  16.          else //másik felfutó élre
  17.          {
  18.             gomb=1;
  19.             output_c(0x0f);
  20.            
  21.          }
  22.        
  23.        delay_ms(10);
  24.       CLEAR_INTERRUPT(INT_RA);
  25. }
  26.  
  27.  
  28.    
  29. void main(void)
  30. {
  31.    gomb=1;
  32.    output_c(0xff);
  33.    delay_ms(1000);
  34.    output_c(0x00);
  35.  
  36.    ENABLE_INTERRUPTS(INT_RA2_L2H);
  37.    ENABLE_INTERRUPTS(GLOBAL);
  38.    input_a();
  39.    int seged1, seged2;
  40.    while (TRUE)
  41.     {
  42.           seged1=0;
  43.           seged2=0;
  44.           seged1=0;
  45.           seged2=0;
  46.           seged1=0;
  47.           seged2=0;
  48.      }  
  49. }
(#) mrcdcscc válasza sysy hozzászólására (») Júl 10, 2013
Kedves sysy!

Köszönöm válaszodat! Viszont nem értem. A beolvasás alatt input_a() utasítást értesz? És ilynkor a port milyen belső tárolóban mentődik el?
(#) mrcdcscc válasza vilmosd hozzászólására (») Júl 10, 2013
De ezzel a #byte direktívával nem csak az első 256 regiszterhez (azaz a BANK0-ban levő regiszterekhez) tudok nevet rendelni?
(#) mrcdcscc válasza efiscp hozzászólására (») Júl 10, 2013
Kedves efiscp!

Nagyon szépen köszönöm, hogy foglalkoztál a problémámmal és válaszoltál, és részben a megérzésed az ASM blokkal igaznak is bizonyult. Ugyanis közben a CCS által készített .lst file átbogarászása során szerencsére rájöttem a problémára. Az interrupt-ot lekezelő void bit16szam_konverzio_BCD(signed int16 bit16_szam) szubrutinban levő ASM blokkban a bankváltást csináltam a 7-es bankra, amit aztán nem váltottam vissza. A CCS viszont a változóimat a 0-ás bank General Purpose Registereben helyezte el. A CCS a LCD_kepernyotorles(); (és egyébként minden más szubrutint) úgy fejezett be, hogy a bank-ot a 0-ásra váltotta vissza, ezért amikor először azt írtam a kódba, és utána jött a változónak az értékadás, akkor jól működött a dolog, fordítva meg nem.

Az ASM blokk azért kellett bele, mert valamiért a CCS függvényeivel megírt interrupt-on-change megszakítás a PORTA,2-es pinen (illetve más PORTA pinen) sem működött rendesen. Ráadásul ezen 16F1829-es chipnek a PORTB-jén is van ilyen interrupt-on-change lehetőség, viszont a CCS-ben ezen chiphez tartozó PIC16F1829.h header file alapján az enable_interrupt() utasításba csak PORTA-t, vagy PORTA-s pineket írhatok, PORTB-t egyáltalán nem. Nekem meg majd a PORTB kell.
Az, hogy CCS saját függvényeit felhasználva nem működik az interrupt-on-change megszakítás rendesen szintén megírtam ide a fórumba Bővebben: Link, de arra senki nem válaszolt.
Pedig lehet csak én rontok el ott is valamit, és örülnék, ha legalább a PORTA menne a CCS beépített függvényeivel.
A hozzászólás módosítva: Júl 10, 2013
(#) mrcdcscc válasza sysy hozzászólására (») Júl 10, 2013
Megváltoztattam a bit16 változónevet másra, de nemez volt a gond. Viszont még tovább kísérletezve azt vettem észre, hogy ha az interrupton belul a bit16szam_konverzio_BCD() függvényt úgy hívom meg, hogy bit16szam_konverzio_BCD(9876), akkor szépen kiírja a kijelzőre a 9876 számokat, viszont ha a
kijelzendoertek=9876;
LCD_kepernyotorles();
bit16szam_konverzio_BCD(kijelzendoertek);
módon hívom meg, akkor 0-t ad át függvényparaméternek.

Ha viszont felcserelem ebből a 3 sorból az első kettőt, akkor meg már jól működik:
LCD_kepernyotorles();
kijelzendoertek=9876;
bit16szam_konverzio_BCD(kijelzendoertek);
Azaz ha a változónak közvetlenül az előtt adok értéket, mielőtt meghívnám a bit16szam_konverzio_BCD() szubrutint.

Miért nem mindegy a sorrend?
(#) mrcdcscc válasza mrcdcscc hozzászólására (») Júl 10, 2013
Tovább tesztelve a programot úgy látom, hogy az interruptnak a szubrutinjában meghívva a bit16szam_konverzio_BCD(kijelzendoertek) szubrutint az lefut, de nem adódik át neki a kijelzendoertek, ezert ir ki 0-t. Valaki meg tudná magyarázni nekem, hogy mi az oka annak, hogy a szubrutint meghívva miért nem adódik át a paraméterben megadott érték?
A hozzászólás módosítva: Júl 10, 2013
(#) mrcdcscc hozzászólása Júl 9, 2013
Kedves Forumtársak!

A CCS C compiler-rel van gondom. A PIC16F1829 mikrovezérlő PORTA:2-es pinjén érkező felfutó él esetén megszakítás hívódik meg. Ez már jól müködik. A megszakításon belül az egyik felfutó élnél az 123 számnak kell megjelennie az LCD kijelzőn, ha újra jön egy felfutó él akkor pedig a 9876 számnak kellene megjelennie. Újabb felfutó élre megint az 123 karakter jelenik meg, és így tovább váltakozva (ez tesztelés miatt van). Az 123 karakter egyesével vannak kiiratva az LCD-re, mint különálló számok, és ez működik is. A 9876 számnál viszont egy szubrutin hívódna meg, ami ezt számjegyekre bontja, és ezeket a számjegyek lennének utána kiiratva. Na ez a rész nem működik, csak egy nulla jelenik meg ennél. A szubrutin a main(){} részben meghívva jól működik, akkor kiírja a számjegyeket. A problémám az, hogy nem értem, az interruptban meghívva miért nem működik.
Remélem valaki tud segíteni, és elmondja, miért nem hívódik meg a bit16szam_konverzio_BCD szubrutinom az interrupt-ot lekezelő szubrutinon belül, vagy ha meg is hívódik, akkor miért nem kerülnek a "tízezres, ezres, szazas, tizes, egyes" globális változókba bele az értékek. Bemásoltam a programot (az LCD_inicializalas szubrutint nem, mert elég hosszú, és az működik).
(Megjegyzés: Az LCD-t 4 biten vezérlem, ezért van az, hogy a karaktert reprezentáló byte felső és alsó 4 bitjét egymás után küldöm az LCD-nek)

  1. #include <16F1829.h>
  2. #fuses INTRC_IO, NOLVP, NOWDT, NOPROTECT,NOMCLR
  3. #use delay(clock=4000000)
  4.  
  5. int gomb = 0;
  6. signed int16 szamlalo = 5;
  7. int8 tizezres, ezres, szazas, tizes, egyes = 0;
  8.  
  9. //LCD vezérléséhez használt pinek
  10. #define LCD_ENABLE_PIN  PIN_A5  //
  11. #define LCD_RS_PIN      PIN_A4  //rs=register select RS=0 instruction register, RS=1 data register
  12. //#define LCD_RW_PIN      PIN_C2  //read/write RW=0 write, RW=1 read
  13. #define LCD_DATA4       PIN_C4  
  14. #define LCD_DATA5       PIN_C5                                    
  15. #define LCD_DATA6       PIN_C6                                    
  16. #define LCD_DATA7       PIN_C7
  17.  
  18. void LCD_enable(void)
  19. {
  20.     output_bit(LCD_ENABLE_PIN,1);
  21.     delay_us(10);
  22.     output_bit(LCD_ENABLE_PIN,0);
  23.     delay_us(10);
  24. }
  25.  
  26. void LCD_memoriacim(int8 sor, int8 oszlop) //adott sor-oszlop-ba teszi a kurzort
  27. {
  28.       int memoriacim;
  29.       if (sor==1) memoriacim=oszlop-1;
  30.       if (sor==2) memoriacim=63+oszlop;
  31.       if (sor==3) memoriacim=19+oszlop;
  32.       if (sor==4) memoriacim=83+oszlop;
  33.      
  34.        output_bit(LCD_ENABLE_PIN, 0);
  35.        output_bit(LCD_RS_PIN, 0);
  36.   //     output_bit(LCD_RW_PIN, 0);
  37.        
  38.        output_bit(LCD_DATA4, bit_test(memoriacim,4));
  39.        output_bit(LCD_DATA5, bit_test(memoriacim,5));
  40.        output_bit(LCD_DATA6, bit_test(memoriacim,6));
  41.        output_bit(LCD_DATA7, 1);
  42.        
  43.        LCD_enable();
  44.        
  45.        output_bit(LCD_DATA4, bit_test(memoriacim,0));
  46.        output_bit(LCD_DATA5, bit_test(memoriacim,1));
  47.        output_bit(LCD_DATA6, bit_test(memoriacim,2));
  48.        output_bit(LCD_DATA7, bit_test(memoriacim,3));
  49.  
  50.        LCD_enable();
  51.        delay_us(100);
  52.        
  53. }
  54.  
  55. void  LCD_kepernyotorles(void)
  56. {
  57.    output_bit(LCD_ENABLE_PIN, 0);
  58.    output_bit(LCD_RS_PIN, 0);
  59.        
  60.    output_bit(LCD_DATA4, 0);
  61.    output_bit(LCD_DATA5, 0);
  62.    output_bit(LCD_DATA6, 0);
  63.    output_bit(LCD_DATA7, 0);
  64.    LCD_enable();
  65.  
  66.    output_bit(LCD_DATA4, 1);
  67.    LCD_enable();
  68.    delay_ms(10); //FONTOS!!!
  69. }
  70.  
  71. void LCD_karakterkiiratas(int8 karakter) //kiiraja az aktualis pozicioba a karaktert, aminek kodolasa mar az LCD karaktertablazata szerinti
  72. {
  73.        output_bit(LCD_ENABLE_PIN, 0);
  74.        output_bit(LCD_RS_PIN, 1);
  75.       // output_bit(LCD_RW_PIN, 0);
  76.        
  77.        output_bit(LCD_DATA4, bit_test(karakter,4));
  78.        output_bit(LCD_DATA5, bit_test(karakter,5));
  79.        output_bit(LCD_DATA6, bit_test(karakter,6));
  80.        output_bit(LCD_DATA7, bit_test(karakter,7));
  81.        
  82.        LCD_enable();
  83.        
  84.        output_bit(LCD_DATA4, bit_test(karakter,0));
  85.        output_bit(LCD_DATA5, bit_test(karakter,1));
  86.        output_bit(LCD_DATA6, bit_test(karakter,2));
  87.        output_bit(LCD_DATA7, bit_test(karakter,3));
  88.        
  89.        LCD_enable();
  90.        delay_us(100); //FONTOS!!!
  91.        
  92. }
  93. void bit16szam_konverzio_BCD(signed int16 bit16) //16 bites elojeles szam konverzioja BCD-be
  94. {
  95.        signed int16 atmeneti=0;
  96.        tizezres=0;
  97.        ezres=0;
  98.        szazas=0;
  99.        tizes=0;
  100.        egyes=0;
  101.        atmeneti=bit16-10000;
  102.        
  103.        while (atmeneti>=0)
  104.        {
  105.             bit16=bit16-10000;
  106.             tizezres++;
  107.             atmeneti=atmeneti-10000;
  108.        }
  109.        
  110.        atmeneti=bit16-1000;
  111.        while (atmeneti>=0)
  112.        {
  113.             bit16=bit16-1000;
  114.             ezres++;
  115.             atmeneti=atmeneti-1000;
  116.        }
  117.        atmeneti=bit16-100;
  118.        while (atmeneti>=0)
  119.        {
  120.             bit16=bit16-100;
  121.             szazas++;
  122.             atmeneti=atmeneti-100;
  123.        }
  124.        atmeneti=bit16-10;
  125.        while (atmeneti>=0)
  126.        {
  127.             bit16=bit16-10;
  128.             tizes++;
  129.             atmeneti=atmeneti-10;
  130.        }
  131.        
  132.        egyes=bit16;
  133. }
  134.  
  135. #INT_RA
  136. void interrupt_kezeles(void)
  137. {
  138.        signed int16 kijelzendoertek=0;
  139.          #ASM
  140.            MOVLB 0x07 ;//  BANKSEL IOCAP;
  141.            MOVLW 0x00; // MOVLW B'00000000' ; PA2 POZITIV INTERRUPT ON CHANGE-RE ALLITVA LETILTÁSA
  142.            MOVWF 0x11; // MOVWF IOCAP;
  143.         #ENDASM
  144.        
  145.         #ASM
  146.             MOVLB 0x07; // BANKSEL IOCAF;
  147.             MOVLW 0x00; // MOVLW B'00000000'; interrupt flag torlese
  148.             MOVWF 0x13; // MOVWF IOCAF;
  149.          #ENDASM
  150.        
  151.          if (gomb==1) //egyik felfutó élre
  152.          {
  153.             gomb=0;
  154.            
  155.             LCD_kepernyotorles();
  156.                
  157.             LCD_karakterkiiratas(49);//1-es karakter
  158.             LCD_karakterkiiratas(50);//2-es karakter
  159.             LCD_karakterkiiratas(51);//3-as karakter
  160.          }
  161.          else //másik felfutó élre
  162.          {
  163.             gomb=1;
  164.             kijelzendoertek=9876;
  165.            
  166.             LCD_kepernyotorles();
  167.            
  168.             bit16szam_konverzio_BCD(kijelzendoertek);
  169.             if (tizezres!=0)
  170.                LCD_karakterkiiratas(tizezres+48);
  171.             if (tizezres!=0 || ezres!=0)
  172.                LCD_karakterkiiratas(ezres+48);
  173.             if (tizezres!=0 || ezres!=0 || szazas!=0)
  174.                LCD_karakterkiiratas(szazas+48);
  175.             if (tizezres!=0 || ezres!=0 || szazas!=0 || tizes!=0)
  176.                LCD_karakterkiiratas(tizes+48);
  177.             LCD_karakterkiiratas(egyes+48);
  178.          }
  179.      
  180.        delay_ms(10);
  181.        #ASM
  182.           MOVLB 0x07 ;//  BANKSEL IOCAP;
  183.           MOVLW 0x04; // MOVLW B'00000100' ; PA2 POZITIV INTERRUPT ON CHANGE-RE ALLITVA
  184.           MOVWF 0x11; // MOVWF IOCAP;
  185.           MOVLW 0x88;
  186.           MOVWF 0x0B; //INTCON
  187.         #ENDASM
  188.      
  189. }
  190.  
  191.  
  192.    
  193. void main(void)
  194. {
  195.    gomb=1;
  196.    szamlalo=9876;
  197.    
  198.    //LCD inicializálás
  199.    delay_ms(2000);
  200.    lcd_incializalas();
  201.    LCD_memoriacim(1,1);
  202.                
  203.        
  204.    bit16szam_konverzio_BCD(szamlalo);  
  205.    if (tizezres!=0)
  206.          LCD_karakterkiiratas(tizezres+48);
  207.    if (tizezres!=0 || ezres!=0)
  208.          LCD_karakterkiiratas(ezres+48);
  209.    if (tizezres!=0 || ezres!=0 || szazas!=0)
  210.          LCD_karakterkiiratas(szazas+48);
  211.    if (tizezres!=0 || ezres!=0 || szazas!=0 || tizes!=0)
  212.          LCD_karakterkiiratas(tizes+48);
  213.    LCD_karakterkiiratas(egyes+48);
  214.  
  215.    //PORTA:2-n IOC interrupt inicializálása
  216.    #ASM
  217.       MOVLB 0x00; // BANKSEL 0
  218.       CLRF 0x0C ; // PORTA torlese
  219.       MOVLB 0x02 ; // BANKSEL 2
  220.       CLRF 0x0C ; // clear LATA
  221.       MOVLB 0x03; // BANKSEL ANSELA ;
  222.       CLRF 0x0C; // digital I/O
  223.       MOVLB 0x01; //  BANKSEL TRISA ;
  224.       MOVLW 0x04 ; // Set RA2 as inputs, tobbi output
  225.       MOVWF 0x0C;      // MOVWF TRISA
  226.       MOVLB 0x07 ;//  BANKSEL IOCAP;
  227.       MOVLW 0x04; // MOVLW B'00000100' ; PA2 POZITIV INTERRUPT ON CHANGE-RE ALLITVA
  228.       MOVWF 0x11; // MOVWF IOCAP;
  229.  
  230.       MOVLW 0x08;
  231.       MOVWF 0x0B; //INTCON
  232.    #ENDASM
  233.    ENABLE_INTERRUPTS(GLOBAL);
  234.  
  235.    int seged1, seged2;
  236.    while (TRUE)
  237.    {
  238.           seged1=0;
  239.           seged2=0;
  240.           seged1=0;
  241.           seged2=0;
  242.           seged1=0;
  243.           seged2=0;
  244.    }
  245.    
  246. }
A hozzászólás módosítva: Júl 10, 2013
(#) mrcdcscc hozzászólása Júl 7, 2013
Kedves Moderátorok

Pénteken nyitott témám (PIC interrupt On Change probléma) lezárásra is került rögtön, és a témaindító hozzászólásom ide került át. Szombaton még láttam is a hozzászólásom itt, már nem. Hova tűnt?
(#) mrcdcscc hozzászólása Júl 5, 2013
Az előző nyitó hozzászólásomban bennemaradt a megszakításkezelő szubrutinban a output_c(0x03); sor, de azt csak próbaként írtam be, hogy hátha az if-be nem megy bele a program (bár akkor az if utáni else-be be kellene mennie). Azt most nem kell figyelembe venni, csak már nem tudtam a nyitó hozzászólásomat módosítani.
Következő: »»   1 / 3
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