Fórum témák

» Több friss téma
Fórum » PIC BASIC
 
Témaindító: hinar_, idő: Máj 7, 2008
Témakörök:
Lapozás: OK   13 / 23
(#) brato válasza Marko Ramiusz hozzászólására (») Márc 18, 2012 /
 
Üdv!

Csak ezért feltelepítettem a microBasicet.
Leírás nélkül 1 perc alatt sikerült új projektet létrehozni pusztán a projektvarázsló segítségével.
Ha neked ez nem sikerül ne is kezdj egyenlőre ilyen "komoly" programmal.
(#) jeges válasza Marko Ramiusz hozzászólására (») Márc 18, 2012 /
 
Sajnos itt be vet szokás kérdésre kérdés születi vagy aztán vita lesz belöle!
Itt ilyen a légkör.....
Külföldi forumok segítö készebek mind bár melyik magyaron!
(#) jeges válasza pjg hozzászólására (») Márc 18, 2012 /
 
Oly mind egy hogy teszed fel vagy irod le bőven vagy fejezed ki!
Igy mit sem ér....
(#) brato válasza jeges hozzászólására (») Márc 18, 2012 /
 
Lehetőleg úgy kell a kérdést feltenni, hogy más is megértse, hogy mit akar az illető. Senki nem fog azon agyalni, hogy kihámozza mi is lenne a kérdés.
(#) Marko Ramiusz válasza pjg hozzászólására (») Márc 19, 2012 /
 
Szia pjg! A kérdés benne van a hozzászólásban, brato-nak ezt sikerült értelmeznie. Egyébként, mint látod, amit "reklamáltam", szinte azonnal több reagálást is kaptam, szóval nem a nemolvasáson múlik. Egyébként közben sikerült megoldanom a problémám. Azért köszönöm az írást, részemről a témának ezen része lezárva. Üdv.: Yoe
(#) Marko Ramiusz válasza brato hozzászólására (») Márc 19, 2012 /
 
Szia, brato! Sajnos a varázslóban, egy általam félreértelmezett "windows"-os (vagy mit is tudom Én milyen?), lépés miatt kerültem ide, de közben megfejtettem és semmi gond egy Project létrehozásában. Utolsó mondatodat nem vagyok hajlandó értelmezni, világosan írtam, hogy nyilván valami triviális hibát vétek, de ettől még vannak ettől sokkal "komolyabb" programjaim. Részemről a téma ezen része itt is lezárva. Neked is köszönöm válaszod. Üdv.: Yoe
(#) szabics válasza jeges hozzászólására (») Márc 19, 2012 /
 
ciklus:

if GPIO.2 = 1 then gosub brighter

goto ciklus

Brighter:
if Duty = 255 then RETURN
Duty = Duty + 15
RETURN
write 0 , duty

Egy lehetséges megoldás, bár a brighter rutint nem nagyon értem.. Mit csinálna? Visszatér ha kitöltés 255 egyébként növeli 15-tel.
majd rögtön visszatér a hívohóz. a write -t sohasem hajtja végre.
A rutin csak akkor hajtódik végre ha GPIO.2 magas szinten van
(#) Ideiglenes válasza szabics hozzászólására (») Márc 20, 2012 /
 
És mi van akkor, ha a "brighter" meghívása előtt Duty = 254? Mennyi lesz az eredmény, ha ehhez 15-öt hozzáad?
(#) mgy válasza Ideiglenes hozzászólására (») Márc 20, 2012 /
 
13 és újra kezdi növelni.
Nyilván ez egy programrészlet. A cikluson belül a PWM jelet kell kiadni.
Az a logikus, hogy induláskor a Duty=0, úgy nem lehet soha 254.
Igy oldottam meg, hogy az unokám kis motorja egy adott RAMP értékkel fusson fel a max. fordulatszámra.
(Nem esik hátra induláskor)
Üdv mgy
(#) szabics válasza Ideiglenes hozzászólására (») Márc 20, 2012 /
 
Ez csak egy program részlet jeges programjából. A rutinhoz nem nyúltam mert nem tudom mi a célja összeségében. Csak a ciklus rész lett javítva.. és megjegyzés hozzáfűzve a rutinhoz. Észrevétel..
(#) Ideiglenes válasza szabics hozzászólására (») Márc 20, 2012 /
 
Igazából az én kérdéseim is neki szóltak, csak rossz helyre böktem.
(#) (Felhasználó 56240) válasza BIP hozzászólására (») Márc 20, 2012 /
 
(#1146126) Előzmény

Szia
Köszönöm a választ és bocsánat a megkéset visszajelzésért
Most fogok megint újra foglalkozni vele
Szerintem ez lesz a megoldás
(#) feco93 hozzászólása Márc 25, 2012 /
 
Sziasztok

Szeretnék segítséget kérni mert a megszakítás nem akkar összejönni. A program amibe írtam proton ide.
A pic Rb0-ás lábán van nyomógomb Portd pedig ledek ezt csak azért csináltam hogy tudjak próbálkozni a megszakítással de sajnos nem jön össze.
  1. Device 16F877A
  2. XTAL 20
  3.  
  4.  
  5. PORTB = %0000001
  6. TRISB = %0000001
  7.  
  8. PORTD = %00000000
  9.  
  10. '' regiszer
  11. 'intcon.0 = 0        'PORTB7:4 lábon nem történt változás
  12. 'INTCON.1 = 0        'RB0/INT lábon nem történt változás
  13. 'INTCON.2 = 0        'Timer0 még nem jelzett túlcsordulást (még nem járt le az idő)
  14. 'INTCON.3 = 0        'Minden PORTB7:4-en esett változásnál megszakítás tiltva
  15. INTCON.4 = 1        'Engedélyezve az RB0/INT megszakítás
  16. 'INTCON.5 = 1        'TMR0 Overflow Interrupt Enable bit (Timer0 túlcsordulás megszakítás ) tiltva
  17. 'INTCON.6 = 0        'Minden perifériás megszakítás tiltása
  18. INTCON.7 = 1        'Minden beállított megszakítás engedélyezve
  19.  
  20. OPTION_REG.0 = 0    'Be van kapcsolva a felhúzó ellenállás
  21. OPTION_REG.1 = 0    'Lefutó élre indul (1-ről 0 lesz)
  22. 'OPTION_REG.2 = 1    'Külső RA4/T0CKI lábon keresztül kapja az órajelet
  23. 'OPTION_REG.3 = 0    'Felfutó élre növeli a timer0-t
  24. 'OPTION_REG.4 = 0    'Előosztó 1= WDT ha 0 = Timer0 -hoz  
  25. 'OPTION_REG.5 = 0
  26. 'OPTION_REG.6 = 0
  27. 'OPTION_REG.7 = 0
  28.  
  29. 'valtozok
  30. Dim i As Byte
  31. PORTB_PULLUPS On
  32.  
  33. Enable Interrupt GoTo int
  34.  
  35. start:
  36. If PORTB.0 = 0 Then i = i + 1
  37. If i > 3 Then i = 1
  38. If i = 1 Then GoTo i1
  39. If i = 2 Then GoTo i2
  40.  
  41.  
  42. i2:
  43.  
  44. High PORTD
  45. DelayMS 500
  46. Low PORTD
  47. DelayMS 500
  48. GoTo start
  49.  
  50.  
  51. i1:
  52. High PORTD
  53. DelayMS 500
  54. Low PORTD
  55. GoTo start
  56.  
  57. int:
  58. i = i + 1
  59. INTCON.1 = 0        'RB0/INT lábon nem történt változás
  60. Resume

S az a probléma hogy megszakítani megszakítja csak nem indul el újra a program
Remélem tudtok segíteni

Köszönttel:
Fecó
(#) brato válasza feco93 hozzászólására (») Márc 25, 2012 /
 
Itt egy példaprogram a megszakításkezelésre.

RPM_4.bas
    
(#) feco93 válasza brato hozzászólására (») Márc 28, 2012 /
 
Köszönöm szépen sikerült
(#) pepe091 hozzászólása Ápr 4, 2012 /
 
Tudna valaki linkelni egy leírást PIC Basic-ről magyarul(!!!!) ?
Alap dolgokra lennék kíváncsi, hogy melyik utasítás mire való, és ilyenek.

Előre is köszönöm.
(#) eSDi válasza pepe091 hozzászólására (») Ápr 5, 2012 /
 
Üdv!

Sok minden nem lesz magyarul, mert van egy pár fajta BASIC PIC-re. Keress rá a Visual BASIC 6 tankönyvre, abból meg tudod tanulni a BASIC programozási nyelvet. Ha abból az alapokat megismerted, akkor PIC-re már könnyebben fog menni a dolog, mert lényegében mindegyik abból ered. A lényeges dolgokat és beállításokat úgyis az adott PIC adatlapjából kell kinézni, ami meg csak angolul elérhető (na jó, van kínaiul is...), tehát angolul valamilyen szinten érteni kell.

Mellékesen ezt találtam (PBP): Bővebben: Link
(#) pepe091 válasza eSDi hozzászólására (») Ápr 5, 2012 /
 
Köszönöm a segítséged!
(#) Thowra válasza pepe091 hozzászólására (») Ápr 9, 2012 /
 
Üdv!
Nézz szét a súgóba, ugyan angol nyelvű de minden utasításhoz mutat példát, magyarázatot.
(#) pepe091 válasza Thowra hozzászólására (») Ápr 9, 2012 /
 
Rendben, köszönöm!
(#) csabi975 hozzászólása Jún 6, 2012 /
 
Sziasztok.
Segítséget szeretnék kérni. Írtam egy programot pic16f877-re ami fogadja a soros adatot, ami egy pc ?vel van össze kötve a programot oda is én írtam lazarusban. A lényeg a pc -vel összekapcsolódok vele és küldök neki adatott. Amennyiben az adat tökéletes kivillan egy led a pic panelon. Tökéletesen működik lazarusban írt programba egy edit mezőbe írom a küldeni kívánt adatott. De amennyiben nem ilyet köldök pl: 1 vagy 12 vagy 245 hanem többet pl : 2456 abban a pillanatban mintha lefagyna az egész pic és csak egy áramtalanítás, után működik újra a pic mindaddig, míg háromnál több értéket nem írok be akkor abban a pillanatban le is fagy. Alul láthatjátok a picben lévő programot. Lehet amatőr kérdés és amatőr modon csináltam meg, de minden segítséget szívesen veszek. Köszönöm.

  1. Define CONF_WORD = 0x3f72
  2. Define CLOCK_FREQUENCY = 20
  3. AllDigital
  4. Dim i As Byte
  5. Hseropen 1200
  6. WaitMs 1000
  7. High PORTB.7            ?teszt
  8. WaitMs 200
  9. Low PORTB.7
  10. High PORTB.6
  11. WaitMs 200
  12. Low PORTB.6
  13. High PORTB.7
  14. WaitMs 200
  15. Low PORTB.7
  16. High PORTB.6
  17. WaitMs 200
  18. Low PORTB.6
  19. WaitMs 1000
  20. ?Goto loop
  21. loop:
  22. Hserin i
  23. If i = 54 Then  
  24. High PORTB.6
  25. Hserout "0", #i, CrLf        ?tesztnek
  26. Endif
  27. Hserout "0", #i, CrLf     ?tesztnek
  28. WaitMs 150
  29. Low PORTB.6
  30. WaitMs 1
  31. Goto loop
(#) Hp41C válasza csabi975 hozzászólására (») Jún 6, 2012 /
 
Szia!

Mit csinálnak a Hserin és Hserout beépített függvények? Megvárják, amíg elkészül a vétel és az adás?
Ebben az esetben az a hiba, hogy míg a
  1. Hserout "0", #i, CrLf
dolgozik (4 - 5 karakter, 1200 baud esetén ez több, kb.30 - 40ms), a vevőből nem olasod ki a vett karaktereket, azok egymásra futhatnak. Egy ráfutás hiba csak a vevő kikapcsolásával és újra bekapcsolásával törölhető.
Vétel esetén minden karakter kiolvasás előtt egyszer (csak egyszer szabad) kiolvasni az RCSTA regisztert, abban levő FERR és OERR jelzőbitek mondják meg, ha keretezési vagy ráfutás hiba történt. A hibabiteket ki kell értékelni, hibás esetben is ki kell olvasni a RCREG -et. OERR esetén az vevőt le kell tiltani (CREN = 0), majd újra kell engedélyezni (CREN = 1).
Az időzavart megszakításos, pufferelt uart kezeléssel lehet feloldani.
(#) csabi975 válasza Hp41C hozzászólására (») Jún 6, 2012 /
 
Szia.
Először is, köszi, a segítséget.
Mit csinálnak a Hserin és Hserout beépített függvények?
?
  1. If i = 54 Then  'eredeti vevö2
  2. High PORTB.6
  3. Hserout "0", #i, CrLf
  4. Endif
?
Itt csak azt figyelem, hogy jön-e 54, ha igen akkor felvillan a led. ? Hserout "0", #i, CrLf? ezt meg azért raktam bele, hogy tényleg lefut-e ez csak egy ellenőrzés nekem a pc fele.
?vevőt le kell tiltani (CREN = 0), majd újra kell engedélyezni (CREN = 1).? ezt hova tegyem az endif után Cren=0 és loop: után meg a cren=1.
(#) Hp41C válasza csabi975 hozzászólására (») Jún 6, 2012 /
 
Szia!

Úgy látom, hogy még mindig nem érted. A programod jól működik addig, amig nem kap "túl sűrűn" adatot. Akkor jön a probléma, ha az alatt az idő alatt érkezik két karakter a vevőbe, míg a Hserout eljárás várja, hogy a 4-5 karaktert elküldje az adó. Ha az első vett karaktert nem olvassuk ki, amíg a második vétele is befejeződik, akkor a másodikkal felülírja az elsőt és ráfutás hibát jelez (OERR). Ha az OERR bit bebillen, azt törölni csak a CREN = 0 és CREN = 1 sorozattal lehet. Nem értek a BASIC -hoz...

Min csinálnak a függvények?
Amennyiben az alábbi törénik, akor jön elő a hiba:
Hserin: megvárja amíg elkészül a vétel (RCIF = 1), ha kész kiolvassa az RCREG -et.
Hserout: megvárja amíg elkészül az adó (TXIF =1), ha kész beírja a küldendő adatot a TXREG -be vagy fordítva...
A programozott várakozás alatt a másik illesztőt nem tudja a program kiszolgálni időben.
(#) csabi975 válasza Hp41C hozzászólására (») Jún 6, 2012 /
 
Szia.
Köszi, a választ így már értem legalábbis úgy gondolom . Ilyen szájbarágósan már sikerült megértenem. Holnap ennek alapján kipróbálom. Még egyszer, köszi, a segítséget.
(#) dkarcsi73 hozzászólása Jún 7, 2012 /
 
Sziasztok !
A PIC BASIC PRO programnak hol lehet megvásárolni a SILVER aktiválását? A ChipChad-nél csak a GOLD van meg és az is aranyáron
(#) csabi975 válasza dkarcsi73 hozzászólására (») Jún 7, 2012 / 1
 
Szia.
Én ezt használom: OSHON SOFTWARE Pic Simulator Ide
(#) geri12 hozzászólása Júl 1, 2012 /
 
Üdv mindenkinek!

Szükségem volna egy kis segítségre. Adott egy LCD-s kivezérlésjelző áramkör, ami egy PIC16F876 AD bemeneteiről veszi a bal és jobb csatorna jelét. A program készítője megosztotta a forráskodot is , ami BASIC-ben írodott. Én egy kicsit tovább fejleszteném, és arra lennék kíváncsi hogy lehetne még egy csatora jelét LCD-re vinni. Áramkörileg kialakítottam, és a programban is megírtam hogy 4 soros kiejlzőre jelezze ki. Az AD résznél azonban gondba vagyok.

Ez a program részlet jelenleg 2 csatornára:

BARRA:
IF MARCA1 = 1 THEN
LINEA = $C0 : ADCIN 0, CANAL : MARCA1 = 0 ELSE
LINEA = $D4: ADCIN 1, CANAL : MARCA1 = 1
ENDIF

3 csatorna kijelzése esetén hogy lehetne oda írni hogy egy 3. AD bemenetre kapcsolt audio jelet is lcd-re "írjon"? A kijelző pozicióval már nincs gondom, a bal és jobb csatornát másik sorba is át tudom vinni, csak evvel az AD bemeneti résszel vagyok gondban.

Köszi előre is!
(#) Matt hozzászólása Júl 24, 2012 /
 
Sziasztok!

Érdeklődni szertnék, nem tudja-e valaki, hogy kell i2c-n keresztül tcn75-ös hőmérőről lekérdezni a hőmérsékletet?

Matt
(#) brato hozzászólása Nov 3, 2012 /
 
Üdv!

Adott egy DS18B20 szenzor kiolvasása.
9 bites 0.5 C fokos felbontás kell csak.
Ezzel a kóddal megy is.
  1. If scratch.15 = 1 Then               ;Minusz hőfok figyelése
  2.     hofok = (0.0625 * scratch )-4096 ;Ha minusz akkor ezzel számolunk
  3.     Else
  4.     hofok = ( 0.0625*scratch)        ;Ha plusz akkor ezzel.
  5. End If

Az a problémám, hogy a hofok változó itt float tipus.
Lehet ezt úgy megoldani, hogy csak word vagy dword változó legyen használva?
A hozzászólás módosítva: Nov 3, 2012
Következő: »»   13 / 23
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