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   537 / 1210
(#) zenetom válasza nagzso hozzászólására (») Jún 13, 2014 /
 
Szia!
Az nem lesz piskóta, itt egy kis olvasmány: Bővebben: Link.
A hozzászólás módosítva: Jún 13, 2014
(#) HerrTopi hozzászólása Jún 14, 2014 /
 
Sziasztok!

Ismét sikerült elakadnom az én kis projectemben, ráadásul igen érdekes módon. A mellékelt kódban a pár hozzászólassal ezelőtt leírt módon, az RB4 láb által onchange-re létrehozott interrupttal mérek egy távirányító vevőjéből jövő négyszög jelet és ezt igyekszem feldolgozni. Van egy high és egy low változóm, ahova a négyszögjel egy aktuális "periódusának" a magas és alacsony állapotainak az időtartamát rögzítem. (lásd:interrupt fgv.) Csak próba képpen, hogy mégis mekkora értékeket vesz fel a low/high hányados, gondoltam megkérem a pic-et, hogy erre a hányadosra (illetve ennek 20-szorosára) állítsa be a pic PWM modulját. Gyönyörűen működött is a dolog, oscilloscope-pal mértem a pwm jelet és tényleg a várhoz nagyon közeli értékeket mértem. Ekkor a távirányítón elcsavartam a kereket előre (ekkor maga az adóból kijövő jel kitöltöttsége nő, 11%-ról kb 15%-ra). Ennek hatására a low/high hányados csökkent és a kimeneti pwm jelem is gyönyörűen (átmenet nélkül!!) nekiállt csökkenni. Ha visszaengedtem alapállásba a kereket, akkor is szépen visszaállt a pwm alaphelyzetbe, viszont ha hátrafele kezdtem tekerni egyáltalán semmit nem csinált. Megmértem az adóvevőből kijövő jelet és az rendesen változik (11%-os kitöltöttségtől 7% körülig), tehát valaminek történnie kéne, de egyáltalán semmi nem történik, marad a pwm ugyanabban az állapotban, mint a kerék tekerése nélkül. Ennek mi lehet az oka? Ötletem sincs. Köszönöm!

És akkor a szóbanforgó kód:
  1. #include <xc.h>
  2. #include <p18f14k50.h>
  3.  
  4. #pragma config WDTEN = OFF
  5.  
  6. volatile long int low = 0;
  7. volatile long int high = 0;
  8. volatile int pwm = 0;
  9. void initOnChangePORTAB(void) {
  10.  
  11.                 ANSEL = 0x00;                                   //Minden láb digitális kimenet
  12.                 ANSELH = 0x00;                                  //Minden láb digitális kimenet
  13.         INTCONbits.RABIE=1;           //A és B port onChange interrupt bekapcsolva
  14.                 INTCON2bits.RABIP=1;                    //onChange interrupts high priority
  15.                 IOCBbits.IOCB4 = 1;                     //A B port RB4 lábán engedélyezve az intOnChange
  16.         INTCONbits.RABIF=0;           //Interrupt jelzőbit
  17.                 RCONbits.IPEN=1;                                //Kétszintű megszakítási mód beállítása        
  18.                 ei();                                                   //minden megszakítás engedélyezése
  19.  
  20. }
  21. void main (void)
  22. {
  23.         initOnChangePORTAB();
  24.         OpenTimer0
  25.         (
  26.                 TIMER_INT_OFF   &
  27.                 T0_16BIT                &
  28.                 T0_SOURCE_INT   &
  29.                 T0_PS_1_1
  30.         );
  31.         OpenPWM1(0xff);
  32.         SetOutputPWM1 (SINGLE_OUT, PWM_MODE_1);
  33.         SetDCPWM1(0);
  34.         while (1)
  35.         {      
  36.                 pwm=((double)low/high)*20;
  37.                 SetDCPWM1(pwm);
  38.         }
  39. }
  40.  
  41. void interrupt high_priority cucc(void)
  42. {
  43.         if(PORTBbits.RB4)
  44.         {
  45.                 low=ReadTimer0();
  46.                 WriteTimer0(0);
  47.                
  48.         }
  49.         if(!PORTBbits.RB4)
  50.         {
  51.                 high=ReadTimer0();
  52.                 WriteTimer0(0);
  53.        
  54.         }
  55.         INTCONbits.RABIF=0;  
  56. }
(#) don_peter válasza HerrTopi hozzászólására (») Jún 14, 2014 /
 
Debug mit mutat?
Ott sem változik semmi?
Nem lehet, hogy a 20-al való szorzás kevés? (ez csak tipp)
A kétszintű megszakítás biztos jól van megadva? (alacsony és magas)
A hozzászólás módosítva: Jún 14, 2014
(#) Pali79 hozzászólása Jún 16, 2014 /
 
Újabb kérdés sebességmérővel kapcsolatban: az egyik összetevő amivel számolni kellene a kerék kerülete, ami nem egész szám. Hogyan lehet ezt assemblyben megoldani?
(#) Birs Alma válasza Pali79 hozzászólására (») Jún 16, 2014 /
 
Hát ne cm -ben számolj, hanem mm-ben. Az csak elég pontos már ahhoz, hogy ne kelljen törteket használnod.
(#) frekivalto hozzászólása Jún 16, 2014 /
 
Sziasztok.

Segítségetekre lenne szükségem, méretezésben.

Adott egy PIC18F2523, 8MHz-es órajellel, PWM periódus idő 512 usec., frekvencia:1,953125 kHz.
Egy áramgenerátort szeretnék vele meghajtani úgy, hogy a PWM kimenetet "simítani" kell, 0-5VDC-re. A kitöltési tényező változtatásával szeretném a kimeneti "DC"jelet beállítani.
A csatolt rajzon az R20-C20 tagok értékére lenne szükségem.
Jelen pillanatban ott tartok, hogy az erősítő kimenetén "fűrész jelem" van, tehát nem jó a bemeneti szűrő beállítása. Egyenlőre nem szeretnék D/A átalakítót felhasználni, ha nem muszáj.

Köszönöm.

pwm.pdf
    
(#) Bell válasza frekivalto hozzászólására (») Jún 17, 2014 /
 
A bemenő feszültséget R21/(R20+R1) arányban osztja le az osztó, a C20 kondenzátor értékétől függ a fűrészjel nagysága.
Nagyobb kondi kisebb fűrész. Te tudod, mekkora fűrész nem zavaró.
(#) don_peter hozzászólása Jún 18, 2014 /
 
Uraim, kérnék egy kis segítséget vagy legalább is felülbírálást egy számításomban.
PIC16F628-as vezérlő egy 4MHz kristállyal lenne felszerelve 22pf-os kondikkal.
Órát akarok készíteni és ezért a kellene használnom a timer1-es modulját.
Másodpercenként akarok egy változót a megszakítással növelni.

A számítást a következő képen gondolom:
  1. // Timer_period = 1 s, Fcy = 4 MHz és PS = 1:8 esetén az előtöltés értéke:
  2. // Timer = 65536 - 4 000 000/8 ==  15536 == 3CB0
  3. TMR1H = 0x3C;
  4. TMR1L = 0xB0;


A regiszterek beállítása pedig így néz ki:
  1. CMCON = 7;                              // Comparator off
  2.         CCP1CON = 0;                    // Capt/Comp/PWM off
  3.         INTCON = 0;                             // all interrupt bits off
  4.         PEIE   = 1;                             // Peripheral interrupt
  5.         GIE    = 1;                             // globális interrupt
  6.  
  7.         //Timer1 beállítások
  8.         TMR1ON  = 1;                    // Timer1 On bit
  9.         TMR1CS  = 0;                    // Timer1 Clock Source Select bit (FOSC/4)
  10.         T1SYNC  = 0;                    // Timer1 External Clock Input Synchronization Control bit
  11.         T1OSCEN = 1;                    // Timer1 Oscillator Enable Control bit
  12.         T1CKPS0 = 1;                    // 1:8 Prescale value
  13.         T1CKPS1 = 1;
  14.         PIR1 = 1;
  15.         PIE1 = 1;
  16.        
  17.         //Timer1 feltöltése
  18.         TMR1H = 0x3C;
  19.         TMR1L = 0xB0;
  20.         TRISA = 0;
  21.         TRISB = 0;

vicsys féle bináris óra kapcsolása alapján akarom C-ben megírni hozzá a kódot.
Előre is köszönöm.

ui: most veszem észre, hogy a számolásom nem jó mert a 8-al való osztás az 500e lenne ami túl sok, de ez a legnagyobb osztója a timer1 modulnak.
Vagy nem jól értem a dolgot..
A hozzászólás módosítva: Jún 18, 2014
(#) Hp41C válasza don_peter hozzászólására (») Jún 18, 2014 /
 
Miért nem a Timer2 -t használod? Timer2 előosztó 4, PR2 = 250 - 1. Ekkor a Timer2 megszakítás 4MHz -es órajelnél 1ms -enként érkezik. Egy 1000 -ig menő számláló a programban és máris megvan az 1Hz -es órajel. Ha a Timer2 otóosztó 5 vagy 10, a programbeli számláló 200 -as vagy 100 -as is lehet - elfér 1 byte -on is.
A hozzászólás módosítva: Jún 18, 2014
(#) don_peter válasza Hp41C hozzászólására (») Jún 18, 2014 /
 
Azt hittem timer1 fog kelleni nekem mivel az 16bites, de megnézem a timer2-őt.
timer0-val nem tudom megfelelően beállítani mert maximum csak 8 az előosztása.
(#) Hp41C válasza don_peter hozzászólására (») Jún 18, 2014 /
 
Timer0: Csak 2 hatványainak megfeleő modulus állítható be, csak 2 hatványának megfeleő quartz -cal lesz pontos (egyszerű programmal) pl. 4.096MHz. Roman Black féle módszerrel tehető pontossá.
Timer1: Programból kell a modulust beállítani, ráadásul a timer írása körülményes (ld. errata).
Timer2: Egyszer beállítod és működik. Nem kell programból továbbá törődni az állításával. Szélesebb modulus állítási lehetőség.
(#) don_peter válasza Hp41C hozzászólására (») Jún 18, 2014 /
 
Közben nézegettem a dolgot.
Most így állítottam be:
  1. CMCON = 7;                              // Comparator off
  2.         CCP1CON = 0;                    // Capt/Comp/PWM off   
  3.         INTCON = 0;                             // all interrupt bits off
  4.         PEIE   = 1;                             // Peripheral interrupt
  5.         GIE    = 1;                             // globális interrupt
  6.        
  7.         //Timer2 beállítása
  8.         T2CKPS0 = 1;                    // Timer2 Clock Prescale Select bits
  9.         T2CKPS1 = 0;
  10.         TMR2ON  = 1;                    // Timer2 On bit
  11.         TOUTPS0 = 1;                    // Timer2 Output Postscale Select bits
  12.         TOUTPS1 = 1;
  13.         TOUTPS2 = 1;
  14.         TOUTPS3 = 1;
  15.         TMR2IE = 1;
  16. ;

Előosztó 1:4, utóosztó 1:16
Jól lőttem be?
(#) Hp41C válasza don_peter hozzászólására (») Jún 18, 2014 /
 
Nem tudom mit is szeretnél. PR2 állítása kimaradt. Miért kell egy regisztert 8 utasítással állítani?
TMR2CON = ((utoosztó - 1) << 3) | (1 << TMR2ONbit) | (elooszto);
4MHz órajel, 1000 -ret osztva: a megszakítás 1 ms -enként.
  1. PR2 = 249;
  2. TMR2CON = 5;
  3. TMR2IE = 1;
  4. PEIE = 1;
  5. GIE = 1;
A hozzászólás módosítva: Jún 18, 2014
(#) don_peter válasza Hp41C hozzászólására (») Jún 18, 2014 /
 
"Nem tudom mit is szeretnél."
Másodpercenként szeretnék növelni egy változót.
Gyakorlatilag egy órát akarok készíteni.

"Miért kell egy regisztert 8 utasítással állítani?"
Mert amit letöltöttem a HI-TECH 10-12-16-os PIC .h állományaiban így van megadva.
Én sem értettem, de így működik.

Kipróbálom a tiéd, hátha beveszi a gép
Köszi.

ui: igen, ki is köpte egyből.
Kellenek a beállításaim.
A hozzászólás módosítva: Jún 18, 2014
(#) don_peter hozzászólása Jún 18, 2014 /
 
Nos így áll a program hátha érdekel még valakit a dolog.
Véleményetek szerint jó így a teljes beállítás?
Ha igen akkor nekilátok és írom tovább a programot és elkészítem az órám végre
P16F628 + 4MHz kristály.
  1. #include <htc.h>                        // 10,12,16-os PIC definíciók
  2. #include <stdio.h>                      // Alap függvények
  3. #include <stdlib.h>                     // Alap függvények
  4. #include "lcd.h"
  5. #include "lcd.c"
  6.  
  7. //---- Konfigurációs beállítások
  8. #include "header.h"                     // Konfigurációs beállítások
  9.  
  10. unsigned short timer_count = 0;
  11.  
  12. // ----------------------------
  13. //  Interrupt service routine
  14. // ----------------------------
  15. extern interrupt isr(void) {
  16.         timer_count++;
  17.         TMR2IF = 0;
  18. }
  19.  
  20. void main(void){
  21.        
  22.         CMCON = 7;                      // Comparator off
  23.         CCP1CON = 0;                    // Capt/Comp/PWM off   
  24.         INTCON = 0;                     // all interrupt bits off
  25.        
  26.         //Timer2 beállítása
  27.         PR2 = 249;
  28.         T2CON = 5;
  29.         TMR2IE = 1;
  30.         PEIE = 1;
  31.         GIE = 1;
  32.    
  33.         TRISA = 0;
  34.         TRISB = 0;
  35.        
  36.         lcd_init();
  37.         lcd_goto(LINE1);
  38.         lcd_puts(buffer);
  39.         lcd_goto(LINE2);
  40.         lcd_puts(ido_buffer);
  41.         __delay_ms(1000);
  42.         lcd_clear();
  43.  
  44.  
  45.         while(1){
  46.                 lcd_goto(LINE1);
  47.                 lcd_putch(timer_count);
  48.                 __delay_ms(10);
  49.         }//while
  50.        
  51. }//main

Előre is köszi a megerősítést és segítséget.
(#) Hp41C válasza don_peter hozzászólására (») Jún 18, 2014 /
 
A kiszolgáló rutin 1ms -enként fut le. A megszakításban növelt számlálót nem vizsgálod sehol sem.
  1. unsigned int timer_count = 0;
  2. bool flag1s = false;
  3.  
  4. // ----------------------------
  5. //  Interrupt service routine
  6. // ----------------------------
  7. extern interrupt isr(void) {
  8.         timer_count++;
  9.         if (timer_count == 1000)
  10.         {
  11.              timer_count = 0;
  12.              flag1s = true;
  13.         }
  14.         TMR2IF = 0;
  15. }

...
  1. while(1){
  2.            if (flag1s)
  3.            {
  4.                 lcd_goto(LINE1);
  5.                 lcd_putch((timer_count & 0x0F) + 0x30);
  6.                 flag1s = false;
  7.             }
  8.         }//while
(#) don_peter válasza Hp41C hozzászólására (») Jún 18, 2014 /
 
Igen a megszakítás rutin még nem volt megírva, debugból ellenőriztem és külön mértem az időt.
Köszönöm a segítséged és a kiegészítést.
(#) cross51 hozzászólása Jún 19, 2014 /
 
Hello!

Egy kis segítséget szeretnék kérni a mutatókkal kapcsolatban.
Egy apró programrészlet:
  1. void SendStringSerially(const uint8 *st){
  2.     while(*st){
  3.         Send2ByteSerially(DATA , *st++);
  4.     }      
  5. }

ebben amit nem értek az lenne, hogy a Send2ByteS.. *st++-al mért növeli a mutató memória címét ?
Szóval nem így lenne a helyes:
  1. void SendStringSerially(const uint8 *st){
  2.     while(*st){
  3.         Send2ByteSerially(DATA , *st);
  4.         st++;
  5.     }      
  6. }

Működik mind kettővel csak az első verziót nem értem, hogy úgy mért működik.
(#) don_peter válasza Hp41C hozzászólására (») Jún 19, 2014 /
 
  1. lcd_putch((timer_count & 0x0F) + 0x30);

Ezt a sort el tudnád magyarázni mi szükség van az & 0x0F illetve a 0x30 hozzáadására?
Ez valami kompenzáció?
A hozzászólás módosítva: Jún 19, 2014
(#) kissi válasza don_peter hozzászólására (») Jún 19, 2014 /
 
Szia!

Az "timer_count & 0x0F" a timer_count alsó 4 bitjét hagyja meg, amihez hozzáadva 30 hexa-t ( a '0' ASCII kódja! ) megkapjuk timer_count alsó 4 bitjén lévő szám ( 0-9 ) ASCII kódját és ez mehet a kijelzőre!

Bocs,hogy beleszólok, csak most itt voltam "gyorsba" !
(#) don_peter válasza kissi hozzászólására (») Jún 19, 2014 /
 
Ohhh tényleg, a fenébe
Éppen most kínlódom vele és itt volt az orrom előtt a megoldás
Köszönöm a gyors segítséget
(#) icserny válasza cross51 hozzászólására (») Jún 19, 2014 /
 
Pontosan ugyanazt csinálja mindkettő. A *st++ jelölés értelmezése az, hogy a régi címre hivatkozik, és csak utána növeli meg a mutató értékét.
A hozzászólás módosítva: Jún 19, 2014
(#) Hp41C válasza kissi hozzászólására (») Jún 19, 2014 /
 
Ennyira nem egyszerű az élet. Elég pongyola voltam. A 0..9 jól konvertálódik, de a 10..15 már nem. Az így kialakított kódhoz 9 fölötti értékeknél még hozzá kellene adni 7 -et...
(#) kissi válasza Hp41C hozzászólására (») Jún 19, 2014 /
 
Azért írtam, hogy 0 ... 9, nem néztem vissza, azt hittem csak ez kell Neki !
A hozzászólás módosítva: Jún 19, 2014
(#) cross51 válasza icserny hozzászólására (») Jún 19, 2014 /
 
Köszönöm a gyors választ!
A hozzászólás módosítva: Jún 19, 2014
(#) don_peter válasza kissi hozzászólására (») Jún 19, 2014 /
 
Igen, igen csak 0-9-ig érdekes a dolog mivel az órának minden számjegyét külön kezelem.
vicsys féle bináris óra lesz belőle előbb-utóbb, de előbb teljesen meg kell írjam C-ben.
(#) aroxol hozzászólása Jún 19, 2014 /
 
Sziasztok!

Egy óriási segítséget szeretnék kérni. Az alábbi kódot kellene módosítani úgy hogy még egy plusz szoftveres soros port is legyen, az RCREG2-vel azonos beállitásban, pl. RA1 láb legyen RX. (vevő). TX (adó) nem kell. Az a gondom hogy mindkét meglévő soros port foglalt, és így nem tudom debbugolni. Sajnos az angol tudásom =0-val, adatlap van, csak hát ugye érteni is kellene. Segítséget előre is nagyon köszönöm!
  1. #INCLUDE <P18F26K22.INC>       
  2.  
  3.  
  4.  
  5.  
  6.         __CONFIG        _CONFIG1H,      B'00100011'             ; 010 = HS OSCILLATOR, PLL DIABLED. 12MHZ-ES KRISTÁLY
  7.                                                                                         ; OSCILLATOR SYSTEM CLOCK SWITCH OPTION IS DISABLED (MAIN OSCILLATOR IS SOURCE)        
  8.         __CONFIG        _CONFIG2L,  B'00000110'         ; BROWN-OUT RESET DISABLED, PWRT ENABLED
  9.         __CONFIG        _CONFIG2H,  B'00110110'         ; WDT ON, OSZTÁS 8000 , 30MP
  10.         __CONFIG        _CONFIG3H,  B'10000000'    ;
  11.    
  12.         __CONFIG        _CONFIG4L,      B'00000001'             ; BACKGROUND DEBUGGER ENABLED.
  13.                                                                                                
  14.         __CONFIG        _CONFIG5L,      B'00000000'             ; CODE PROTECT
  15.         __CONFIG        _CONFIG5H,      B'10000000'             ; RAM, BOOTBLOCK PROTECT OFF
  16.         __CONFIG        _CONFIG6L,  B'00001111'         ; WRITE PROTECT OFF
  17.         __CONFIG        _CONFIG6H,      B'11100000'             ; RAM WRITE, BOOT WRITE, CONF REG WRITE PROTECT OFF
  18.         __CONFIG        _CONFIG7L,  B'00001111'         ; TABLE READ PROTECTION OFF
  19.         __CONFIG        _CONFIG7H,      B'01000000'             ; BOOT READ PROTECT OFF
  20.  
  21.         CBLOCK          0X00
  22.         REG1
  23.         ENDC
  24.  
  25.         ORG 0000H
  26.         GOTO PROGRAM
  27.        
  28. PROGRAM
  29.  
  30. ;------------------------- PORTOK BEÁLLÍTÁSA 1-> BEMENET, 0-> KIMENET --------------------------------------------
  31.  
  32.         MOVLB  0X0F
  33.         CLRF ANSELC
  34.         CLRF ANSELB
  35.         CLRF ANSELA
  36.         MOVLB  0X00
  37.         CLRF PORTA
  38.         CLRF PORTB
  39.         CLRF LATC
  40.         MOVLW B'11100000'
  41.         MOVWF TRISA
  42.         MOVLW B'11011111'
  43.         MOVWF TRISB
  44.         MOVLW B'11010000'
  45.         MOVWF TRISC
  46.  
  47.  
  48. ; -------------------- --------USART INICIALIZALASOK --------------------------------------------
  49.  
  50.         MOVLW B'10010000'
  51.         MOVWF RCSTA1
  52.         MOVLW B'00100100'
  53.         MOVWF TXSTA1
  54.         MOVLW .25
  55.         MOVWF SPBRG1
  56.         MOVLW B'00001010'
  57.         MOVWF BAUDCON1
  58.         CLRF SPBRGH1
  59.         CLRF RCREG1
  60.         CLRF TXREG1
  61.         BCF PIR1,5
  62.         BCF PIR1,4
  63.         CLRF RCREG1                    
  64.  
  65.         MOVLW B'10000000'
  66.         MOVWF RCSTA2
  67.         MOVLW B'00100100'
  68.         MOVWF TXSTA2
  69.         MOVLW .154
  70.         MOVWF SPBRG2
  71.         MOVLW B'00000000'
  72.         MOVWF BAUDCON2
  73.         CLRF SPBRGH2
  74.         CLRF RCREG2
  75.         CLRF TXREG2
  76.         BCF PIR3,5
  77.         BCF PIR3,4
  78.         CLRF RCREG2
  79.         CLRF TXREG2
  80.  
  81.         END
A hozzászólás módosítva: Jún 19, 2014
(#) gaspar_zsolt hozzászólása Jún 19, 2014 /
 
Sziasztok,
tudnátok egy szoftveres PWM program megoldást beszúrni vagy linkelni, ahol át tudnám tanulmányozni. A hardveres egységeket már sikeresen alkalmaztam, de erre is kíváncsi vagyok!
Köszönöm.
(#) kisjoke91 hozzászólása Jún 19, 2014 /
 
Sziasztok!

Nagyon szeretnék megtanulni Pic-et Programozni, mert mindig is csodálattal tekintettem erre a világra, és gondoltam ha más meg tudja csinálni, hát akkor én is képes leszek rá.

Nem tudom hogyan állhatnék neki, mivel csak nem rég kezdtem el c++ nyelven tanulni, amit nagyon meg szerettem mert ahogy haladok egyre több dologra vagyok vele képes, és elég sok lehetőséget rejt magában ez a nyelv, szóval nagyon szeretném ezt a nyelvet alkalmazni a programozáshoz, de nem igazán találtam semmi jó forrást.

a másik kérdésem, hogy mindezt Mac OS X en lehetséges e? kérlek titeket segítsetek elindulni.
(#) Beles hozzászólása Jún 19, 2014 /
 
Sziasztok!
dsPIC33f2011-el bajlódok. Beállítottam egy megszakítást az INT0-ra, de ha magas szint van ezen a lábon, a mikrokontroller egyszerűen lefagy. Pickit3-al debugolom, és folyton reset vektorra ugrik! Ha alacsony szinten tartom a lábat, akkor megy minden. Ha a program indulásakor nem kötöm magasra, és később generálok megszakítást, akkor hol működik, hol nem. Oda ugrik a megszakítás függvényre, ami ez:
  1. void __attribute__((__interrupt__, no_auto_psv)) _INT0Interrupt(void)
. Mi a fenétől fagyhat ki? Ha túl sok kód van a megszakítás vektornál, az okozhatja?
Következő: »»   537 / 1210
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