Fórum témák
- • Felajánlás, azaz ingyen elvihető
- • Alternativ HE találkozó(k)
- • Mosógép vezérlők és általános problémáik
- • Kapcsolóüzemű tápegység
- • Vicces - mókás történetek
- • Riasztószerelés tapasztalatok, ötletek (kizárólag haladóknak)
- • Erősítő mindig és mindig
- • Magnetométer építése
- • Bluetooth kérdések
- • Kávéfőzőgép hiba
- • Muzeális készülékek-alkatrészek restaurálása
- • Vag-com-hex interfész (kábel hibák)
- • Kombikazán működési hiba
- • Elektromágneses terek kockázatértékelése
- • Villanyszerelés
- • Kamerás megfigyelőrendszer
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Audiofil, High End Audio
- • Vezeték nélküli csengő más célra
- • TV hiba, mi a megoldás?
- • Mágnes
- • Szintetizátor javítás
- • Házilag építhető fémkereső
- • V-FET és SIT erősítő kapcsolások
- • Villanypásztor
- • Takarítógép problémák
- • Autóelektronika
- • Kapcsolóüzemű táp 230V-ról
- • LED-es kivezérlésjelzők
- • Tranzisztorok helyettesítése
- • Adatlapot keresek
- • Elfogadnám, ha ingyen elvihető
- • VU meter probléma
- • Vásárlás, hol kapható?
- • Energomat mosógép
- • Kaputelefon
- • Labortápegység készítése
- • Elektronyika orosz digitális órák
- • Videoton RT7300S
- • Műterhelés építése
- • Boombox javítás
- • Mobiltelefon hiba
- • Set-top-box
- • Inverter készítése
- • Kazettás magnó (deck) javítása
- • Hegesztő inverter javítás
- • Fejhallgató erősítő
- • Tranzisztoros kivezérlésjelző
- • Tirisztor
- • Rendelés külföldről (eBay - Paypal)
- • Ráz a kültéri medence vize
- • Érdekességek
- • VF3 - 6 végerősítő
- • Számítógép hiba, de mi a probléma?
- • Elektromos kerékpár, robogó házilag
» 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.
Még soha nem volt ilyen gondom az MPLAB X-szel, bár én nem használok bootloadert, és az írást is MPLAB X alatt végzem PICkit3-mal. Esetleg a Project Properties-ben van valami rosszul beállítva nálad.
Például a pipát vedd ki innen!
icserny: Ohh ezen már rég túl vagyok..
usane: Csatoltam képeket, nem találtam ilyen menüpontot..
Zsora: Igen pont ezekkel próbáltam én is, de még a hex exportálással is próbáltam.
Minden kép kiírja, hogy debug információkat tartalmaz a kód.
Bootloadernél a gyári procdefs.ld fájt használom, így a bootloader miatt lefoglalt területre nem ír. Csatolom, a kérdéses fájlt is..
Teszt kód:
/************
* Includes *
************/
#include <stdlib.h>
#include "GenericTypeDefs.h"
#include <xc.h>
/**********************
* Configuration Bits *
**********************/
#pragma config UPLLEN = ON // USB PLL Enabled
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider
#pragma config FPLLODIV = DIV_1 // PLL Output Divider
#pragma config FPBDIV = DIV_1 // Peripheral Clock divisor
#pragma config FWDTEN = OFF // Watchdog Timer
#pragma config WDTPS = PS1 // Watchdog Timer Postscale
#pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock Monitor
#pragma config OSCIOFNC = OFF // CLKO Enable
#pragma config POSCMOD = HS // Primary Oscillator
#pragma config IESO = OFF // Internal/External Switch-over
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable
#pragma config FNOSC = PRIPLL // Oscillator Selection
#pragma config CP = OFF // Code Protect
#pragma config BWP = OFF // Boot Flash Write Protect
#pragma config PWP = OFF // Program Flash Write Protect
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select
#pragma config DEBUG = ON // Debugger Disabled for Starter Kit
#define LED LATEbits.LATE2
void main(void){
unsigned int i;
TRISA = 0;
TRISB = 0;
TRISC = 0;
TRISD = 0;
TRISE = 0;
TRISF = 0;
TRISG = 0;
AD1CON1 = 0;
AD1PCFG = 0xFFFF;
CM1CON = 0;
CM2CON = 0;
CVRCON = 0;
LATE = 0x0f;
while(1){
i = 65500;
LED = !LED;
while(i--);
}
}
Idézet: „#pragma config DEBUG = ON”
Itt a probléma.
Igen erre már én is gondoltam, de azt hittem ez csak a Debug csatlakozóra vonatkozik, nem a fordítás módjára.. Kipróbálom..
Igen e miatt írta ki azt a szöveget. Most már nem írja ki, de a bootloaderbe betöltve sajnos még mindig nem működik a program..
Érdekes mert ugyan ezt a programot lefordítva a sima MPLAB IDE-vel simán működik... A hozzászólás módosítva: Jún 15, 2016
Mást nem tudok mondani, nekem bajt ott kondi még nem okozot. A hozzászólás módosítva: Jún 15, 2016
Uraim, valaki tud küldeni nekem egy lefordított hex fájlt amiben egy az RE2 bit-re egy LED villogtató program van lefordítva?
Akár a fentebb írt programom átalakításával.
Odáig jutottam, hogy most csak, akkor fut le a fentebb linkelt program, ha a bootloadert betöltöm és azzal töltöm fel azt a programot amit a régebbi MPLAB IDE kerettel fordítok le..
Nem értem mi lehet a gond, és kezd felbosszantani..
Előre is köszi..
(MPLAB X-et szeretnék áttérni, de úgy fest nem vagy csak nehezen megy)
Tipp:
MPLAB 8-cal és X-szel is generálj egy .hex állományt és hasonlítsd őket össze (szövegesen)!
Ha nem használsz bootloadert akkor működik a program?
Jó helyre lett fordítva a program?
Nyugodtan odamehet a kondi is, de a szoftveres prellmentesítés sem ördöngősség. Elrakod a legutolsó állapotot, és figyeled, hogy 3 egymás utáni olvasásban is az új jelszint érkezett-e. Ha igen, akkor átírod a virtuális érzékelést. Nagyon ritka eset az olyan még a 16f-eken is, hogy ne jusson ram +3 bitnyi statikus adatnak.
Bootloader nélkül nem megy a program, akár melyikbe fordítom le.
Vagy hibás a programom amit írtam és azért nem megy, vagy valamit nagyon benézek és nincs beállítva. Esetleg a regiszterek nincsenek jól beállítva..
Próbáltam az USB kikapcsolásával is, mert láttam, hogy tán az alapból nincs teljesen kikapcsolva.
Bootloaderrel is csak akkor megy, ha a régi MPLAB IDE-vel fordítom le.
Egyelőre nem értem mi lehet a problém..
Gondolom a panelon ki van vezetve az ICSP debug-olj rá, hogy mi történik nálam a debug segített rá(nem egyszer), hogy mért nem működik a PIC-be a program. A hozzászólás módosítva: Jún 15, 2016
Köszi, a program futott, eddig is, csak meg kell szokjam a 80MHz-et, marha gyors és egyelőre nincs delay().
Viszont továbbra sem működik akkor, ha MPLAB X-el fordítom le és Bootladerrel töltöm fel a programot.
Ha a régi MPLAB IDE-vel akkor gond nélkül megy..
Nem értem mi lehet ez...
Úgy gondolom, hogy az X valahogy piszkálja a memória területet.
Viszont nincs linker állomány, amit meg lehetne nézni..
Ez a procdefs.ld állomány van, ami érdekes, de egyelőre nem tudom mennyire kell, mert MPLAB IDE-nek az sem kell, hogy működjön.. Érthetetlen..
Még egy kicsit kínlódok az X-el aztán, ha nem akar menni, akkor megkeresem az uninstall ikonját.
De ha az X-el rakod rá a programot ICSP-n keresztül akkor nem megy vagy csak a bootloaderen keresztül nem megy, már megkavarodtam mikor megy mikor nem?
A delay-re:
A SYS_CLK ami a "proci fel jut freki" / 2 a 8 biten FOSC-nek becézett. Nálad ha jól értem akkor 80Mhz / 2.
void delay_ms(unsigned int miliseconds)
{
while (miliseconds--)
{
asm("di");
#ifdef SYS_CLK
asm volatile ("mtc0 $0,$9");
asm volatile ("mtc0 %0,$11" : "+r"(SYS_CLK / 1000));
#else
#warning SYS_CLK not defined
#endif
IFS0bits.CTIF = 0;
while(!IFS0bits.CTIF);
asm("ei");
}
IFS0bits.CTIF = 0;
}
void delay_us(unsigned int microseconds)
{
while (microseconds--)
{
#ifdef SYS_CLK
asm("di");
asm volatile ("mtc0 $0,$9");
asm volatile ("mtc0 %0,$11" : "+r"(SYS_CLK / 1000000));
#else
#warning SYS_CLK not defined
#endif
IFS0bits.CTIF = 0;
while(!IFS0bits.CTIF);
asm("ei");
}
IFS0bits.CTIF = 0;
}
A hozzászólás módosítva: Jún 15, 2016
Most odáig eljutottam, hogy X-el fel tudom programozni és fut is a program.
De ha beletöltöm a Bootloadert és azzal töltöm be ugyan azt a progit már nem megy.
Próbáltam gyári CDC demót, azt fel tudtam tölteni, de sajátot amit X-ben fordítottam azt nem.
Sima MPLAB-al fordítva működik.
A baj az, hogy vagy X vagy sima IDE-ben fejlesztek, egyszerre a kettő nem lehet.
Mivel az X-a frissebb és itt is ezt ajánlottátok, próbálnék át állni rá.
MPLAB X PRO regisztrált verzió.
Nem kötekedés, de nem a fordítóból van pro standard meg free?
Nem tudom, hogy a PIC32-nél (gondolom van)van-e külön boot flash terület, de nem kell esetleg a reset vagy egyéb vektort arrébb rakni a bootloader miatt? Valamint a program amit feltöltesz bootloaderen keresztül az átírja a config biteket?
Sziasztok
Hogy tudom a PIC18F46k22 belsö RCjét bekapcsolni??? MikroC be írom
Igen igazad van, kifelejtettem XC és XC32 fordítóm PRO, regisztrált verzió.
Ezt azért írtam, be hogy hátha érdekes és hogy esetleg a free verzió korlátozna le.
No pont ezt gondolom én is.
PIC18-nál át kellett helyezni pár vektort, itt is van ilyen, de amit nem értek az az, hogy miért működik az a program amit MPLAB IDE-ből fordítok és miért nem amit X-el.
Mind kettő programban ugyan az van, mert az egész forrást másolom ide-oda.
delay sajnos nem működik, sorra hibát hoz.
ASM nem tetszik neki..
kriszrap: Mit értesz RC alatt? Belső órajelet? A hozzászólás módosítva: Jún 15, 2016
Tedd be 0-ás optimalizációba mert nagyon érdekesen szokott optimalizálni az XC próbáld ki úgy szerintem menni fog úgy mert egy csomó változót túloptimalizál aztán nem lesz belőle semmi.
A delay-nél a sys_clk definiálva van?
A hozzászólás módosítva: Jún 15, 2016
Kivettem 0 optimalizálásra, de ugyan az a szitu..
Igen definiáltam de így: #define SYS_CLK 80000000/2
Most ez a teljes kódom:
/************
* Includes *
************/
//#include <p32xxxx.h>
#include <stdio.h>
#include <stdlib.h>
#include "GenericTypeDefs.h"
#include <xc.h>
//#include <proc/p32mx795f512l.h>
/**********************
* Configuration Bits *
**********************/
#pragma config UPLLEN = ON // USB PLL Enabled
#pragma config FPLLMUL = MUL_20 // PLL Multiplier
#pragma config UPLLIDIV = DIV_2 // USB PLL Input Divider
#pragma config FPLLIDIV = DIV_2 // PLL Input Divider
#pragma config FPLLODIV = DIV_1 // PLL Output Divider
#pragma config FPBDIV = DIV_1 // Peripheral Clock divisor
#pragma config FWDTEN = OFF // Watchdog Timer
#pragma config WDTPS = PS1 // Watchdog Timer Postscale
#pragma config FCKSM = CSDCMD // Clock Switching & Fail Safe Clock Monitor
#pragma config OSCIOFNC = OFF // CLKO Enable
#pragma config POSCMOD = HS // Primary Oscillator
#pragma config IESO = OFF // Internal/External Switch-over
#pragma config FSOSCEN = OFF // Secondary Oscillator Enable
#pragma config FNOSC = PRIPLL // Oscillator Selection
#pragma config CP = OFF // Code Protect
#pragma config BWP = OFF // Boot Flash Write Protect
#pragma config PWP = OFF // Program Flash Write Protect
#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select
#pragma config DEBUG = OFF // Debugger Disabled for Starter Kit
#define SYS_CLK 80000000/2
#define LED LATEbits.LATE3
void delay_ms(unsigned int miliseconds);
void delay_us(unsigned int microseconds);
void main(void){
unsigned long i;
TRISA = 0;
TRISB = 0;
TRISC = 0;
TRISD = 0;
TRISE = 0;
TRISF = 0;
TRISG = 0;
AD1CON1 = 0;
AD1PCFG = 0xFFFF; // Configure AN pins as digital I/O
DDPCONbits.JTAGEN = 0; // disable the JTAG port
CM1CON = 0;
CM2CON = 0;
CVRCON = 0;
U1CON = 0;
LATE = 0x0f;
while(1){
i = 300000;
LED = !LED;
while(i--);
}
}
void delay_ms(unsigned int miliseconds)
{
while (miliseconds--)
{
asm("di");
#ifdef SYS_CLK
asm volatile ("mtc0 $0,$9");
asm volatile ("mtc0 %0,$11" : "+r"(SYS_CLK / 1000));
#else
#warning SYS_CLK not defined
#endif
IFS0bits.CTIF = 0;
while(!IFS0bits.CTIF);
asm("ei");
}
IFS0bits.CTIF = 0;
}
void delay_us(unsigned int microseconds)
{
while (microseconds--)
{
#ifdef SYS_CLK
asm("di");
asm volatile ("mtc0 $0,$9");
asm volatile ("mtc0 %0,$11" : "+r"(SYS_CLK / 1000000));
#else
#warning SYS_CLK not defined
#endif
IFS0bits.CTIF = 0;
while(!IFS0bits.CTIF);
asm("ei");
}
IFS0bits.CTIF = 0;
}
A hozzászólás módosítva: Jún 15, 2016
Igen egyszerüen sehogy se tudom beállitani
Idézet: „TABLE 24-1: CONFIGURATION BITS AND DEVICE IDs
REGISTER 24-1: CONFIG1H: CONFIGURATION REGISTER 1 HIGH”
Neked a CONFIG1H regisztert kell elsőnek megnézned, itt tudod beállítani, hogy belsőről menjen.
Idézet: „1001 = Internal oscillator block, CLKOUT function on OSC2
1000 = Internal oscillator block”
Hirtelen..
ezt hogy csnálom?
"TABLE 24-1: CONFIGURATION BITS AND DEVICE IDs
REGISTER 24-1: CONFIG1H: CONFIGURATION REGISTER 1 HIGH"
Ez a PIC adatlapjában találod a 24-1-es résznél.
Pl: CONFIG1H = 0b00110011;
CONFIG2L = 0b00000110;
CONFIG2H = 0b00100000;
CONFIG3H = 0b10000001;
CONFIG4L = 0b10000001;
CONFIG5L = 0; // Code Protection
CONFIG5H = 0; // Data EEPROM Code Protection
CONFIG6L = 0; // Write Protection
CONFIG6H = 0; // Data EEPROM Write Protection
CONFIG7L = 0; // Table Read Protection
CONFIG7H = 0; // Boot Block Table Read Protection
Vagy használhatod a teljes részletes beállítást:
//CONFIG1H
#pragma config FOSC = HSMP //0xF3 HS oscillator (medium power 4-16 MHz).
#pragma config PLLCFG = ON //0xFF Oscillator multiplied by 4xPLL
#pragma config PRICLKEN = ON //0xFF Primary clock is always enabled.
#pragma config FCMEN = OFF //0xBF Fail-Safe Clock Monitor disabled.
#pragma config IESO = OFF //0x7F Oscillator Switchover mode disabled.
//CONFIG2L
#pragma config PWRTEN = ON //0xFE Power up timer enabled.
#pragma config BOREN = ON //0xFB Brown-out Reset enabled and controlled by software (SBOREN is enabled).
#pragma config BORV = 285 //0xE7 VBOR set to 2.85 V nominal.
//CONFIG2H
#pragma config WDTEN = OFF //0xFC Watch dog timer is always disabled. SWDTEN has no effect.
#pragma config WDTPS = 256 //0xE3 1:256.
//CONFIG3H
#pragma config CCP2MX = PORTC1 //0xFF CCP2 input/output is multiplexed with RC1.
#pragma config PBADEN = OFF //0xFD PORTB<5:0> pins are configured as digital I/O on Reset.
#pragma config CCP3MX = PORTB5 //0xFF P3A/CCP3 input/output is multiplexed with RB5.
#pragma config HFOFST = OFF //0xF7 HFINTOSC output and ready status are delayed by the oscillator stable status.
#pragma config T3CMX = PORTC0 //0xFF T3CKI is on RC0.
#pragma config P2BMX = PORTD2 //0xFF P2B is on RD2.
#pragma config MCLRE = EXTMCLR //0xFF MCLR pin enabled, RE3 input pin disabled.
//CONFIG4L
#pragma config STVREN = ON //0xFF Stack full/underflow will cause Reset.
#pragma config LVP = OFF //0xFB Single-Supply ICSP disabled.
#pragma config XINST = OFF //0xBF Instruction set extension and Indexed Addressing mode disabled (Legacy mode).
#pragma config DEBUG = OFF //0xFF Disabled.
//CONFIG5L
#pragma config CP0 = OFF // Kódvédelem kikapcsolva
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
//CONFIG5H
#pragma config CPB = OFF // Boot Blokk kódvédelem kikapcsolva
#pragma config CPD = OFF // Eeprom kódvédelem kikapcsolva
//CONFIG6L
#pragma config WRT0 = OFF // Írásvédelem kikapcsolva
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
//CONFIG6H
#pragma config WRTB = OFF // Boot Blokk írásvédelem bekapcsolva
#pragma config WRTC = OFF // Configuration Register Write Protection
#pragma config WRTD = OFF // Data EEPROM Write Protection
//CONFIG7L
#pragma config EBTR0 = OFF // Táblázatolvasás ne legyen letiltva
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
//CONFIG7H
#pragma config EBTRB = OFF //Boot blokk táblaolvasás ne legyen letiltva
Neked itt már csak be kell állítanod, hogy belső órajelet akarsz és nem külsőt.
Lehet Micro C-ben ez másként van, lehet a keretprogramodban is be lehet könnyedén állítani.. Én ezt C18-ra írtam.. A hozzászólás módosítva: Jún 15, 2016
A MikroC-ben valahol lehet módosítani a config biteket, de már rég használtam nagyon nem tudom hol lehet már.
Idézet: „Nyugtass meg, ugye nem ttl bemenetről volt szó?” Mire gondolsz, mivel kapcsolatban nyugtassalak meg ?!
Ezt hova kell írni void mainbe???
Micro C-ben nézd meg a klienset, mert lehet be lehet állítani a keret programot is.
Ha nem akkor a main() elé..
Internall oscillator blockra állitottam
A while nem futt le és 3 led villágit egymástól távol.
kód:
void main() {
TRISA = 0 ;
TRISB = 0;
TRISC = 0;
TRISD = 0;
TRISE = 0;
while(1)
{
PORTD=0b00000000;
PORTC=0b00000100;
delay_ms(1000);
PORTD=0b00000100;
PORTC=0b00000100;
}
}
DE legalább van valami A hozzászólás módosítva: Jún 15, 2016
Videó itt igaz dsPicre mutatják be de ha jól emlékszem mindenhol így kell beállítani.
PORTx regiszterekkel olvasunk, ennél és úgy általában a PIC18-as családnál LATx regiszter használunk a szint állításához.
Tehát: PORTC=0b00000100; //helyett
LATC=0b00000100;
És ne felejtsd el a portokat digitálisra állítani..
Van egy pár regiszter amit érdemes beállítani ennél a PIC-nél. A hozzászólás módosítva: Jún 15, 2016
|
|