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   17 / 23
(#) eSDi válasza dcsabi hozzászólására (») Szept 13, 2013 /
 
Ezt sikerült összehoznom, ebből már kiindulhatsz.

  1. AllDigital
  2. Define CLOCK_FREQUENCY = 8
  3.  
  4. Config PORTB = Output
  5.  
  6. T1CON.RD16 = False  'Read/Write of timer1 in two 8-Bit operation
  7. T1CON.T1RUN = False  'Device clock is derived from another source
  8. T1CON.T1CKPS1 = True  '1:4 Prescale value
  9. T1CON.T1CKPS0 = False  '1:4 Prescale value
  10. T1CON.T1OSCEN = False  'Timer1 oscillator is shut off
  11. T1CON.T1SYNC = True  'Do not synchronize external clock input
  12. T1CON.TMR1CS = False  'Internal clock (FOSC/4)
  13. T1CON.TMR1ON = False  'Stops Timer1
  14.  
  15. 'TMR1 preload 15537 (100,002ms @ 8MHz & 1:4 prescale)
  16. Dim preload As Word
  17. preload = 15537
  18. TMR1H = preload.HB
  19. TMR1L = preload.LB
  20.  
  21. INTCON.GIE = True  'Enables all unmasked interrupts
  22. INTCON.PEIE = True  'Enables all unmasked peripheral interrupts
  23. PIE1.TMR1IE = True  'Enables the TMR1 overflow interrupt
  24. IPR1.TMR1IP = True  'High priority
  25.  
  26. Dim i As Byte
  27. i = 0
  28. Dim p_onoff As Bit  'current period (t_on or t_off)
  29. p_onoff = False
  30. Dim t_on As Byte  't_on * TMR1 owerflow
  31. Dim t_off As Byte  't_off * TMR1 owerflow
  32.  
  33. T1CON.TMR1ON = True  'Start Timer1
  34.  
  35. loop:
  36.         t_on = 2
  37.         t_off = 10
  38. Goto loop
  39.  
  40. End                                              
  41.  
  42. On High Interrupt
  43.         'reload the timer
  44.         T1CON.TMR1ON = False
  45.         TMR1H = preload.HB
  46.         TMR1L = preload.LB
  47.         T1CON.TMR1ON = True
  48.         If p_onoff = False Then
  49.                 If i = t_on Then
  50.                         Toggle RB.0
  51.                         Toggle p_onoff
  52.                         i = 0
  53.                 Endif
  54.         Endif
  55.         If p_onoff = True Then
  56.                 If i = t_off Then
  57.                         Toggle RB.0
  58.                         Toggle p_onoff
  59.                         i = 0
  60.                 Endif
  61.         Endif
  62.         i = i + 1
  63.         PIR1.TMR1IF = False  'Enable new interrupt
  64. Resume


Használd a kód gombot!
-moderátor-
A hozzászólás módosítva: Szept 13, 2013
(#) eSDi hozzászólása Szept 13, 2013 /
 
Ja és itt van egy kis segédprogram.
Amik beállításában tud segítséget nyújtani:
- Timer
- USART
- EUSART
- PWM
- ADC
- Comparator Vref
- LCD Custom character
(#) eSDi válasza eSDi hozzászólására (») Szept 13, 2013 /
 
Elnézést kérek, próbáltam használni. Viszont így eléggé zavaros a kommentek végén hiányzó idézőjel miatt. Ha pedig beraktam oda őket, akkor hiányzott a 42. sorban lévő "On High Interrupt" utasítás. Jó lenne, ha ki lehetne választani, hogy milyen kódot szeretnénk beilleszteni, mert így C kóddal biztos jó, de BASIC-el a fenti helyzet alakul ki...
(#) dcsabi válasza eSDi hozzászólására (») Szept 13, 2013 /
 
Köszi a példaprogit...Írok hozzá egy kis LCD-s állítási lhetőséget és kipróbálom. Ma már "kinomban " a bevált Parsic progiból másoltam ki a jól használható TR1 modul ASM változatát. ASM-ként illesztettem be és a 877-en működött is. Viszont a 4520-s panelomon nem, ez gondolom a kibővített INTERRUPT és a bankváltások elmaradása miatt van.
Üdv...
(#) dcsabi válasza eSDi hozzászólására (») Szept 13, 2013 /
 
Szia, kipróbáltam...működik...Kapcsolgatja a kimenetre kapcsolt Ledet. Átírtam az RC.2 re a kimenetet... mert ott van a ledem.
Az állítgatások közepette lefagy a villogás... Miért? ... vagy újra indul vagy nem. A fóprogramban hogyan tudom tiltani és engedélyezni?
(#) eSDi válasza dcsabi hozzászólására (») Szept 14, 2013 /
 
Letiltani a úgy lehet, hogy kikapcsolod a TMR1 overflow megszakítást.
PIE1.TMR1IE = True 'Enables the TMR1 overflow interrupt
Nem tudom, miért fagy le. Töltsd fel ide a forrást, hátha akkor látom mi a baj. De valószínűleg, a beállítások után alaphelyzetbe kell rakni a timert.
(#) Hp41C válasza eSDi hozzászólására (») Szept 14, 2013 /
 
A legvalószínűbb ok, hogy a megszakítás kiszolgáló program(rész) nem törli a PIR1.TMR1IF jelézőbitet.
(#) eSDi válasza Hp41C hozzászólására (») Szept 14, 2013 /
 
Pedig törölnie kell, hacsak valami miatt nem jut el addig a részig a program. Amíg nem derül ki, hogy mikkel bővítette ki a példát amit írtam, addig bármi lehet...
(#) dcsabi válasza eSDi hozzászólására (») Szept 14, 2013 /
 
Sziasztok, koszi a segítségeket.
A beállításokból ha visszalépek a főprogramba, előtte a 'i' változót 0-ra állítom... így mindig rendesen az új értékekkel "jár"... Az engedélyezést is hamarosan kipróbálom...
(#) dcsabi válasza dcsabi hozzászólására (») Szept 14, 2013 /
 
Kipróbáltam a tiltás engedélyezést. A timer rutin jelzett funkció letiltásával megállt a timer
véletlenszerű kimeneti állapotban. Most a timerrel egy belső bitet kapcsolgatok és ezt engedélyezem az adott kimenetre ha kell. Ha tiltom akkor mindig 0 a kimenetem, mert nem a timer kapcsolgatja direkt a kimenetet.
A hozzászólás módosítva: Szept 14, 2013
(#) dcsabi válasza eSDi hozzászólására (») Szept 14, 2013 /
 
Az eeprom írás még nem f...a.
Az eepom írásom egy szubrutinban van. Eddig működött... Most letíltom a PIE1.TMR1IE = True... is előtte, utána engedélyezem, -nem őrzi meg a beálított értéket...
(#) eSDi válasza dcsabi hozzászólására (») Szept 15, 2013 /
 
A PIE1.TMR1IE tiltásával a timer ugyanúgy megy tovább a háttérben, csak a megszakítás nem történik meg a túlcsorduláskor. A timer-t is megállíthatod (lehet hogy talán jobb is) a T1CON.TMR1ON tiltásával. Ha azt szeretnéd, hogy mindig 0 legyen a kimenet tiltáskor, és a visszaállításkor pedig megkapja az eredeti értéket, akkor a tiltás pillanatában le kell állítani a timer-t, el kell menteni a régi értéket, nullára állítani a kimenetet. Engedélyezésnél pedig fordítva, ha nem nulla volt a régi érték akkor a kimenetet 1-re állítani és a timer-t indítani.

Szóval nem menti el az értékeket az EEPROM-ba? Vagy milyen értékeket nem őriz meg?

Ha megvan a Structured language support az IDE-hez, akkor inkább használj a szubrutinok helyett eljárásokat és függvényeket (Procedures, Functions). Átláthatóbb lesz az egész és sok mindent könnyebb megoldani velük.
(#) csdominik hozzászólása Szept 15, 2013 /
 
Üdv Mindenkinek. Építettem egy lcd-s termosztát kapcsolást, amihez ezt a progit kell beégetni. Nekem 16f628a pic-em és ds18b20 szenzorom van. Ezekkel viszont hibás értékeket mutat. Tudna valaki segíteni, hogy mit mire kellene átírni hogy működjön?

080090-11.zip
    
(#) dcsabi válasza csdominik hozzászólására (») Szept 16, 2013 /
 
A sikerhez vezető ut akkor lesz a legolcsóbb, ha beszerzel egy "olyant". A különbség az állítható felbontásban van, többek között...Ehhez, akár írnod is kell a szenzorba. ha ez a Basic program nem így van megírva elég "tökölős "lesz. vegyél 1820-t (pszt, Ebay 5db, 9$ waterprof,1m-kabel, free-shipping)
(#) dcsabi válasza eSDi hozzászólására (») Szept 16, 2013 /
 
Köszi a tanácsokat. Az a helyzet, hogy egy kicsit már túlbonyolítottam a programot. (evés közben jött meg az étvágy). Több mindent másképp csinálnék már, ha újból nekiállnék. Már 950 sornál tartok...Az EEprom megoldódott, volt egy feltétel amivel ütközhetett. A nyomügomb nem oldódott meg. A D portot az LCD használja, esetleg ez lehet a gond? Csak akkor a 6-os miért jó, a 7-es meg miért nem? Van még egy másik gondom, a menű automata visszaugrás, Pl, egy perc elteltével, ha nem nyomok gombot. Ezt a PARSIC programmal 6 perc alatt megoldottam, de félek ezzel a struktúrával rámegy egy napom. Többszörös szurutin mélységben, hogyan tudom figyelni ezt? A timert azt átbabráltam már egy kicsit..
(#) dcsabi válasza eSDi hozzászólására (») Szept 17, 2013 /
 
Még egy kis tanácsot kérnék. A timert (megszakitást?) akarom használni a menű visszaugrasztására is kb. fél perc után, ha nem nyomtunk billentyűt. A menű most a főprogramhoz képest akár 3 szint szubrutin is lehet. Az általad belinkelt rutint használom egy két kiegészítéssel.
(#) eSDi válasza dcsabi hozzászólására (») Szept 23, 2013 /
 
Bocs! Eddig, csak felnézni volt időm, de válaszolni, csak most értem rá...
Ha már megoldottad, akkor tárgytalan.
Talán valahogy úgy lehetne megoldani, hogy egy bitet a gomb megnyomásával 1-re kellene állítani. A számláló pedig növelne egy változót a fél percnek megfelelő értékig. Viszont minden növelésnél 0-ra állítaná a jelző bitet, ha ez a bit 0 marad a beállított értékig, akkor visszatérne a főmenübe. Ja és egy gomb megnyomásakor a változót is nullázni kell, tehát a fél perces időtartam újraindulna minden gombnyomáskor.
(#) eSDi válasza dcsabi hozzászólására (») Szept 23, 2013 /
 
Az LCD esetleg beleszólhat, de nem hinném. Ki kell próbálni egy másik portra átrakni.
(#) dcsabi válasza eSDi hozzászólására (») Szept 23, 2013 /
 
Köszi az ötleteket. A nyomógomb kezelés jobb lenne, ha a főprogramban lenne, mert így a berendezés le fog állni beállításkor. Egy kicsit át kell alakítanom a struktúrát, mert néhány megoldásra váró feladat nagyon macerás lesz, (legalább is számomra).
(#) dkarcsi73 hozzászólása Okt 25, 2013 /
 
Sziasztok !
Segítséget szeretnék kérni soros portos kommunikációban.
Adott egy példaprogram aminek csupán annyi dolga lenne hogy "a" változó értékét kiküldje soros porton, decimális, vagy hexa vagy a beállított formátumban.
Sajnos csak mindenféle karakterek jelennek meg a PicBasic saját Serial Kommunikátorán és nem az elvárt változó értéke a az elvárt formátumban.
Próbálkozásom a fájlmellékletben.

rspróba.pbp
    
(#) mgy válasza dcsabi hozzászólására (») Nov 14, 2013 /
 
Sziasztok !
I2C buszos (24l512) EEPROM írásával van gondom.
21 bájtos tömböket (rekordokat) mentenék, majd visszaolvasnám.
A program szépen működik, de minden 6-9. rekord hibásan rögzítődik.
Ötlet ?
Kösz mgy

readee0.txt
    
(#) mgy válasza mgy hozzászólására (») Nov 14, 2013 /
 
Most látom, hogy a txt melléklet nehezen olvasható. Megismétlem rtf formátumban.
Érdekesség, hogy a hibák nem szabályosak és másik memória IC-vel is ismétlődnek.
A 21. ellenörző bájtokkal kiküszöbölhető a hiba, de csak úgy, hogy egy blokkal odébb ismét mentek.
A szék és a monitor között van a hiba !
Üdv mgy

readee0.rtf
    
(#) origo66 hozzászólása Jan 18, 2014 /
 
Hello
Segitséget szeretnék kérni PICBASIC ügyben.
Tudna-e valaki mintaprogramot , a PIC ( mondjuk 16F887 vagy PIC16877 stb) és a ENC28J60
hálózati adapter komunikációjára. Páldáuol a PIC elküld egy adatot ( számot, betüt) majd az elkerül a hálózatra.
(#) eSDi válasza origo66 hozzászólására (») Jan 19, 2014 /
 
Üdv!

Nem egy egyszerű dolog, de talán ebből el tudsz indulni: Link
A link hozzászólás mellékletében van két darab projekt. Én sajnos csak ennyiben tudtam segíteni, talán akad valaki majd aki már foglakozott vele BASIC alatt.
(#) GPeti1977 válasza origo66 hozzászólására (») Jan 19, 2014 /
 
Hasonlót csináltam most a melóhelyen csak Cerebot MX7CK panellel amiben PIC32 van meg LAN2780 Ethernet illesztő, kliens módban megy az adatokat php program dolgozza fel, ez egy kártyás beléptető rendszer ami az eseményeket küldi adatbázisba.
(#) Johnny0004 hozzászólása Feb 5, 2014 /
 
Üdv, érdeklődnék, hogy mikrobasic-ben hogy lehet azt megadni ha nem egy porton vannak a data lábai az LCD-nek?
tehát RB4 - RS
RB5 - E
RB6 - D4
RB7 - D5
A0 - D6
A1 - D7
Vagy csak egy porton lehetnek a data lábak?
A hozzászólás módosítva: Feb 5, 2014
(#) hvrobi hozzászólása Márc 29, 2014 /
 
Kéne nekem még egy kis segítség
Úgy döntöttem hogy magam építem meg a vezérlőt is (több élvezet van így a dologban) de sajnos pic-et még mindig nem nagyon tok programozni. :-S
Át rágtam magam 2-3 könyvön és az alapok meg vannak de még mindig nincs meg a teljes program kód
Esetleg tud valaki egy könyvet ahol össze van gyűjtve a basic nyelvnek a pic programozás hoz szükséges parancs kódjai??
(ha lehet akkor magyarul meg az idegen nyelv nem az erőségem )
A válaszokat előre is köszi
(#) eSDi válasza hvrobi hozzászólására (») Márc 29, 2014 /
 
Üdv!

Ha minden igaz akkor BASIC nyelvhez magyarul nem nagyon van ilyen könyv, mert ha a PC-s BASIC programozásból ismered a szintaktikát, akkor a PIC BASIC is menni fog. Az alap és a fontosabb parancsokat pedig a fejlesztőkörnyezet kézikönyve tartalmazza. A többi parancsot pedig a használt PIC adatlapjából kell kinézned, mert általában ugyan úgy van jelölve mint ott. Ráadásul ahány féle PIC BASIC, annyiféle szintaktika van. Van amelyik ténylegesen BASIC-re, van amelyik inkább a Pascalra, vagy az BASCOM-AVR-re hasonlít.
(#) hvrobi válasza eSDi hozzászólására (») Márc 29, 2014 /
 
Hát nekem most az a legnagyobb bajom hogy a basickel kapcslatos könyvek amiket találtam azok mind visual basicesek amik kétlem hogy jók :-S
(#) eSDi válasza hvrobi hozzászólására (») Márc 29, 2014 /
 
Pedig jók, mert megérted belőlük, a BASIC alapjait.
Következő: »»   17 / 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