https://obrazki.elektroda.pl/8335986900_... Witajcie moi drodzy Przedstawię tutaj przykład użycia 32-bitowego mikrokontrolera PIC32MX250F128B w roli hosta USB obsługującego pendrive (zapisującego i odczytującego z niego dane). W temacie opiszę najpierw płytkę którą pod tego PICa zaprojektowałem, a potem przykładowe kody obsługi pendrive...
https://obrazki.elektroda.pl/2718988000_... Witajcie moi drodzy W tym temacie pokażę jak każdy początkujący może najprościej uruchomić w warunkach amatorskich mikrokontroler PIC32MX795F512H bez potrzeby trawienia/kupowania pod niego konkretnego PCB. Oprócz minimalnego niezbędnego układu pracy tego mikrokontrolera umieszczę tutaj kilka...
#pragma interrupt_handler ISR Dla jakiego kompilatora i MCU ten kod jest napisany? :)
Jeśli w PIC18 oscylator pracuje z 40MHz, to znaczy że taktowanie cykli procesora to 10MHz. Przy 1 Mhz PWM wychodzi na to, że co każde zbocze narastające procesor wykonuje tylko 10 cykli, co najprawdopodobniej jest za mało by w tym czasie obsłużyć przerwanie, wysłać wartość przez UART. Poza tym w kodzie brakuje funkcji obsługi przerwania. Przerwanie...
dołożyłem do gotowego programu zmienna nadaj #include <mega32.h> #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<OVR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)...
Kolego Prymulka , czy błędy które "wyrzuca" kompilator nic Ci nie mówią :?: Jakie "inkludy" podstawić , podpowiedzieli koledzy ;) //#include <inavr.h> #include <avr/signal.h> #//include <ioavr.h> #include <avr/io.h> #include "dataflash.h" Poniższe mówi samo za siebie: //#pragma vector = TIMER1_OVF_vect //__interrupt...
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
A nie powinienes przed procedura obslugi przerwania napisac #pragma interrupt_level 1 jesli to jest pisane w PICC hitecha... Napisz moze jeszcze jaki kompilator i procesor.
#pragma vector = <VECTOR_NAME> __interrupt void <ISR_NAME> (void) { // сюда вписыk... код обрабl... прерыk...
Witam . W PIC-ach 18 po wykryciu zdarzenia (przerwania) wykonywany jest skok pod adres wektora 0x08 dla high_priority lub pod 0x18 dla low_priority . Pod który adres wykonany zostanie skok zależy od konfiguracji odpowiednich bitów. Dodatkowo w kodzie należy umieścić pod jakimi adresami znajdują się wektory . Przykładowa obsłóga przerwania . void high_isr(void);...
Czy mógłbyś wytłumaczyć działanie następujących linijek kodu: #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) w "wolnym tłumaczeniu" Linijka jeden: Adres kolejnej obsługi przerwania zapisany będzie we Flashu pod vectorem przerwania od Timera A0. Linijka dwa: Ta funkcja jest obsługą przerwania a więc powinna kończyć się na RETI a nie na...
Jaki kompilator ? wskazujesz kompilatorowi ktora funkcja jest przerwaniem ? np w HT #pragma interrupt_level 1 void interrupt isr(void) { } Nie dziala rowniez dlatego ze kasujesz flage przerwania INTCON = 0xA0; przed instrukcja if ( T0IF == 1 ) INTCON = 0xA0; ta linia nie jest potrzebna
czemu nie tak: #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { int temp; temp = TAR; int k; k = 6; for(;;) { for (m=1; m <800[b];[/b] m++) { if(counter1 == temp) { P1OUT ^= 0x02; counter1 = temp + k; k += 3; } } if ( counter1 == temp) { P1OUT...
Witam. Mam pewne wątpliwości związane z obsługą przerwań a mianowicie : w modelu PIC18xxx mamy do wyboru dwa rodzaje przerwań -compatible mode - wszystkie o tym samym priorytecie -priority mode ( podział na high i low priority ) Jeśli wybrałem priority mode i chce obsłużyć dane przerwanie to wygląda to tak: Dodano po 2 Doświadczalnie sprawdzone : działa...
Pewnie kolega zakupił LaunchPad'a, też go mam i do tej pory udało mi się "zamigotać" używając identycznych funkcji ze znanych z programowania w C AVR'ów + magiczne konfiguracje samego MSP430. Ale banalny przykład z pierwszego postu świadczy o nieznajomości budowy mikrokontrolera. Sam przed chwilą szukałem w plikach nagłówkowych co oznacza (być może...
dzieki, a w takim kodzie napisanym w C co trzeba zrobic zeby dioda migała co 0,5s? ten sam uC... #include "htc.h" #include "lcd.h" __CONFIG(BORDIS&PWRTDIS&WDTD... #defineXTAL_FREQ4MHZ #define Freq 4 #include "delay.h" #define bitset(var,bitno) ((var) |= 1UL <...
Tuż przed definicją funkcji clr_pin() dodaj: #pragma interrupt_level 0 Nigdy nie wywołuj tej samej funkcji jednocześnie w main() i ISR jeśli nie wiesz co robisz:). ISR może w dowolnym momencie przerwać wykonanie fukcji w main(), rozwali zmienne lokalne i NIE odtworzy ich po wyjściu. Niestety kompilatory Hitech nie obsługują software stack stąd funkcje...
tak to jest wina wolnej obslugi przerwania bo na OC0 byl przebieg..a jak ustawilem OCR0 na 255 to przebieg juz nie gasnie....ale czas czestotliwosc podobnie cos ponad 250kHz..niecale 300KHz...ale dalem kwarc 25MHz i uzyskalem czestotliwosc 500kHz...ale procedura bedzie dluzsza wiec i tak trzeba bedzie napisac ja w assemblerze...dziekuje za pomoc i temat...
Witam, Popełniłeś kilka błędów: - aby odblokować przerwania od przepełnienia timera 1 trzeba ustawić bit 2 a nie 5 w rejsestrze TIMSK - wektor przerwania od przepełniania timera 1 to nie 0x12 a 0x24 Dobrze jest przy pisaniu w C korzystać z funkcji dostarczanych wraz z kompilatorem "intrinsic function" takich jak __interrupt_enable, __interrupt_disable,...
// Timer_A2 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { if(CCR1<CCR0) { CCR1 = j+30; // CCR1 PWM duty cycle } else { CCR1=90; } } Eh.. no nie wiem niestety, co ja tutaj robie źle?
funkcja inicjalizacyjna [syntax=c] void SystemInit(void) { //PORTH initialize TRISH = 0b00001111; // (0)-output (1)-input ADCON1 |= 0x03; // RH7...RH4 digital I/O MEMCON |= 0x80; // RH3...RH0 I/O pin enabled, external memory bus A19...A16 disabled //PORTA initialize TRISA = 0b01011111; //PORTB initialize //TRISB = 0b11111111; TRISBbits.TRISB4 = 0; INTCONbits.RBIE...
Witam pin RxD powienien być ustawiony jako wejscie w rejestrze DDRD.0=0 ustawiony jako wejscie i PORTD.0 =1 podciagamy do gory inicjacja powinna być tak jesli coś u Ciebie jest inaczej sprawdz takie ustawienia void port_init(void) { PORTD = 0x03; DDRD = 0x02; } //UART0 initialize // desired baud rate: 9600 // actual: baud rate:9615 (0,2%) void uart0_init(void)...
...Czekam na pomoc... Jeden obraz , potrafi zastąpić tysiąc słów :D #include <ioavr.h> #include <inavr.h> volatile unsigned char x=0; #pragma vector=INT0_vect __interrupt void INT0_ISR(void) { x++; } /* ... */ Poczytaj w pliku pomocy o dyrektywach #pragma - one wiele potrafią ;) Piotrek
W tym fragmencie: /* Interrupt handlers */ #pragma vector=USART0_RXC_vect __interrupt void USART0_RX_interrupt(void){ ---------> LINIA: 72 unsigned char data; unsigned char tmphead; /* Read the received data */ data = UDR0; /* Calculate buffer index */ tmphead = ( USART_RxHead + 1 ) & USART_RX_BUFFER_MASK; USART_RxHead = tmphead; /* Store new...
kilka uwag jakie mi przychodza do glowy: 1.Program ma blad jezeli dobrze widze... #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) { int v,u; TCNT0 = 0xB2; //reload counter value T0++; K=1; if ((T0 % 10)<2) { u=ReadADC(0); v=ReadADC(7); Error=(v-u); if (abs(Error)>=E_Min).....
Witam, Oczywiscie licznik byl resetowany przed uruchomieniem, tylko nie dopisalem w poscie :). Dodano po 4 Witam, Zrobiem jak zalecono: wdr ldi R16, 0b00001000 /* 16 ms */ out WDTCR, R16 I chyba się potnę! Resetuje się i koniec! Dodano po 42 Witam, Jeszcze raz ja, więc zażenowany całą tą sytuacją usunąłem wszystko (prawie) z kodu i oto co zostało: #include...
Tak, wyczerpałeś, ale mi chodzi o to czy jeśli będę używał OCR1 to czy obsługę przerwania będę musiał wpisać w przerwaniu TCNT1 czy OCR1? z przepełnienia rejestru TCNT1 #pragma vector = TIMER1_OVF_vect __interrupt void przepelnienie_T11(void) { PORTB_Bit6=~PORTB_Bit6; } czy z przepełnienia rejestru OCR1? #pragma vector = TIMER1_COMPA_vect...
Bawię się ostatnio wspomnianym w tytule mikrokontrolerem i natknąłem się na problem z zewnętrznymi przerwaniami, którego nie potrafię obejść. Zaczynając od tego co działa: układ jest sprawny na pewno, jest podłączony, cały czas hula dioda sterowana przez timer z ustawionym przerwaniem na przepełnienie; podłączony jest również PICkit 3 przez icsp. Korzystam...
Witam Jestem początkującym użytkownikiem msp430 launchpad, jak i ogólnie początkującym jeżeli chodzi o programowanie. Ucząc się programowania, chciałem napisać kod, który po podłączeniu dwóch przycisków do mojej płytki pozwoliłby przy wciśnięciu jednego przycisku włączyć diodę czerwoną a po naciśnięciu drugiego przycisku wyłączałby diodę czerwoną a...
Konkretnie to próbuję pisać program pod obsługę. Ale nie mam obecnie niestety oscyloskopu. Spróbowałem napisać coś takiego : #include <msp430xG46x.h> #include <stdint.h> #include <intrinsics.h> unsigned int RxByteCtr; unsigned int RxWord; void main(void) { volatile uint16_t i; WDTCTL = WDTPW + WDTHOLD; // Stop WDT // P1.0...
[syntax=cpp]#define PER 32768 void main(void) { if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) { while(1); } //1Mhz BCSCTL1 = CALBC1_1MHZ; //DCO=1MHz DCOCTL = CALDCO_1MHZ; //LFXTAL BCSCTL1 |= DIVA_0; BCSCTL2 = SELM_2 | DIVM_0;//MCLK =DCO //SMCLK = DCO BCSCTL3 = LFXT1S_0 | XCAP_1;//ACLK = 32768Hz //--------------------- Timer A -----------------------------...
Witam Chcialbym zrobic zegar RTC na timerze TA <w sumie to na TB, ale narazie nic nie dziala>. chcialbym do tego użyc sygnału ACLK oraz trybu UPMODE? Ale pojawia sie problem: To jest programik ze stronki TI ale mi nie dziala, pewnie dlatego ze jest tryb LPM3, ale jak zmienie na LMP0 tez nie dziala.... #include <msp430x13x.h> void main(void)...
Mam jeszcze jedno pytanie czy przerwania też trzeba deklarować w pliku "h" ?? tak jak np. #pragma vector = PCINT1_vect __interrupt void PCINT1_ISR(void); tylko , że mój kompilator tego nie łyka Dodano po 2 flapo213 gdybym nie dodał *.c w Makefilu pozostałe funkcje by sie nie kompilowały.
Dlaczego, gdy chcę ustawić by timer_a był taktowany zegarem aclk, ten nie działa poprawnie ? większość ustawien jest podobnych: void main(){ WDTCTL=WDTPW+WDTHOLD; P2DIR|=0x02; BCSCTL1=XTS; TACCTL0=CCIE; TACCR0=32768 TACTL=TASSEL_1+MC_1; __BIS_SR(LPM3_bits+GIE); } #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A(void){...
No to coś napisałem na AVRStudio 4.05.0.181 (na kolanie) :) . Co prawda na ATmega8 , ale przeportowanie to pestka(niektóre wektory przerwań do skasowania/zmiany nazwy i "2313def.inc" zamiast "m8def.inc" , prędkość kwarcu Xtal też do poprawki...), raczej tu chyba nie ma rozkazów niezaimplementowanych w AT90S2313 . ;included in next file - line ".device...
#include "io430.h" #include "intrinsics.h" int licznik1=50, licznik2=100 ,licznik3=150 ,licznik4=200; #define PER1 50 #define PER2 100 #define PER3 150 #define PER4 200 void main(void) { WDTCTL = WDTPW + WDTHOLD; // Clock Setup BCSCTL2 = DIVS_3; // Timer Setup P1DIR |= (BIT1 | BIT2 | BIT3 | BIT4); TACCR0 = 50;...
Zmieniłem ISRa na taki: #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) { switch (TAIV) // które źródło zgłosiło { case 0x0002: break; case 0x0004: break; case 0x000a: TACTL |= TACLR; // to kasujemy licznik break; } } Licznik się resetuje (o ile debugger nie kłamie), ale dalej LEDa podpięta...
Witam. Mam problem z obsługą przerwań (PIC12f675). Napisałem procedury zgodnie z manualem i przykładami ale kompilator wywala mi błąd: Executing: "C:\Program Files\HI-TECH Software\PICC\STD\9.60\bin\picc.exe" -oodbierz.cof -modbierz.map odbierz.obj delay.obj rs232.obj --chip=12F675 -P -q -g --asmlist "--errformat=Error W programie są zdefiniowane trzy...
#include <intrinsics.h> #include <msp430x20x3.h> int licznik1=50, licznik2=100 ,licznik3=150 ,licznik4=200; #define PER1 50 #define PER2 100 #define PER3 150 #define PER4 200 void main(void) { WDTCTL = WDTPW + WDTHOLD; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; // Clock Setup //BCSCTL2 = DIVS_3; // Timer Setup P1DIR |= (BIT1...
Co to jest: FLL_CTL0 |= XCAP14PF; potrafię wejść do biblioteki:) /* FLL+ Control 0 */ czyli co za flaga? i po co? /* XIN Cap = XOUT Cap = 14pf */ to natomiast ustawienie kondensatorów dla kwarca ale dlaczego w tym przykładzie takie a nie inne /* Interrupt Flag 1 */ odblokowanie przerwania flagi czemu i co to jest OFIFG ? Pozostałe w miarę rozumiem TACCTL0...
Nie czaję ;) Dodano po 10 A próbowałeś wszystko wrzucić do przerwania od Timera0? #pragma vector=TIMER0_A1_VECTOR __interrupt void Timer0_A1(void) { switch(TA0IV) { case 0x0A : // TA0OVF przepełnienie Timer0_state++; if (Timer0_state >= 12) { Timer0_state = 0; if(play_sample == 1) { one_byte...
Witam. Chciałem napisać następujący program: Dane przesyłane są z komputera przez UART1, a następnie te dane chciałbym przesłać dalej, za pomocą UART0. Na razie połączyłem sobie, w UART0 RxD z TxD za pomocą rezystora 200Ohm (taki loopback do testów). Czyli jak na razie chciałem uzyskać następujący przepływ : komputer -> UART1 -> UART0 -> UART0...
Przerwanie źle działa - reaguje n zmianę stanu jednak tylko raz na kilkanaście zmian. Jeżeli uruchamiam procesor ze stanem wysokim na wejściu INT a INTEDG = 0 (zbocze opadające) to po starcie procedura obsługi przerwania jest wywoływana. Jeżeli jest tam zero to po starcie nie wchodzi do procedury obsługi. Przerwanie kiedy procesor pracuje wywoływane...
#pragma config FOSFPR = XT // Oscillator (Internal Low-Power RC (No change to Primary Osc Mode bits)) #pragma config FCKSMEN = CSW_FSCM_OFF // Clock Switching and Monitor (Sw Disabled, Mon Disabled) // FWDT #pragma config FWPSB = WDTPSB_16 // WDT Prescaler B (1:16) #pragma config FWPSA = WDTPSA_512 // WDT Prescaler A (1:512) #pragma config WDT = WDT_OFF...
Mam cos w tym stylu tylko niewiem do czego słuzy ten opis /***************************************... * FileName: main.c * Dependencies: p18f87j10.h, delays.h, 18f87j10i.lkr * Processor: PIC18F87J10 * Hardware: PICkit 2 * Compiler: MPLAB-C18 * Linker: MPLINK 2.33.00 or higher * Company: Microchip...
Witam. U mnie zrobone jest to w ten sposb. Nie sprawdzalem tego na symulatorze, kodzik dziala w makiecie. Korzystam z IAR v3.20. #define INT_PIN 0x01 [....] P1IFG = 0x00; // Kasowanie flag przerwań na P1 P1DIR &= ~INT_PIN; P1IES |= INT_PIN; P1IE |= INT_PIN; // Zezwolenie na przerwanie _BIS_SR(GIE); // Globalny bit przerwania [...] #pragma vector = PORT1_VECTOR...
codevision avr atmega 8515 nadawanie i odbior /***************************************... This program was produced by the CodeWizardAVR V1.23.8a Professional Automatic Program Generator © Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:office(at)hpinfotech.ro Project : Version : Date : 2006-07-02 Author : j Company :...
Czyli sam nie zrobiłeś nic w sprawie tego Timera? No nic. Tutaj masz przykład od samego TI: [syntax=c] //Gdzies w mainie: TBCCTL0 = CCIE; // TBCCR0 interrupt enabled __enable_interrupt(); ... ... delay(7500); //≈ 5 sekund ... ... //Koniec maina /***************************************... * BEGHDR * Function:...
AVE... Z doświadczenia mogę stwierdzić, że to dla mnie nigdy nie miało znaczenia, jako że "detale" załatwia kompilator. Jeśli sam operuję rejestrami, to i tak muszę sięgnąć po notę katalogową by znać nazwy rejestrów, bitów w rejestrach i tego, co one właściwie robią. Jak to działa w praktyce? Poniżej prosty program dla PIC18F45K50, gdzie generowałem...
czy w maxach ustawiasz poprawnie nadawanie i odbior bo moze tu robisz blad // USART1 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART1 Receiver: On // USART1 Transmitter: On // USART1 Mode: Asynchronous // USART1 Baud rate: 9600 UCSR1A=0x00; UCSR1B=0xD8; UCSR1C=0x06; UBRR1H=0x00; UBRR1L=0x17; Brakuje ci UCSR1A tu masz caly...
pragma language pragma config dyrektywa pragma
sprawdzić programator zmywarki uszkodzenie odkurzacza maszyny pakujące
uszczelka drzwi samochód okulary zamiast mikroskopu
Antena radiowa do skutera Futuri3 - wybór i montaż Pinout sterownika Denso w Volvo S60 1. gen