Fórum témák
- • Ultrahangos párásító
- • Audiofil, High End Audio
- • Házilag építhető fémkereső
- • Elektronikai témájú könyvek újságok
- • Akkumulátoros fúró
- • Műhelyünk felszerelése, szerszámai
- • Analóg oszcilloszkóp javítása
- • Vásárlás, hol kapható?
- • Retro számítógépek
- • Tranzisztor teszter
- • Erősítő mindig és mindig
- • Inverteres hegesztőtrafó
- • Tranzisztorok helyettesítése
- • BEKO Mosó/Szárító gép
- • Arduino
- • Vezeték nélküli hangátvitel
- • Muzeális készülékek-alkatrészek restaurálása
- • Mobiltelefon hiba
- • Elektromos kerékpár akkumulátorának helyettesítése
- • Li-Ion saját akkucsomag készítése
- • FOK-GYEM TR9178 tápegység
- • Háromfázisú aggregátor
- • Autós erősítős kérdések, problémák
- • Távirányító javítás
- • Biciklilámpa / bringalámpa
- • Eredményjelző
- • RC távirányítás modellekhez
- • VF3 - 6 végerősítő
- • Lemezjátszó beállítása, javítása
- • LCD TV probléma
- • Sütő javítás
- • Padlófűtés vezérlés
- • Számítógépes áramkörszimuláló programok
- • Videoton EA-7386-s erösítő
- • Mosogatógép hiba
- • Kombikazán működési hiba
- • Felajánlás, azaz ingyen elvihető
- • Suzuki Swift elektronika
- • Páraérzékelő szenzor
- • VIDEOTON RT (RA) 6380S
- • Számítógép hiba, de mi a probléma?
- • Nextion érintőképernyős HMI, UART kommunikációval
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Alternativ HE találkozó(k)
- • GPS GSM modulok programozása
- • Digitális kapcsoló
- • Porszívó javítás
- • Szintetizátor javítás
- • Orsós magnók
- • Dobozolási technikák, műszerdobozok
- • USB bekötése
- • Elfogadnám, ha ingyen elvihető
- • Időzítő
- • Kemencevezérlés
- • Mosógép vezérlők és általános problémáik
» Több friss téma
|
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Milyen hibaüzenetet ír ki?
Idézet: „Próbáltam Assembly-ben és C-ben is”
Ezt nem értem, ugyanis a cikkben csak C kód van ASM nincs.
És sokat segítene a hibaüzenet is.
Assembly kódot máshonnan szedtem,de bezártam,és sajnos nem találom,a funkciója elvileg ugyan ez volt
Azt hiszem elég egyértelmű a hiva. Nézd azt a 2 errort.
A cikkben pic16f876-ra van írva te meg 16F690-re fordítottad.
A 16F690-nek nincs LVP configja, és B0 kimenete sem a B porton.
töröld a NOLVP-t a fuses végéről, és a B0-t írd át olyan port kimenetre amilyen van a PIC-en:
8. oldal A hozzászólás módosítva: Máj 20, 2014
Mit lehet tenni ilyenkor? Az egyetlen ami eszembe jutott,csak az volt hogy kicseréljem a header fájlt.
Mint már említették az LVP-t vedd ki. A PIN_B0 helyére pedig írj be RB0-át!
Van neki RA0-RA5, RB4-RB7, RC0-RC7 lábai, és olyat válassz ahol nincs analóg funkció.
RA5, RB6,RB7,RC4 vagy RC5.
Nem RB0-t. Mondtam hogy nincs B0 portja.
Itt soroltam miket irhat. Pl: PIN_B6 A hozzászólás módosítva: Máj 20, 2014
Ezek alapján siekrült végre lefordítani,és beégetni,köszönöm szépen de a LED csak nem villog,még csak nem is világít :/
A demo panelon a C-porton vannak a LED-ek, azt is írtam be. A hozzászólás módosítva: Máj 20, 2014
Azon a lábon van a LED amit beírtál?
Ha RB6 akkor a 11-es láb. A hozzászólás módosítva: Máj 20, 2014
RC2-re megy egy LED,azt írtam be, így:
#include <16f690.h>
#zero_ram
#fuses HS,NOWDT,NOPROTECT,NOPUT,BROWNOUT
#use delay(clock=12000000)
main(){
while(true){
delay_ms(1000);
output_toggle(PIN_C2);
}
(de így sem jó :/ ) A hozzászólás módosítva: Máj 20, 2014
Idézet: „Valaki tudna nekem segíteni egy asm fájl át írásában ami jelenleg közös anódos 7 szegmenses kijelzőhöz van és nekem közös katódoshoz kellene.....?” Ez a kapcsolas kozos katodos kijelzot hasznal.
Ps: Latod ha eloszor felraksz minden infot akkor nem ket nap a megoldas.
Nos, akkor vissza a kezdetekhez.
Ahhoz, hogy egy mikrokontrollerben menjen a szoftver, kel neki táp, ez ugye gondolom be van állítva, hogy a PICkit adja neki a tápot, ha fel tudtad programozni. Ezen kívül kell neki órajel.
Nem ismerem ezt a demópanelt, de kép alapján nem látok rajta kvarcot, a programban meg az van bállítva "HS".
Azt is át kell állítani ha igí akarod kipróbálni. HS helyett INTOSCIO, és az OSCCON regiszterben is be kell állítani az órajelet. Viszont az max 8MHz, akkor a delay függvény órajele sem stimmel.
CCS-t mindjárt megnézem, hogy állítja az órajelet.
#fuses HS,NOWDT,NOPROTECT,NOPUT,BROWNOUT
#use delay(clock=12000000)
Milyen oszcit hasznalsz? A programban 12 MHz kvarc van irva, tehat ezt kell haszalni. Probald meg atirni erre: #fuses INTRC_IO,NOWDT,NOPROTECT,NOPUT,BROWNOUT
#use delay(clock=4000000)
#include <16f690.h>
#zero_ram
#fuses INTRC_IO,NOWDT,NOPROTECT,NOPUT,BROWNOUT
#use delay(clock=8000000)
main(){
setup_oscillator(OSC_8MHZ);
while(true){
delay_ms(1000);
output_toggle(PIN_C2);
}
}
Nincs CCS-em feltelepítve, de remélem így jó lesz. A hozzászólás módosítva: Máj 20, 2014
sajnos nem :/
Idézet: „Executing: "C:\Program Files\PICC\Ccsc.exe" "main.c" +FM +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 79 "main.c" Line 10(13,14): Expect }
1 Errors, 0 Warnings.
Build Failed.
BUILD FAILED: Tue May 20 13:06:20 2014
”
Az előbb történt egy kis elírás,módosítva A hozzászólás módosítva: Máj 20, 2014
Bocs, csak másoltam. javítva.
így már lefordítja,de beégetés után most sincsen eredmény :/
Mit mondtam? Olyan port kell amin nincs analóg funkció. Ezeken van. Na sebaj, kikapcsoljuk.
#include <16f690.h>
#zero_ram
#fuses INTRC_IO,NOWDT,NOPROTECT,NOPUT,BROWNOUT
#use delay(clock=8000000)
main(){
setup_oscillator(OSC_8MHZ);
setup_adc( ADC_OFF );
while(true){
delay_ms(1000);
output_toggle(PIN_C2);
}
}
működik,én gépeltem el a programot,köszönöm szépen a segítséget!
Bocsánat a félre vezetésért. Én csak a header fájlt néztem meg, és abban definiálva van a teljes B port. A lábkiosztását nem néztem meg.
Semmi gond, viszont nem lehet definiálva, mert akkor nem hiányolta volna a fordító.
Vagy lehet, hogy a teljes port az van, de bitenként nincs. Nem tudom megnézni. nincs ccs könyvtáram. C18-at meg xc8-at haszálok abban csak RB4-től RB7-ig van.
Félig meddig igazad van. A PORTB-n mind a nyolc bit definiálva van. A TRISB-n csak a felső négy bit. Gondolom innen tudta a fordító.
Szia!
Addig eljutottam már, mikor alapesetben, rátettem a delejt a panelra, akkor az LCD kiejlző felső sorában megjelentek teli karakterek, és addig eljutottam hogy ezeket siekrült eltünteni, de még mindig nem szólalt meg a kijelző. Az aláábi módon néz ki az LCD.C fájlom.
#include "LCD.h"
#include <plib.h>
#define RS LATFbits.LATF1
//#define RW LATGbits.LATG13
#define EN LATEbits.LATE0
#define DB0 LATFbits.LATF0
#define DB1 LATDbits.LATD7
#define DB2 LATDbits.LATD6
#define DB3 LATDbits.LATD5
#define DB4 LATDbits.LATD4
#define DB5 LATDbits.LATD3
#define DB6 LATDbits.LATD2
#define DB7 LATDbits.LATD1
void setupLCD()
{
//Register pins
TRISFbits.TRISF1 = 0;
//TRISGbits.TRISG13 = 0;
TRISEbits.TRISE0 = 0;
//Data pins
TRISFbits.TRISF0 = 0;
TRISDbits.TRISD1 = 0;
TRISDbits.TRISD2 = 0;
TRISDbits.TRISD3 = 0;
TRISDbits.TRISD4 = 0;
TRISDbits.TRISD5 = 0;
TRISDbits.TRISD6 = 0;
TRISDbits.TRISD7 = 0;
//WAIT 20ns
wait();
EN = 0;
LCDcommand(0, 0,0,1,1,1,0,0,0); //initialize 2 lines
//LCDcommand(0, 0,0,1,1,0,0,0,0);
//LCDcommand(0, 0,0,1,1,0,0,0,0);
//LCDcommand(0, 0,0,1,1,1,0,0,0);
//LCDcommand(0, 0,0,0,0,1,0,0,0); //blank screen without clearing
LCDcommand(0, 0,0,0,0,0,0,0,1); //clear screen
LCDcommand(0, 0,0,0,0,0,1,1,0); //cursor moves right
LCDcommand(0, 0,0,0,0,1,1,0,0); //restore screen
//LCDWriteString("Hello", 1, 1);
//LCDWriteString("World!", 2, 1);
//LCDClear(0);
//LCDWriteString("a", 1, 1);
//LCDWriteString("b", 2, 1);
}
void LCDWriteChar(char c)
{
LCDcommand(1, c>>7&1, c>>6&1, c>>5&1, c>>4&1, c>>3&1, c>>2&1, c>>1&1, c&1);
}
void LCDWriteString(char *str, int row, int col)
{
row--;
col--;
LCDcommand(0,1,row,0,0,col>>3&1,col>>2&1,col>>1&1,col&1);
while(*str)
{
LCDWriteChar(*str);
str++;
}
}
void LCDClear(int line)
{
switch(line)
{
case 1:
LCDWriteString(" ", 1, 1);
break;
case 2:
LCDWriteString(" ", 2, 1);
break;
default:
LCDcommand(0,0,0,0,0,0,0,0,1);
}
}
void LCDcommand(int command, int d7, int d6, int d5, int d4, int d3, int d2, int d1, int f1)
{
//0 for command, 1 for data.
RS = command;
DB0 = f1;
DB1 = d7;
DB2 = d6;
DB3 = d5;
DB4 = d4;
DB5 = d3;
DB6 = d2;
DB7 = d1;
EN = 1;
wait();
EN = 0;
wait();
}
void wait()
{
int i = 0;
for (i; i<10000; i++)
{
}
}
A program init és main függvénye pedig így:
int init()
{
//JTAG kikapcsolás, mert 64 tűs IC-nél resetkor a RB10-RB14 lábak JTAG- hoz lesznek konfigolva nem rendes IO-k
mJTAGPortEnable(0);
//LED1 TRIS (lásd HardwareProfile.h)
mPORTESetPinsDigitalOut(BIT_6);
LED_OFF(LED1);
mPORTESetPinsDigitalOut(BIT_5);
mPORTESetPinsDigitalOut(BIT_7);
//GOMB
mPORTESetPinsDigitalIn(BIT_3);
mPORTFSetPinsDigitalIn(BIT_1);
//mPORTFClearBits(BIT_1);
mPORTDSetPinsDigitalIn(BIT_1);
//mPORTDClearBits(BIT_1);
mPORTDSetPinsDigitalIn(BIT_2);
//mPORTDClearBits(BIT_2);
mPORTDSetPinsDigitalIn(BIT_3);
//mPORTDClearBits(BIT_3);
mPORTFSetPinsDigitalIn(BIT_4);
//mPORTDClearBits(BIT_4);
mPORTDSetPinsDigitalIn(BIT_5);
//mPORTDClearBits(BIT_5);
mPORTDSetPinsDigitalIn(BIT_6);
//mPORTDClearBits(BIT_6);
mPORTDSetPinsDigitalIn(BIT_7);
//mPORTDClearBits(BIT_7);
mPORTFSetPinsDigitalIn(BIT_0);
//mPORTDClearBits(BIT_0);
mPORTESetPinsDigitalIn(BIT_0);
//mPORTEClearBits(BIT_0);
}
//MAIN
int main()
{
//SYSTEMConfigPerformance(SYS_FREQ);
SYSTEMConfig(SYS_FREQ, SYS_CFG_ALL); //Inicializalas
init();
setupLCD();
while(1)
{
LED_TOGGLE(LED1);
DelayMS(330);
DelayMS(20);
DelayMS(20);
LCDWriteString(" VALAMI JELENJEN MEG ", 1, 1);
}
}
Az a baj, hogy a kijelzpn még mindig nem jelenik meg semmi. Addig végre eljutottam hogy a kjelző legalább üres. Tudom ,hogy már mindnet leírtál, csak nem vagyok vmi ultra jártas a programozásban. Ránézésre, tudsz vmit segíteni, hogy a z LCD.c kódban még mit kellene csinálni? A hozzászólás módosítva: Máj 20, 2014
Nem látom, hogy ezeket az időzítéseket betartottad volna. Az írásnál és olvasásnál is vannak várakozási idők amiket nem ártana betartani.
Nem azt csinálod, amit írtam...
Sziasztok!
Szeretnék némi segítséget kérni. A PIC egy lábán kellene észlelnem, hogy egy vezeték feszültség alatt van-e. A vezetékben a feszültség 18 és 6 volt között változhat, de pusztán azt kellene érzékelnem, hogy nem 0. Hogyan kellene a vezetéket a PIC lábára kötnöm? Köszönöm. L.
Pl. egy ellenálláson át, amit megfogsz egy 4,7V-os zenerrel.
Az mit jelent, hogy "megfogsz"?
|
|