Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- 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.
Lapozás: OK   1198 / 1206
(#) treshold hozzászólása Dec 10, 2023 /
 
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?
(#) Bakman válasza treshold hozzászólására (») Dec 10, 2023 / 1
 
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.
(#) treshold válasza Bakman hozzászólására (») Dec 10, 2023 /
 
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?
(#) Bakman válasza treshold hozzászólására (») Dec 10, 2023 / 1
 
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.
(#) treshold válasza Bakman hozzászólására (») Dec 10, 2023 /
 
PICKIT3 felismerte a telepítés után. Köszönöm mégegyszer
(#) Bakman válasza treshold hozzászólására (») Dec 10, 2023 / 1
 
Remek, egy gonddal kevesebb.
(#) treshold válasza Bakman hozzászólására (») Dec 12, 2023 /
 
Meg lehet valahogy hekkelni a MPLAB IDE v8.92 -t hogy tudja a PIC18F16Q40-et?
(#) Bakman válasza treshold hozzászólására (») Dec 12, 2023 / 1
 
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.
(#) majkimester válasza treshold hozzászólására (») Dec 12, 2023 / 2
 
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
(#) majkimester válasza majkimester hozzászólására (») Dec 12, 2023 / 2
 
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.
(#) majkimester válasza majkimester hozzászólására (») Dec 12, 2023 / 2
 
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.
(#) treshold hozzászólása Dec 14, 2023 /
 
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?

psc1.png
    
(#) pipi válasza treshold hozzászólására (») Dec 14, 2023 /
 
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...
(#) halfbit válasza treshold hozzászólására (») Dec 15, 2023 /
 
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.
(#) glaci hozzászólása Dec 28, 2023 /
 
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.


  1. /*PIC16F887  8MHz belső oszcillátor
  2. KÖZELEDÉS ÉRZÉKELŐ HC-SR04 ultrasonic szenzorral
  3.  
  4. */
  5.  
  6.  // LCD module connections
  7. sbit LCD_RS at RD2_bit;
  8. sbit LCD_EN at RD3_bit;
  9. sbit LCD_D4 at RD4_bit;
  10. sbit LCD_D5 at RD5_bit;
  11. sbit LCD_D6 at RD6_bit;
  12. sbit LCD_D7 at RD7_bit;
  13.  
  14. sbit LCD_RS_Direction at TRISD2_bit;
  15. sbit LCD_EN_Direction at TRISD3_bit;
  16. sbit LCD_D4_Direction at TRISD4_bit;
  17. sbit LCD_D5_Direction at TRISD5_bit;
  18. sbit LCD_D6_Direction at TRISD6_bit;
  19. sbit LCD_D7_Direction at TRISD7_bit;
  20. // End LCD module connections
  21.  
  22.  
  23. void main()
  24. {
  25.   int a;
  26.   char txt[7];
  27.   Lcd_Init();
  28.   Lcd_Cmd(_LCD_CLEAR);          // Clear display
  29.   Lcd_Cmd(_LCD_CURSOR_OFF);     // Cursor off
  30.  
  31.   TRISB = 0b00010000;           //RB4 bemenet PIN (ECHO)
  32.   PORTB.B0=0;                   //trig kimeneti jel
  33.   PORTB.B4=0;
  34.   TRISD=  0b00000000;            //minden RD kapu kimenet
  35.  
  36.  
  37.     Lcd_Cmd(_LCD_CLEAR);
  38.     T1CON = 0x10;
  39.    while(1)
  40.   {
  41.  
  42.  
  43.     PORTB.B0 = 1;               //TRIGGER HIGH
  44.     Delay_us(10);               //10uS Delay
  45.     PORTB.B0 = 0;               //TRIGGER LOW
  46.  
  47.     Delay_ms(400);
  48.   }
  49.  
  50. }
A hozzászólás módosítva: Dec 28, 2023

triger.png
    
(#) Bakman válasza glaci hozzászólására (») Dec 28, 2023 /
 
A programban valahol kell lennie egy
  1. #define _XTAL_FREQ (8000000)
sornak. Itt nem jó érték van megadva, vagy nem jó az oszcillátor beállítása (OSCCON regiszter). Egyik részlet sem látható a hozzászólásoban.
(#) glaci válasza Bakman hozzászólására (») Dec 28, 2023 /
 
Szia!
A program mikroc pro for pic ben íródik és abban a beállításokban szerepel.

projekt.png
    
(#) Pali79 válasza glaci hozzászólására (») Dec 28, 2023 /
 
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
(#) sonajkniz válasza glaci hozzászólására (») 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ó:
  1. W_US    MACRO   MENNYI
  2.         MOVLW   MENNYI
  3.         MOVWF   WAIT
  4.         DECF    WAIT
  5.         NOP
  6.         NOP
  7.         DECFSZ  WAIT
  8.         GOTO    $-2
  9.         ENDM

U.i. Ezt 2-255usec-ig lehet állítani.
A hozzászólás módosítva: Dec 28, 2023
(#) Bakman válasza glaci hozzászólására (») 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:
  1. OSCCON = 0b01110000;
(#) glaci válasza Bakman hozzászólására (») Dec 28, 2023 /
 
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!
(#) Bakman válasza glaci hozzászólására (») Dec 28, 2023 /
 
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.
(#) glaci hozzászólása Dec 29, 2023 /
 
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);
}

}
  1.  
A hozzászólás módosítva: Dec 29, 2023
(#) Bakman válasza glaci hozzászólására (») 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:
  1. ANSEL=0;
  2. ANSELH=0;
(#) glaci válasza Bakman hozzászólására (») Dec 29, 2023 /
 
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!
(#) treshold hozzászólása Dec 29, 2023 /
 
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
(#) pipi válasza treshold hozzászólására (») Dec 29, 2023 /
 
És mi a eredmény/hibaüzenet?
(#) treshold válasza pipi hozzászólására (») Dec 29, 2023 /
 
Csatolva
(#) Bakman válasza treshold hozzászólására (») Dec 29, 2023 /
 
Valószínűleg
  1. #include <p18f25k50.inc>
helyett
  1. #include <pic18f25k50.inc>
(#) treshold válasza Bakman hozzászólására (») Dec 29, 2023 /
 
Módosítva #include <pic18f25k50.inc> -ra
Következő: »»   1198 / 1206
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