Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1223 / 1320
(#) Wezuv válasza Hp41C hozzászólására (») Márc 24, 2016 /
 
Visszatértünk oda, hogy mi van, ha megszakítás nélkül töltöd fel a táblázatott FF-ekkel együtt, ahová az kell. Az táblát pedig egy #pragma utáni eeprom cím terület beállításával indíthatnád. Nekem nem tette még máshová a változóimat, ha megadtam a kezdő címet.
A hozzászólás módosítva: Márc 24, 2016
(#) Hp41C válasza Wezuv hozzászólására (») Márc 24, 2016 /
 
Rengeteg féle módszert kipróbáltam már.... Ld. melléklet.
Az a baj, hogy a fordító nem enged meg műveletet a #pragma címének megadásakor.

Részemről befejezve. Egyébként is csak azért hoztam (ismét) fel, hogy van olyan feladat, ami nem vagy nagyon nehezen vitelezhető ki magas szintű nyelven a beépített korlátozások miatt.

Az XC8 eeprom kezelése egyenesen siralmas...
A hozzászólás módosítva: Márc 24, 2016
(#) Wezuv válasza Hp41C hozzászólására (») Márc 24, 2016 /
 
Érdekes, nem vettem eddig észre, hogy a pragma étékadásában nem lehet műveletet végezni. Két egész számot sem enged meg összeadni, pedig ez elég alap dolog lenne.
(#) Wezuv válasza Wezuv hozzászólására (») Márc 25, 2016 /
 
Ez a problémám megoldódott, ha valakit érdekel a kérdés, jelezze, leírom...
(#) Bakman válasza Wezuv hozzászólására (») Márc 25, 2016 /
 
Már csak a digitális lábnyomod miatt is érdemes leírni...
(#) Wezuv válasza Bakman hozzászólására (») Márc 25, 2016 /
 
Hasznosabb, ha valakit érdekel is, mert ha csak ideírom, elvész. A keresőt nem sokan szeretik használni. Meg aztán ez nem blog...
(#) icserny válasza Wezuv hozzászólására (») Márc 25, 2016 / 1
 
Engem érdekel a megoldás.
Nevetni fogsz de számtalanszor kerestem már vissza innen a saját beírásaimból és cikkeimből az éppen szükséges információt. Már csak ezért is érdemes leírni...
(#) Bakman válasza icserny hozzászólására (») Márc 25, 2016 /
 
Velemis volt már, hogy saját írásomat kerestem, mert emlékeztem rá, hogy megosztottam másokkal is a megoldást, de idő közben elfelejtettem.
(#) Wezuv válasza icserny hozzászólására (») Márc 25, 2016 /
 
Ebben van valami, én is jártam már így.
Tehát a hivatkozott kérdésem röviden az volt, hogy miért nem kér, vagy ha kér, miért nem kap IP-t a DHCP szervertől(router) a DHCP kliens a Harmony stack-ben. Az ok prózai volt. Alapértelmezésben nincs beállítva MAC cím és javaslat se nagyon található. Úgy gondoltam mindegy milyet állítok be, hát nem. Amit beállítottam: A1-00-00-00-00-A1. Ez nem tetszett a T-Link routernek, de nem szólt semmit, mert az alap beállított IP-vel működött a HTTP, de csak belső hálóról.
A nyűgje akkor derült ki, amikor be akartam állítani a routeren, hogy fix IP-t osszon ki az ismert MAC címhez. A MAC megadásakor jelezte, hogy ez nem megfelelő cím. Adtam egy hasraütött 01-05-09-EC-01-08 címet a stack-ben és azonnal kiosztódott az IP és a Forward virtuális szerver beállítása után kintről is elérhető lett a HTTP szerver.
(#) f2f2 hozzászólása Márc 25, 2016 /
 
Még 1 dolog érdekelne, ha meg lehetne PIC el oldani
hogy egy kommunikációs csatornán programozható feszültséget érhessek el
5-11V ig vagyis a LOGIC-1 fesz értékét a beavatkozás előtt lemérje és korrigálja le/fel
a programozott szintre.
Analog input/ AD concverter /Vref mire figyeljek, amivel a szintet mérni lehet ?
és amivel egy mosfetet lehetne vezérelni ?
Kössz
(#) pajti2 válasza Wezuv hozzászólására (») Márc 26, 2016 / 1
 
Wiki lap a MAC address-ről

A második MAC-ed is rossz. Ha még nem akadtál bele, majd fogsz. Wiki-n nézz rá arra a cikkre. A MAC address legfelső byte-jának legalsó bitje szabályozza az uni / multi cast address-t. Unicast MAC esetén annak a bitnek nullának kell lennie. Emberi nyelven a MAC address legfelső byte-ja kötelezően páros szám. Írd át, és jobb lesz. Ha azzal megvagy, az eggyel magasabb bitre is ránézhetsz. Ha hasraütve találtál ki MAC-et, állítsd locally administered-re.
(#) pajti2 válasza Hp41C hozzászólására (») Márc 26, 2016 /
 
Szóval összefoglalóan van egy hibásan működő pragma az xc8 alatt. Szerintem van az xc8 alatt még sokkal több hiba is.
(#) Wezuv válasza pajti2 hozzászólására (») Márc 26, 2016 /
 
Köszi!
(#) Hp41C válasza pajti2 hozzászólására (») Márc 26, 2016 /
 
Sajnos ez nem hiba, hanem tulajdonság... Javítása sem várható....
(#) cross51 hozzászólása Márc 29, 2016 /
 
Sziasztok!

PIC32MZ2048EFG064-vel szeretnék TFT kijelzőt vezérelni. Még csak a tervek készülnek. Egy ilyen kijelzővel.
A kérdés az lenne, hogy mivel lenne gyorsabb a vezérlése 8bites PMD-vel vagy 16 bites adatküldéssel, de az "software-sen" lenne vezérelve adott port lábakkal?
(#) Wezuv válasza cross51 hozzászólására (») Márc 29, 2016 /
 
Gondolom PMP-t akarál írni. Az RBport jöhetne szóba, de lehet, hogy nem lenne gyorsabb, mint a 8bites PMP, ha kihasználod a vezérlő vonalait is. Ellenben ez egy kicsi pixelszámú kijelző, elég nagy megjelenítési sebességet el lehet érni, talán nem lesz vele gond. De javaslnám inkább a 100lábút a 16bites PMP-vel, az lenne a korrekt.
A hozzászólás módosítva: Márc 29, 2016
(#) cross51 válasza Wezuv hozzászólására (») Márc 29, 2016 /
 
Köszönöm!

Igen a PMP-re gondoltam, a 100 lábúba is gondoltkoztam, de nem tudtam, hogy használhatom-e, most beleegyeztek(akinek fejlesztem), úgyhogy lesz a 100 lábú.
(#) Moderátor hozzászólása Márc 29, 2016
 
Minden tisztelettel kérném az urakat, hogy maradjunk a téma címénél.
Köszönöm!
(#) Amenophis hozzászólása Ápr 5, 2016 /
 
Üdv mindenkinek!

Segítségre lenne szükségem.
A következő program módosításával illetve lefordításával lenne problémám.
Egy külföldi weboldalon találtam a programot illetve a hozzá tartozó kapcsolást. Az egész egy peltier modul szabályozása. Az eredeti program jól működik, viszont nem látja el azt a feladatot amit szeretném, hogy elláson. Az előre beállított hőmérsékletet nem lehet módosítani, csak a program változtatásával majd újra fordításával.
Egy fórumtársunk segítségével (hálás köszönet érte) módosítottam a programon, hogy 2 nyomógomb segítségével lehessen változtatni a kívánt hőmérséklet.
Nem túlzottan értek a basichez, esetleg ha valaki esetleg tudna rá vetni egy pillantást, hogy így működni fog-e, illetve ha igen akkor le tudná nekem fordítani, akkor örök hálám üldözni fogja

Az eredeti
  1. Device              16F628A
  2.     Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
  3.     ALL_DIGITAL         = true
  4. '****************************************************************  
  5.    Symbol  digit1   = PORTB.5
  6.    Symbol  digit2   = PORTA.1
  7.    Symbol  digitA   = PORTA.0
  8.    Symbol  digitB   = PORTA.7
  9.    Symbol  digitC   = PORTA.2
  10.    Symbol  digitD   = PORTB.6
  11.    Symbol  digitE   = PORTB.3
  12.    Symbol  digitF   = PORTA.6
  13.    Symbol  digitG   = PORTB.2
  14.  
  15.    Symbol  peltier  = PORTB.4
  16.  
  17.    Symbol  SCL      = PORTB.0
  18.    Symbol  SDA      = PORTB.1
  19.  
  20.    Dim     getal1   As Byte
  21.    Dim     getal2   As Byte
  22.    Dim     getal    As Byte
  23.    Dim     index    As Byte
  24.    Dim  temperatuur As Byte
  25.      
  26.    Symbol gewenst   = 10  
  27.  
  28. '****************************************************************    
  29. init:
  30.     Clear
  31.     I2Cin SDA,SCL,$90,[$00]  
  32. '****************************************************************
  33. main:
  34.    While 1 = 1
  35.        GoSub sensorIn
  36.      
  37.        getal1 = temperatuur / 10
  38.        getal2 = (temperatuur - (getal1 * 10))
  39.        GoSub dispUit
  40.      
  41.        If temperatuur < gewenst Then
  42.            Low peltier
  43.        Else
  44.            High peltier
  45.        EndIf
  46.    Wend
  47.  
  48. '****************************************************************    
  49. sensorIn:
  50.     I2Cin SDA, SCL,$91,[temperatuur]
  51. Return
  52. '****************************************************************  
  53. dispUit:
  54.    '    A
  55.     '  F   B
  56.    '    G
  57.     '  E   C
  58.    '    D
  59.     For index = 0 To 1
  60.         If index = 0 Then
  61.             getal = getal1
  62.             High digit1
  63.         EndIf
  64.         If index = 1 Then  
  65.             High digit2
  66.             getal = getal2  
  67.         EndIf
  68.         Select getal
  69.             Case 0  
  70.                 High digitA
  71.                 High digitB
  72.                 High digitC
  73.                 High digitD
  74.                 High digitE
  75.                 High digitF
  76.                 Low  digitG          
  77.             Case 1
  78.                 Low  digitA
  79.                 High digitB
  80.                 High digitC
  81.                 Low  digitD
  82.                 Low  digitE
  83.                 Low  digitF
  84.                 Low  digitG      
  85.             Case 2
  86.                 High digitA
  87.                 High digitB
  88.                 Low  digitC
  89.                 High digitD
  90.                 High digitE
  91.                 Low  digitF
  92.                 High digitG      
  93.             Case 3
  94.                 High digitA
  95.                 High digitB
  96.                 High digitC
  97.                 High digitD
  98.                 Low  digitE
  99.                 Low  digitF
  100.                 High digitG      
  101.             Case 4
  102.                 Low  digitA
  103.                 High digitB
  104.                 High digitC
  105.                 Low  digitD
  106.                 Low  digitE
  107.                 High digitF
  108.                 High digitG      
  109.             Case 5
  110.                 High digitA
  111.                 Low  digitB
  112.                 High digitC
  113.                 High digitD
  114.                 Low  digitE
  115.                 High digitF
  116.                 High digitG      
  117.             Case 6
  118.                 High digitA
  119.                 Low  digitB
  120.                 High digitC
  121.                 High digitD
  122.                 High digitE
  123.                 High digitF
  124.                 High digitG      
  125.             Case 7
  126.                 High digitA
  127.                 High digitB
  128.                 High digitC
  129.                 Low  digitD
  130.                 Low  digitE
  131.                 Low  digitF
  132.                 Low  digitG      
  133.             Case 8
  134.                 High digitA
  135.                 High digitB
  136.                 High digitC
  137.                 High digitD
  138.                 High digitE
  139.                 High digitF
  140.                 High digitG
  141.             Case 9
  142.                 High digitA
  143.                 High digitB
  144.                 High digitC
  145.                 High digitD
  146.                 Low  digitE
  147.                 High digitF
  148.                 High digitG          
  149.         EndSelect
  150.         DelayMS 2  
  151.         Low digitA
  152.         Low digitB
  153.         Low digitC
  154.         Low digitD
  155.         Low digitE
  156.         Low digitF
  157.         Low digitG
  158.         Low digit1
  159.         Low digit2
  160.     Next
  161. Return
  162.  
  163. '****************************************************************
  164. End


a módosított

  1. Device              16F628A
  2.     Config WDT_OFF, PWRTE_ON, MCLRE_OFF, INTRC_OSC_NOCLKOUT, LVP_off
  3.     ALL_DIGITAL         = true
  4. '****************************************************************  
  5.    Symbol  digit1   = PORTB.5
  6.    Symbol  digit2   = PORTA.1
  7.    Symbol  digitA   = PORTA.0
  8.    Symbol  digitB   = PORTA.7
  9.    Symbol  digitC   = PORTA.2
  10.    Symbol  digitD   = PORTB.6
  11.    Symbol  digitE   = PORTB.3
  12.    Symbol  digitF   = PORTA.6
  13.    Symbol  digitG   = PORTB.2
  14.  
  15.    Symbol  peltier  = PORTB.4
  16.  
  17.    Symbol  SCL      = PORTB.0
  18.    Symbol  SDA      = PORTB.1
  19.  
  20.    Symbol inpFEL = PORTA.4
  21.    Symbol inpLE = PORTA.5
  22.  
  23.    Dim     getal1   As Byte
  24.    Dim     getal2   As Byte
  25.    Dim     getal    As Byte
  26.    Dim     index    As Byte
  27.    Dim  temperatuur As Byte
  28.      
  29.    Symbol gewenst   = 10  
  30.  
  31. '****************************************************************    
  32. init:
  33.     Clear
  34.     I2Cin SDA,SCL,$90,[$00]  
  35. '****************************************************************
  36. main:
  37.    While 1 = 1
  38.        GoSub sensorIn
  39.      
  40.        getal1 = temperatuur / 10
  41.        getal2 = (temperatuur - (getal1 * 10))
  42.        GoSub dispUit
  43.      
  44.        If temperatuur < gewenst Then
  45.            Low peltier
  46.        Else
  47.            High peltier
  48.        EndIf
  49.    Wend
  50.  
  51.    if inpFEL = HIGH then
  52.    gewenst = gewents+1
  53.    wait (800)
  54.    endif
  55.  
  56.  
  57.    if inpLE = HIGH then
  58.    gewenst = gewents-1
  59.    if gewents = -1 then
  60.    gewents=0
  61.    endif
  62.    wait (800)
  63. endif
  64.  
  65.  
  66. '****************************************************************    
  67. sensorIn:
  68.     I2Cin SDA, SCL,$91,[temperatuur]
  69. Return
  70. '****************************************************************  
  71. dispUit:
  72.    '    A
  73.     '  F   B
  74.    '    G
  75.     '  E   C
  76.    '    D
  77.     For index = 0 To 1
  78.         If index = 0 Then
  79.             getal = getal1
  80.             High digit1
  81.         EndIf
  82.         If index = 1 Then  
  83.             High digit2
  84.             getal = getal2  
  85.         EndIf
  86.         Select getal
  87.             Case 0  
  88.                 High digitA
  89.                 High digitB
  90.                 High digitC
  91.                 High digitD
  92.                 High digitE
  93.                 High digitF
  94.                 Low  digitG          
  95.             Case 1
  96.                 Low  digitA
  97.                 High digitB
  98.                 High digitC
  99.                 Low  digitD
  100.                 Low  digitE
  101.                 Low  digitF
  102.                 Low  digitG      
  103.             Case 2
  104.                 High digitA
  105.                 High digitB
  106.                 Low  digitC
  107.                 High digitD
  108.                 High digitE
  109.                 Low  digitF
  110.                 High digitG      
  111.             Case 3
  112.                 High digitA
  113.                 High digitB
  114.                 High digitC
  115.                 High digitD
  116.                 Low  digitE
  117.                 Low  digitF
  118.                 High digitG      
  119.             Case 4
  120.                 Low  digitA
  121.                 High digitB
  122.                 High digitC
  123.                 Low  digitD
  124.                 Low  digitE
  125.                 High digitF
  126.                 High digitG      
  127.             Case 5
  128.                 High digitA
  129.                 Low  digitB
  130.                 High digitC
  131.                 High digitD
  132.                 Low  digitE
  133.                 High digitF
  134.                 High digitG      
  135.             Case 6
  136.                 High digitA
  137.                 Low  digitB
  138.                 High digitC
  139.                 High digitD
  140.                 High digitE
  141.                 High digitF
  142.                 High digitG      
  143.             Case 7
  144.                 High digitA
  145.                 High digitB
  146.                 High digitC
  147.                 Low  digitD
  148.                 Low  digitE
  149.                 Low  digitF
  150.                 Low  digitG      
  151.             Case 8
  152.                 High digitA
  153.                 High digitB
  154.                 High digitC
  155.                 High digitD
  156.                 High digitE
  157.                 High digitF
  158.                 High digitG
  159.             Case 9
  160.                 High digitA
  161.                 High digitB
  162.                 High digitC
  163.                 High digitD
  164.                 Low  digitE
  165.                 High digitF
  166.                 High digitG          
  167.         EndSelect
  168.         DelayMS 2  
  169.         Low digitA
  170.         Low digitB
  171.         Low digitC
  172.         Low digitD
  173.         Low digitE
  174.         Low digitF
  175.         Low digitG
  176.         Low digit1
  177.         Low digit2
  178.     Next
  179. Return
  180.  
  181. '****************************************************************
  182. End


Köszönöm előre is!
(#) pajti2 válasza Amenophis hozzászólására (») Ápr 5, 2016 /
 
A program jónak tűnik, de a kapcs rajzból semmit sem látunk, nem tudjuk biztosra mondani, hogy jó lesz. A gomb bekötése az, amit még ne szúrj el, különben nem fog működni. A a fel / le gombokat a porta.4-5 lábakra kösd be, tápfesz felé legyenek a pic láb felől, és legyen 0v-ra lehúzó ellenállás azokon a pic lábakon alapból, 10k körül bármi.

Egyébként kicsit illetlen programot egészben bekoppantani, ilyesminek nem a haladó topicban a helye, van kezdő pic topic is.
(#) Amenophis válasza pajti2 hozzászólására (») Ápr 5, 2016 /
 
Köszönöm szépen a segítséget és elnézést az illetlenségért, számomra ez már bonyolult progi, tekintve, hogy nem értek hozzá.
Akkor a további kérdéseimet a kezdő topicban teszem fel.
(#) Wezuv hozzászólása Ápr 16, 2016 /
 
Sziasztok!
Mi lehet a különbség egy 18F14K50 és egy 18F14K22 I2C modulja között? A dolgot bonyolítja, hogy a K50-et C18, a K22-t XC8 alatt fordítottam. A K22 SCL lábán meg se jelenik a jel ha olvasom(RCEN=1), csak, ha írom (SSPBUF=X). Ugyanazokat az I2C rutinokat használom, amit a C18.
Természetesen a K50 hibátlanul működik.
Köszi!
(#) pajti2 válasza Wezuv hozzászólására (») Ápr 16, 2016 /
 
Szerintem hardveresen semmi, jellemzően ugyan az a technológiai generáció. Viszont te nem a hardvert kezeled, hanem valamilyen fordító környezeten keresztül fordítasz c -> asm, és lehet, az xc8-ban még vannak hibák, mint például a regiszter pozíció el van írva. Valaki a kezdő-n éppen beleakadt egy .gld elírásba. Az xc8 környezetét én nem ismerem, sosem használtam, de ha elkezdesz belekotorni az #include láncolatba, ott meg kell lennie a bűnösnek. Esetleg kezdetben azt is kipróbálhatod, hogy kinyisszantasz egy totál egyszerű részletet, és azt asm-ben írod meg. A regisztert is nem névvel címzed, hanem megnézed a pozíció címét a pic doksijában. Gyártasz hozzá valami nyúlfarknyi kis programot, ami pic alapinit, periféria alapinit, és adat kiküldés. Ha úgy sem hajlandó működni, akkor nem a fordító a bűnös, hanem hardver hibád van. Asm progi írása helyett esetleg segítség lehet maga a fordító is. A régi C fordító toolchain-jét be lehetett paraméterezni asm list file generálására, és ott az asm program szövegesen. A regiszter címeket abban is ellenőrizheted az adatlaphoz képest. Persze az XC-nél nem tudom, hogyan lehet olyasmire rávenni.
(#) Wezuv válasza pajti2 hozzászólására (») Ápr 16, 2016 /
 
Köszi a választ! Az MPLAB X mcc18 alap beállításaival volt gond. Azt is meg tudtam csinálni, hogy K50-re MPLAB-al és X el, de C18 alatt fordítottam, még sem lett egyforma a hex és nem is működött az X alatt fordított firmware. A beállításoknál az mcc18 alatt resetáltam, majd újra beállítottam a header eléréseket. Változást csak a Generated Command Line alatt láttam, de a program futni kezdett. Még nem tudom pontosan az okot, mert nincs időm keresgélni. Valószínű, hogy az XC8 alatt is csak ezt kellene megtenni, de most már átforrasztottam a PIC-et. (A K22-őt nem kezeli a C18...) Köszi mégegyszer!
A hozzászólás módosítva: Ápr 16, 2016
(#) Wezuv hozzászólása Ápr 16, 2016 /
 
Nem tudom átírni XC8-ra ami C18 alatt jól fut. Csak az I2C nem megy, ahogy a korábbiakban leírtam. A C18-al is el tudtam érni, hogy ne menjen, de igazából nem tudom mi okozta, azt pláne nem, hogy az XC8 alatt mit kellene másképpen beállítanom. Ami biztos, hogy jó az órajel, az időzítések és a port funkciók (LCD megy, USART megy, IO megy).
(#) Wezuv válasza Wezuv hozzászólására (») Ápr 16, 2016 /
 
Úgy tűnik nem áll be az RCEN... ?
(#) pajti2 válasza Wezuv hozzászólására (») Ápr 18, 2016 /
 
Most írjam le újra?
(#) Wezuv válasza pajti2 hozzászólására (») Ápr 18, 2016 /
 
Nem a kóddal van a baj és nem az include-okkal. Annyit csináltam, hogy módosítottam az optimalizációs beállításokon, beállítottam a speed és a debug opciót. Ekkor nem fért el a kód, ami nem meglepő. Kivettem a speed-et és láss csodát elindult. Gondoltam megvan, biztosan a debug opció miatt volt. Kivettem, lefordítottam és ment. Azaz most minden ugyanúgy van beállítva, mint amit a project készítésénél feldob és még is megy. Van még egy project, amin nem végeztem el a módosításokat, az nem fut most sem. Itt valami MPLAB X hiba van, amit nem hiszem, hogy meg lehet érteni. A C18-al is mókolnom kellett k50-nél (c18 opciók reset), hogy működjön, úgyhogy nem fordító hiba. XC8-nál nem segített a reset, ott módosítani kellett a beállításokon és vissza. Valamit rosszul hoz létre az MPLX a project megnyitásakor. A fura az, hogy csak az I2C-re volt hatással...
A hozzászólás módosítva: Ápr 18, 2016
(#) usane válasza Wezuv hozzászólására (») Ápr 21, 2016 /
 
A beépített függvéyeket használod? Ha igen akkor miért?
Habár én nemrégiben írtam át egy 18f14k50 MC által írt firmet pic24-re.
Igaz csak a regisztereket írtam át, de gond nélkül megy az i2c.
Elég fura ez az oda-vissza reseteléses hibaelhárítás, de való igaz, hogy az X-nek még vannak hibái.
(#) Wezuv válasza usane hozzászólására (») Ápr 21, 2016 /
 
Nem. Ez a kód már régi, csak váltottam K50-ről K22-re(egy lábbal több kellett.). Valóban fura, de szerencsére működik.
Következő: »»   1223 / 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