Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
És hol aktiválod a B port felhúzó ellenállásait?
-ra gondolok, én mindig írom, ha biztosra akarok menni.
Ha kimenetnek vannak kapcsolva a lábak, akkor nincs felhúzás. Az akkor használható, ha bemenetre vannak állítva.
Az oszcillátor lábakra semmi sincs kötve. Mert a belső oszcillátort szeretném használni. Ez a gond?
PIC16F84...? Megnézted az adatlapját? Egyébként is akkor a "#FUSES INTRC_IO"-t kellene választani.
Ezzel csak az a baj, hogy nincsen neki....
Na ez szívás . Akkor fabrikálni kéne RC tagokból egyet. Vagy milyen megoldást javasolsz?
4k7+100pF kb. 1MHz-et ad. Bár én betennék egy 4MHz-es rezonátort vagy kvarcot két 33pF-dal.
Oké köszi szétnézek van-e itthon ilyen értékű.
Régi merevlemez vagy kiselejtezett PC kártyákon/alaplapon is találhatsz kvarcot. Ha jól csalódom, HS módban a szokásos 8-10-14 MHz-es kristályok is használhatók 15-33 pF-es kondenzátokokkal.
Kösz mesterek a segítséget nem tudom hogy lehettem ilyen figyelmetlen az a adatlap nézegetése közben, hogy azt gondoltam hogy van belső oscija . De mostmár működik.
Igen HS módban 4-20MHz-ig használhatók kvarcok 15-33pF-os kondival. Majd bontok valahonnan.
Sziasztok!
PIC16F877A picet programozok CCS-ben. HD44780-as kijelzőt használok a B porton. A problémám az, hogy szükségem van a PIC (egyetlen!!) interrupt lábára, de az len van foglalva a kijelző számára. Eredetileg a B0 lábon volt a kijelző Enable lába, most a B3-on van. A "main.c"ben van egy definíció: #define LCD_ENABLE_PIN PIN_B3 Hiába írtam át B3-ra a definíciót nem kel életre a kijelző.
Érzésem szerint itt kell valamit trükközni. Felcseréltem ezt a két sort: BOOLEAN enable; BOOLEAN unused; de ettől sem lett jobb. A hiba biztosan ebből ered, hogy nem hajlandó tudomásul venni a program, hogy a B3-t kéne használnia a B0 helyett. Valaki tudna segíteni meggyőzni a CCS-t arról, hogy a B3 lábat használja? Köszi
Csatolom azt a változatot, ahol azt az I/O-t használod, amelyiket akarod.
Kipróbáltam ezt a változatot a B0-n. Működik. Kipróbáltam másik 3 lábon. Nem működik.
Mit csinálok rosszul? A definíciókat tuti jóra írtam át, amikor másik IO-ra forrasztottam az enable lábat. Csak az én kijelzőm ennyire válogatós??
A "PIN_B3" pontosan igy van definiálva a 16F877 .h file-jában?
Igen
Közben rájöttem mi a gáz. Amikor átvariáltam a Vicsys féle kódra, akkor nem az a fájl volt megnyitva a fordítóban, amit használt a fordító. Csak 2 napig szívtam vele. :violent: Köszi a segítséget, most már működik a kód.
Nem írt ki hibaüzit a CCS? Pl.:
Idézet: „Please, change user!” Az a lényeg, hogy jó lett!
Ez a két felkiáltójeles kifejezés, hogy működik?
output_bit(LCD_DB4, !!(nibble & 1)); sysypet
Az "eredeti" forrásban volt fölötte egy kis megjegyzés: " !! converts an integer expression to a boolean (1 or 0). " (Kétszeres tagadás ... a nyolc biten megjelenő félbájtot így faragja az "output_bit" második, egy bites paraméterére )
Igen, a megjegyzést én is olvastam, csak nem értettem, mert a felkiáltójelek nélkül is működik, mert a kívánt funkciót a nibble parancs valósítja meg, minden hókusz-pókusz nélkül.
Igen, rendesen működik így is valószínűleg az output_bit fv. "rendbeteszi" azt a paramétert. A fordítás sem eredményez más kódot, ha nincs ott a két felkiáltójel. Bizonyára aki készítette, a fordítást nem nézte... én is csak most néztem meg...
Üdv!
Egy MIDI audioeszköz fejlesztésével foglalkozom (18f14k50) mostanában, de az usb-nél megakadtam. A CCS gyári driverét használom némi módosítással (az usb_cdc.h-t include-oltam, és az usb_cdc_desc.h-t átírtam). Csatlakoztatásnál az enumeration elvileg lefut:
Erre kigyullad a B7-en a led. Az eszközkezelőben is megjelenik, illetve az usb.org MIDI dokumentuma alapján állítottam be a descriptorokat, ennek köszönhetően megjelenik a hangok és audioeszközöknél is. Eddig minden rendben. A probléma ott van, hogy sehogy se tudom rávenni az adatküldésre. A standard MIDI üzeneteket kiegészítettem az usb által javasoltakkal ((CN<<4)|CIN, ez az első byte):
Erre elvileg a 36-os billentyűt kéne 4 másodpercenként megszólaltatnia fél másodpercre (fruity loops-t használok), de meg se nyikkan. Beraktam a mellékletbe az usb-midi specifikációt. Sajnos elég új vagyok az usb témakörben, ezért ha valami nagyon nyilvánvaló dolgot rontottam el, akkor előre is elnézést.
Csak kérdezem, mert nincs CCS C-m: Ez az usb_put_packet() nem csak HID módhoz való? Milyen függvényeket deklarál az usb_cdc.h állomány?
A CDC kapcsolathoz inkább usb_cdc_getc(), usb_cdc_putc() típusú illene, ahol az egyes karaterek küldése logikailag egymástól független (az egy más kérdés, hogy végül csomagolva mennek ki az USB adatvonalon).
Amennyire sikerült megértenem a driver könyvtárak felépítését, mennie kéne usb_put_packet()-tel. Ha jól vettem ki, annyit csinál, hogy ahova a pointer mutat, onnan a megfelelő számú byte-ot beírja a bufferbe (és megjelöli az endpointot, hogy kész a küldésre).
A cdc függvények: usb_cdc_kbhit() usb_cdc_getc() usb_cdc_putc(char c) usb_cdc_putready() usb_cdc_connected() usb_cdc_putc_fast(char c)
Közben találtam egy hibát (?) a descriptorokban, egy endpoint-on volt a ki és bemenet (a pdf-ben is). Kijavítottam, de így se kezdett el zajongani.
Sziasztok!
Nekem egy olyan problémám lenne, hogy valamiért nem sikerül életre kelteni az lcd kijelzőmet. Az lcd 2*16-os és egy 16f877A pic hajtaná. Egyszer már működött vele, de nincs meg a kód, ami benne volt. A ccs-t MPLAB-al használom. Itt van a mostani kód: Idézet: „#include <16F877A.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #include #define LCD_ENABLE_PIN PIN_D3 #define LCD_RS_PIN PIN_D2 #define LCD_RW_PIN PIN_D1 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 void main() { set_tris_c(0b00000000); output_c(0b00001001); delay_ms(10); lcd_init(); delay_ms(10); printf(lcd_putc, "Hello!"); output_c(0b00000110); while(1); } ” Úgy láttam, hogy itt akad el:lcd_init(); Ami ez után van azt nem hajtja végre a pic. Köszi előre is a segítséget.
Tartok tőle, hogy az nem hiba, javítsd vissza!
Az #include után valamiért nem rakja oda az lcd.c -t az oldal.
Hol hívod meg az LCD driver-t?
Mert pl. az lcds_init() függvény is abban van. Csatolom a "gyári" file-t.
Néhány hozzászólással lentebb megtalálod a működő változatot. Bővebben: Link
|
Bejelentkezés
Hirdetés |