Fórum témák
» Több friss téma |
PIC18F16Q40-et szeretnék programozni PicKit3 illetve MPLAB IPE V6.15-tel de nem tudom működésbe hozni. Az alábbi hibaüzenetet dobja:
Frissítéseket lefuttattam. Miért nem működik?
Hivatalosan nem támogatott, de ezzel a programmal tudod használni a PK3-as programozód: PICkitminus.
PK3 esetén új firmware kell a programozóra (PICkit minus mgoldja), ami ezekután nem hszanálható az MPLAB (IPE) programokkal. Ha MPLAB alatt akarod használni, vissza kell tölteni rá a gyári firmware-t. Az oldalon ott a konkrét leírás a "Notes on PICkit3" bekezdésben.
Köszönöm, ezt kipróbálom.
A tervem, hogy van egy működő SW PIC18F14K22-re és a memória hiány (bővítenem kell az adatokat) miatt kellene áttérnem PIC18F16Q40-re. Úgy néztem láb kompatibilis. Assemblyben tudok csak programozni. MPLAB IDE v.8.92 nem támogatja. Esetleg van erre is valami progi hogy tudjam használni? Vagy marad az MPLAB X IDE? Ez támogatja az assemblyt?
Az X IDE támogatja az assemblyt, de panaszkodnak rá. Változott a szintakitka (is), pic-as néven nyomul, ugyanakkor ettől többet nem tudok mondani. Bővebben találsz írásokat a Microchip fórumán: Bővebben: Link.
PICKIT3 felismerte a telepítés után. Köszönöm mégegyszer
Meg lehet valahogy hekkelni a MPLAB IDE v8.92 -t hogy tudja a PIC18F16Q40-et?
Ha nehezen is, nagy valószínűséggel igen, de a fordítót, ami a lényeg lenne... Más fejlesztőkörnyezetekben is felmerült már ilyen igény, nem sok sikeres projekt született.
Idézet: „Meg lehet valahogy hekkelni a MPLAB IDE v8.92 -t hogy tudja a PIC18F16Q40-et?” Ezt egyszer már körbejártam, a fordítás menne, a MPLABX-ből lemásolt fordítóval, de mégsem lehet megcsinálni: Bővebben: Link
Rákerestem, hogy más probálkozott-e a MPLAB masterdb.mmc-vel, és igen. Az alábbit találtam:
Bővebben: Link Azaz a masterdb.mmc egy XOR-olással titkosított szöveg file, amit vissza lehet alakítani txt file-á. szerkeszteni, és vissza titkosítani. Szóval akkor mégsem lehetetlen: 1. Lemásolni a fordítót a MPLAB X-ből (utolsóban már talán más fordító van, és anno az MPLAB X 5.30-al próbálkoztam) 2. Készíteni dev file-t a PIC-hez 3. masterdb.mmc -hez hozzáadni a PIC-et (XOR, szerkeszt majd vissza XOR) A srácnak a fordítás működött, de a debug nem.
A melléletben csináltam egy kis command line programot amivel az mcc file-ok txt-vé és visszaalakíthatóak. Mellékeltem a forrást is.
.NET Framework 4.8 Runtime kell hozzá, ha esetleg nem indulna.
MLAB x IDE v6.15-ön akarok progizni, de hibaüzenetet dob.
Assemblyt használok. Próbáltam több PIC-kel hozzájuk tartozó progikkai, de ugyanaz a hibaüzenet. Mi lehet a gond?
Hasonló hibát dobott nekem az 5xx verzió is, már nem emlékszem de valamelyik ikonról mégis tudott fordítani...
Make and program... Build main... Clean and build...
Ilyen hibaüzenetet szokott adni, pl. ha a projektben beállított assembler, vagy compiler ténylegesen nincs (azon az útvonalon) telepítve, ezért nem találja.
Régebbi projekt előszedésekor előfordul, hogy a régebbi assemblert időközben lecserélted újabbra, vagy ha másik gépre teszed át a projektet, és az nem egyezik az új gépen telepített assemblerrel.
Sziasztok!
A problémám sok. De most elsőre az, hogy mint a kódból látható, egy 10us jelet szeretnék kiadni a B0 lábra ami a logikai analizátoron 20us, az ismétlődés pedig 800 ms a 400 helyett. Valami nem jó, csak azt nem tudom, hogy mi.
A hozzászólás módosítva: Dec 28, 2023
A programban valahol kell lennie egy
Szia!
A program mikroc pro for pic ben íródik és abban a beállításokban szerepel.
Nem nagyon vágom a C nyelvet, de egyetértek Bakman kollégával. A 887 alap beállítása 4MHz, az eltérésed is erre utal. Az OSCCON értékének add meg: '01110000'
A hozzászólás módosítva: Dec 28, 2023
A C-hez kicsit sem konyítok, de még ha tökéletsen optimalizált asm. kódot is készít, nem túl valószínű, hogy 8MHz-n ki tudná generálni az 1usec-es időzítést, amit 10 szer lefuttatva lesz 10usec.
16MHz-s órajelen így néz ki az 1usec-es makró:
U.i. Ezt 2-255usec-ig lehet állítani. A hozzászólás módosítva: Dec 28, 2023
Jah, fel sem tűnt a dolog, mármint a MikroC. Ettől függetlenül valahogy meg kell változtatnod, ahogy Pali79 is írja, az OSCCON regiszter értékét. A MikroC oldalán van erről leírás: Bővebben: Link. Egyszerűen:
Sziasztok!
Beállítottam az OSCCON Regisztert OSCCON=0b01110101; és most ezek az idők jók. Köszönöm szépen a segítséget!
Csak egy apró megjegyzés, hibát nem okoz. Az
OSCCON=0b01110101; utasításban nincs értelme a 2-es bitet (aláhúzva) 1-re írni, mert az csak olvasható. Azt a bitet (és az 1-es sorszámút is) maga a kontroller kapcsolgatja, nem tudod átírni. Jelen helyzetben egyébként sincs szerepe.
Sziasztok!
Mint az előbbi kérdésemben elővezettem, sok a tudatlanságom! Most hogy az idők rendben vannak a kérdés az, hogy miért nem lép ki while(!PORTB.F4); ciklusból a program, pedig a feltétel változik. /*PIC16F887 8MHz belső oszcillátor KÖZELEDÉS ÉRZÉKELŐ HC-SR04 ultrasonic szenzorral */ // LCD module connections sbit LCD_RS at RD2_bit; sbit LCD_EN at RD3_bit; sbit LCD_D4 at RD4_bit; sbit LCD_D5 at RD5_bit; sbit LCD_D6 at RD6_bit; sbit LCD_D7 at RD7_bit; sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; // End LCD module connections //változók int a; char txt[7]; void main() { OSCCON=0b01110101; TRISB = 0b00010000; //RB4 bemenet PIN (ECHO) TRISD= 0b00000000; //minden RD kapu kimenet Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off PORTB.F0=0; //trig kimeneti jel //PORTB.F4=0; Lcd_Out(1,1,"HC-SR4"); Delay_ms(2000); Lcd_Cmd(_LCD_CLEAR); T1CON = 0x10; while(1) { TMR1H = 0; TMR1L = 0; PORTB.B0 = 1; //TRIGGER HIGH Delay_us(10); //10uS Delay PORTB.B0 = 0; //TRIGGER LOW Lcd_Out(1,1,"itt vagyok"); while(!PORTB.F4); //Waiting for Echo T1CON.F0 = 1; //Timer Starts while(PORTB.F4); //Waiting for Echo goes LOW T1CON.F0 = 0; //Timer Stops a = (TMR1L | (TMR1H<<8)); //Reads Timer Value a = a/58.82; //Converts Time to Distance a = a + 1; //Distance Calibration if(a>=2 && a<=400) //Check whether the result is valid or not { IntToStr(a,txt); Ltrim(txt); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Distance = "); Lcd_Out(1,12,txt); Lcd_Out(1,15,"cm"); } else { Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Out of Range"); } Delay_ms(400); } } A hozzászólás módosítva: Dec 29, 2023
Nem kapcsoltad ki az analóg funkciót, az Reset után aktív. ANSEL és ANSELH regiszterek.
Ha nem használsz analóg funkciót, akkor egyszerűen:
Szia!
Beírtam ezt a 2 sort és most már működik ez a rész is. Bár ahonnan vettem a kódot ott ezt nem írták. Nyilván erre nekem kellett volna figyelnem. Köszönöm az újabb segítséget!
Még mindíg a MPLAB X IDE V6.15 assembly-vel küzdök. Nem sikerül a fordítás. Újra installáltam, ellenőríztem a beállítási útvonalakat, de nem sikerül a fordítás. Néztem Youtube videókat is, bár többnyire csak régebbi verziókról van.
Ki tudná próbálni valaki pl az alábbival? Esetleg egy régebbi verzióval is? #include <p18f25k50.inc> org 0x2000 goto start org 0x2020 ledRedOn: bcf TRISC, 6 return ledRedOff: bsf TRISC, 6 return start: bcf LATC, 6 ; Set up the red LED ; Enable Timer 0 as a 16-bit timer with 1:256 prescaler: ; since the instruction speed is 12 MHz, this overflows about ; every 1.4 seconds. movlw b'10000111' movwf T0CON mainLoop: movf TMR0L, W ; Trigger an update of TMR0H ; Blink the red LED with a period of 1.4 s. btfss TMR0H, 7 rcall ledRedOff btfsc TMR0H, 7 rcall ledRedOn goto mainLoop end
Valószínűleg
Módosítva #include <pic18f25k50.inc> -ra
|
Bejelentkezés
Hirdetés |