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? :)
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...
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);...
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...
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...
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)...
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
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...
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...
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...
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 <...
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...
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...
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 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)...
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...
...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...
Witam wszystkich Zrobiłem sobie sterownik silnika za pomocą 4 tranzystorów 2 x BUZ11 i 2 x IRF9... . (przed traznystorami są transoptory ) ruch silnika w jedą i derugą , wszystko cacy. Ale jak się zabrałem do pisania programu SERWA to troche się zaczęły schody . Steruję dwoma kanałami PWM w AT90s8535 kanał A i B bity z PORTu C [0 i 1] słuzą do bramkowania...
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...
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...
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...
[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){...
#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...
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...
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...
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...
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...
#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...
Z góry przepraszam za zamieszczenie całego programu - i tak jest okrojony do minimum - ale gotowy do skompilowania (ICCAVR) Chciałem uniknąć pytań z cyklu a co masz jeszcze w programie - może się gryzie... Problem dotyczy wysyłania danych za pomocą interfejsu RS232 w procesorze AT Mega8 ( pewnie i innych ale ja wałkuje akurat ten ) Nie moge dojść dlaczego...
Witam, Jestem początkującym a raczej raczkującym programistą procesorów PIC. Chciałbym wywołać odbiór danych z UART poprzez przerwanie w środowisku microC. Nie mogę znaleźć deklaracji funkcji, która wykonuje polecenia z przerwania. Znajduję tylko przykład odbioru danych z funkcji main: [syntax=c] void main(){ UART1_Init(9600); // Initialize UART module...
Witam !!! Nie napisałeś jakiego używasz kompilatora a w przypadku przerwań, wiele od niego zależy. W standardzie ANSI C nie opisuje się przerwań więc wyglądają one różnie. To kod dla standardowego kompilatora CodeVision. Obsługuje tylko odbiornik w przerwaniu pakując odebrany bajt do bufora. Pzdrawiam (M.) #include <mega8.h> #define RXB8 1 #define...
TMF - mój kompilator to IAR, więc nie dogadamy się po bibliotece avr-libc. Jeżeli nie macie pomysłu jak załatwić to w kodzie, niestety będę zmuszony usiąść do bardzo słabo napisanego manuala IAR`a, nie ukrywam, że wieczór przed tym to katusze. Myślałem, że konsultacja z Wami natchnie mnie jak zrobić to w kodzie. Dodano po 6 Tadzik, mamy coś takiego...
Witam. Od kilku dni zawzięcie piszę programy w C dla mikrokontrolera PIC18F2550. Jako pierwszy program napisałem tradycyjnie obsługę diody LED. Następnie przyjrzałem się pliku wynikowemu tworzonego przez kompilator HI-TECH w darmowej wersji Lite. Mam pytanie co robi następujący zestaw instrukcji: [syntax=asm] 001C 0006 POP 001E CFEA MOVFF FSR0H, 0x4...
teraz działa poprawnie [syntax=c] int main( void ){ // *******************RTC******************... TIMSK &=~((1<<TOIE0)|(1<<OCIE0... ASSR |= (1<<AS0); TCNT0 = 0x00; TCCR0 = 0x05; while(ASSR&0x07); TIMSK |= (1<<TOIE0); __enable_interrupt(); //sei while(1) { MCUCR = 0x38; __sleep(); TCCR0=0x05; while(ASSR&0x07); } }...
AVE... LChucki ma ten problem, że on zna się na tych swoich ARMach i jest zaślepiony swoją miłością do nich. Wsadzałby je wszędzie, nawet tam, gdzie byle ATTiny czy PIC10/12F da radę. Dzielnikami i buforami rozwiązuje problemy, których by nie miał używając ośmiobitowca. A co do pisania prostych funkcji, to pozwolę sobie posłużyć się przykładem programu,...
Wygenerowany jest bezpośrednio z CooCoxa Linkera tutaj nie ma chyba jest zaszyty w środowisku. Wersja CoIDE to: Version: 1.7.8 [syntax=c] /** ****************************************... * (at)file startup_coide.c * (at)author Coocox * (at)version V1.0 * (at)date 20/07/2010 * (at)brief M0 M3 Devices Startup code. *...
Chyba tak jest, tutaj plik startup_stm32f10x_md.c [syntax=c]/** ****************************************... * (at)file startup_stm32f10x_md.c * (at)author Coocox * (at)version V1.0 * (at)date 12/23/2009 * (at)brief STM32F10x Medium Density Devices Startup code. * This module performs: * - Set the initial SP * - Set...
Próbuję odebrać dane z modułu GPS fgpmmopa6e za pomocą wspomnianego mikrokontrolera w wersji niskonapięciowej (3.3V). Oba elementy znajdują się już jednej płytce PCB, GPS został przylutowany zgodnie z notą katalogową ([url=http://download.maritex.com.pl/pdf... s.22) i sam w sobie działa (wnioskuję po tym że podłączona do pinu...
Witam, Jak w temacie, gdy włączę UART0 przez początkowy czas startu procesora wszystko działa poprawnie, po pewnym czasie który jest różny 30 - 60 sekund przestaje działać UART1. Dodam, że testowałem to przy wszystkich funkcjach wyłączonych, wstawiłem tylko w przerwanie UART1 i UART0 miganie diody gdy przychodzą dane. void uart_0(void){...
Zmieniłem : 2. change The initial stack pointer in the vector table: (void *)&pulStack[STACK_SIZE-1]... to (void (*)(void))((... long)pulStack + sizeof(pulStack)), w startup_stm32f10x_md_vl.c Dalej to samo. [syntax=c]/** ****************************************...
1. Przerwanie ma tylko stwierdzić czy nastapiło krótkie czy długie wciśnięcie na podstawie ilości cykli (wiem, że powinno być na timerze, ale tak daleko jeszcze nie jestem). Chyba tak można zrobić, no nie? 2. No rozumiem, ale to chyba nie jest jakiś wielki błąd? 3. W moim kodzie przecież najpierw jest deklaracja. P1IE = BIT3; P1IES = BIT3; A włączenie...
Dodano po 31 Kiedy debuguje program, krokowo, zaraz po a = 124; z linii b = log10(a); wskakuje do nieskończonej pętli - void HardFault_Handler(void). Tak jakby sam adres procedury wywoływał błąd sprzętowy.
W AVR306 mozna znalezc taki kod obslugi USARTA dla atmegi128: #include <avr/io.h> #include <avr/iom128.h> #include <avr/ina90.h> /* UART Buffer Defines */ #define USART_RX_BUFFER_SIZE 128 /* 2,4,8,16,32,64,128 or 256 bytes */ #define USART_TX_BUFFER_SIZE 128 /* 2,4,8,16,32,64,128 or 256 bytes */ #define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE...
Witam, jestem bardzo początkujący w picach i mam problem z przerwaniem od CCP2. Mam płytkę uruchomieniową picdem-z i muszę sprawić aby zbocze (najlepiej narastające albo stan wysoki) na RB3 wywoływało przerwanie (CCP2IF). Do tej pory (niedziałająca) konfiguracja pica wygląda mniej więcej tak (wycinki kodu): #pragma romdata CONFIG3H = 0x300005 const...
Witam, Mam problem z uruchomieniem UARTU na ATmega128. Jako kompilatora używam CodeVisionAVR. Program się kompiluje lecz nic nie mogę wysłać z procka do kompa, co może być źle w kodzie: #include <mega128.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)...
https://obrazki.elektroda.pl/3029878300_... Witajcie moi drodzy Oto trzecia część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie najpierw krótko omówię różne konfiguracje oscylatora PIC18F2550 - oscylator wewnętrzny (internal oscillator), zewnętrzny (zegarowy...
#include <iom32v.h> #include <macros.h> #define clk 1 #pragma interrupt_handler timer1_ovf_isr:10 #pragma interrupt_handler uart0_rx_isr:14 #pragma interrupt_handler uart0_tx_isr:16 unsigned int inputs[64]; unsigned int outputs[64]; char databuf[4]; char inputs_addr[4]; char outputs_addr[4];...
https://obrazki.elektroda.pl/9994348800_... Zapraszam na szczegółowe sprawozdanie z budowy prostego termometru/higrometru na bazie części znalezionych w szufladzie. Najpierw dobiorę i uruchomię tutaj wyświetlacz, potem złożę i wykonam niezbędny układ na płytce uniwersalnej, a na koniec do niego dodam czujnik AHT20, tak by móc odczytywać...
Witam mam problem ponieważ chcę żeby mój mikro-kontroler MSP430g2 wykonywał następujące zadanie. Po wgraniu programu na port 1.4 i 1.0 podawał na przemian stan wysoki i niski ciągle. Natomiast gdy nastąpi przerwanie z portu 1.3 (przycisk) to podawał na te same porty stan wysoki i niski także ale żeby długości ich trwania były różne i po ich przesłaniu...
Freddie: myślę, że to, co piszesz o __interrupt, mija się z prawdą - tak to ujmę delikatnie. Wiem, co robi procesor i kompilator i nie zauważyłem, aby działo się to, o czym piszesz. __interrupt było niezbędne w "normalnych" procesorach, bo wchodząc w obsługę wyjątku kompilator musiał zapamiętać te rejestry, których normalnie nie zapamiętywał. W Cortex...
Dzień dobry. Bardzo prosze o pomoc . Robię sobie Cumulusa do Orica. (Taki emulator stacji dysków do starego 8 bitowego komputera ) . Mam problem ze skompilowaniem bootloadera do PIC 18F46K20. MPLab X IDE 3.65 błąd: Error - section 'sector_buffer_section' can not fit the section. Section 'sector_buffer_section' length=0x00000201 Errors : 1 Nistety nie...
ok dzieki za zainteresowanie najpierw BASCOM: oczywiscie w opcjach jest at90s8535 $crystal = 4000000 Config Portc = Output Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto Dim A As Word Dim B As Word Dim C As Word Dim D As Word Dim E As Word Dim F As Word Dim G As Word Dim H As Word Cls Start Adc Do 'aDcsr.7 = 1 A =...
Witam, złożyłem płytkę, napisałem kod i coś nie działa, narazie podam kod bo płytka śmiga byłbym wdzięczny za sugestie co jest nie tak że to nie chce działać, kod zbudowany po części w CodevisionAVR. Wyświetlacz jest na wspólnej Katodzie stąd mój wniosek że aby zaświecić jakiś segment muszę wysłać 0 na pin, a aby go zgasić 1. Jeżeli źle myślę to poprawcie...
Witam Poniżej kod programu, który muszę zmodyfikować, by umożliwić ustawienie za pomocą dwóch przycisków (port1) aktualnego czasu wyświetlanego zegara. Proszę o wskazówki. Z góry dzięki ! //**************************************... // MSP430FG4618 Experimenter's Board Real Time Clock in Low-power mode // // MSP430FG4618...
Poniżej masz programik generujący przebieg o częstotliwości 1kHz (kwarc 12MHz) na pinie p3.5. Wycięty z większego programu, sprawdzony, działa. T2 pracuje jako timer z automatycznym przeładowaniem. Trzeba pamiętać, że (w przeciwieństwie do T0 i T1) w procedurze obsługi przerwania od przepełnienia T2 należy programowo zerować flagę TF2. #include <reg8252.h>...
Witam, w końcu udało się , komputer widzi urządzenie jako HID, robiłem już pierwsze testy wysyłania i odbierania wiadomości i wszystko jest Ok, Stało się tak przez podmienienie startup oraz linkera. Trochę pochodziłem po necie w poszukiwaniu i znalazłem całkiem ciekawą stronę : http://gandalf.arubi.uni-kl.de/avr_proje...
AVE... XC8 nie ma dobrej biblioteki do obsługi LCD 16x2. Ta stworzona przez Microchip działa tylko przy określonej kolejności podłączania pinów do wyświetlacza i nie ma poprawnej inicjalizacji trybu 4-bitowego, inna, dostępna w odmętach internetów nie obsługuje wszystkich modeli wyświetlaczy oraz funkcji. Łącząc kawałki z obu stworzyłem potworka, który...
Witam. Napisałem prosty program, by przetestować wyjścia PWM w attiny13. Podczas kompilacji wyskakują następujące błędy: UNDEFINED SYMBOL 'OCROA' & UNDEFINED SYMBOL 'OCROB' Przeszukiwałem internet, ale niestety nie znalazłem rozwiązania problemu. Ogólnie rzadko porusza się temat attiny13 jak i środowiska Code Vision... Oto program: /***************************************...
np tak: źródło jest wygenerowanie automatycznie przez Codevision ale jak się przyjżysz to załapiesz o co chodzi :) i będzie to dla ciebie jakaś pomoc dla własnych modyfikacji #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...
Witam. Według mnie zasadniczy problem (poza ciekawym zastosowaniem funkcji Subnumber ;) leży w umieszczeniu wyświetlania z delayami w przerwaniu. Wyświetlanie trwa dłużej niż czas pomiędzy kolejnymi przerwaniami. Najprostszą opcją byłoby przeniesienie wyświetlania do programu głównego na przykład tak: /*wyświetlacz LED dołączony do P0, stan aktywny...
Witam wszystkich czy ktoś mógłby podpowiedzieć jak uzyskać odliczanie czasu w sek na atmedze? w programie CodevisionAVR uzyskuje taki kod w którym niby jest już jakiś wietrzny timer ustawiam go nawet na 8MHz ale nie wiem jak wyprowadzić to odliczanie sekund np na lcd wystarczy żeby ktoś podpowiedział to a dalsza cześć czyli odliczanie minut i godzin...
#include <mega128.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)...
Witam Po latach wracam do głębszego poznania procków MSP430F a konkretnie MSP430F449 i mam problem z układem taktującym. Podłączając rezonator "zegarkowy" 32768Hz i wykorzystując ustrojstwo wewnątrz procka do mnożenia częstotliwości chcę uzyskać sygnał taktujący rzędu ok 8MHz. Postępuję według noty TI: Czy ktoś zna faktyczne wzory na konfigurację rejestrów...
Coś się w tym algorytmie nie trzyma kupy. Wciśnięcie przycisku zajmuje człowiekowi czas rzędu 1-10 sekundy (ok, przy trzymaniu palca na guziku daje się zejść do 1/40). Przez 1/40 sekundy przy 8 MHz próbkowaniu można zarejestrować 200 tysięcy próbek, a bufor mamy na kilka tysięcy. No to co my tu udajemy? Jakie użyteczne dane można złapać w parę kB pamięci...
To znowu ja... staram się teraz zrobić 2 bufory: nadawczy i odbiorczy - nadawanie i odbiór w przerwaniu. Jeśli ktoś ma opanowany ten sposób transmisji to proszę o sugestie i porady. Kod mojego programu zamieszczam niżej. Niestety nie działa tak jakbym chciał - nie wiem jak zainicjiować nadawanie. Gdy ustawie flage TI to jest generowane przerwanie ale...
Witam Problem rozwiązany, nie wiem na jak długo ale po zaprogramowaniu działa prawidłowo. Program składa się z kilku plików, między innymi z tego w którym jest program odpowiedzialny za obsługę wyświetlacza. Zapomniałem że w pierwszej linii mam napisane #pragma SMALL. Dopiero po zamianie tego parametru w tym miejscu (lcd.c) na COMPACT wszystko ruszyło....
Witam, mam dziwny problem z moim programem na '51(w C). Bawiłem się w transmisję szregową i utknąłem. Programik jest prosty: bufor odbiorczy na przerwaniu - wpisuje mu coś z klawiatury (HyperTerminal) on odbiera i umieszcza to w buforze, potem wypisuje funkcją printf to co tam jest. Problem w tym, że jeśli użyje funkcji delay() to program sie wiesza...
Witam! Mam problem z popranym odbiorem danych. Kod wygenerowany przez kreatora jest przedstawiony na listingu. I teraz pytanie. Mam odebrać z odbiornika widomość o długości 154 bajtów. Wiadomość ta przychodzi co 1 sekundę i zaczyna się zawsze czterama takimi samymi znakami : (at)(at)Ha Próbowałem już robić to z pętlą, by odbierać 154 znaki, i potem...
https://obrazki.elektroda.pl/1570592100_... Witajcie, zapraszam na relację z konstrukcji zegara na PIC18F2550 napisaną w formie tutoriala, wszystko krok po kroku. Pokażę tu jak i z czego tworzyłem prosty projekt DIY na prośbę jednego z czytelników. Wykorzystamy tu wyświetlacze 7-segmentowe, rejestr przesuwny, obsłużymy przyciski a...
Spoko :D WYKAZ ELEMENTÓW D1, D2, D3: IR nadawcze D4, D5, D6: LED T1, T2, T3: IR odbiorcze T4, T5: BD139/BC547 T6, T7: BD140/BC557 R1: 68 Ω R2, R3, R4, R12, R13: 10 kΩ R5, R6, R7, R14, R15: 1 kΩ R8, R9, R10, R11: 500 Ω PR1: 100 kΩ (helitrim) US1, US2: NE4558 US3: 7805 US4: PIC16F84-04/P zaprogramowany X: 4 MHz C1, C2: 33 pF C3,...
ehhhh... no dobra... dam je jeszcze raz, może więcej osób z tego skorzysta. Pochodzą one z jednego numeru Elektroniki praktycznej (nie pamiętam dokładnie z którego). Jest to robot typu Line Follower (podąża za czarną linią). Zasilany jest jedną 9V baterią. Na schemacie masz układ zasilający, mostek H (który w tym wypadku musisz zdublować, po jednym...
Witam, chcę zrealizować otwarty projekt miernika częstotliwości opartego o mikrokontrolery PIC (do testów używam PIC16F1459). Poniżej wstawiłem, pierwszy prototyp. Aktualnie program działa, ale... poprawnie zlicza tylko do ok 4kHz - i tu mam pytanie do Was, czy może ktoś wie jak ten wynik poprawić (rozwiązania programowe, inne podejście do problemu)...
Witam Mam problem z poborem prądu. Jeśli kod jest taki: [syntax=c] void turnoffdevice(void) { TA1CCTL0 = 0x00;// disable timer TxBuffer[0]=0xA1; TxBuffer[1]=adr1; TxBuffer[2]=adr2; TxBuffer[3]=adr3; TxBuffer[4]=0x40;// radio co 7 sek TxBuffer[5]=0; TxBuffer[6]=0; ReceiveOff();receiving = 0; Transmit( (unsigned char*)TxBuffer, sizeof TxBuffer); transmitting...
Witam, czy poniższy kod zadziała? Chcę wysłać bajt danych do komputera wykorzystując konwerter UART-USB i odebrać w terminalu. Czy poniższy kod zadziała? [syntax=c] #include <stdio.h> #include <stdlib.h> #include <p32xxxx.h> #include <plib.h> #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF #pragma...
#include<msp430x14x.h> #include "uart.h" #include "lcd.h" #include "portyUart.h" #include "portyLcd.h" int sprawdz_klawisz(int klawisz) { int wartosc; P4DIR &=0x20; P4DIR &=0x10; //if(P4DIR &=0x20;) wartosc = 0x20; //else if(klawisz == 2) wartosc = 0x20; // else...
Staram się od jakiegoś czasu uruchomić komunikację z kartą pamięci SD przy pomocy biblioteki "fatfs" na układzie PIC32MX695F512H, bezskutecznie, funkcja disk_initialize(0) , zwraca mi ciągle wartość "1" (STA_NOINIT). Karta jest podłączona w podstawce pod napięcie 3,3V, takie samo jak cały układ. Piny MOSI => SDO3, MISO => SDI3, SCK => SCK3,...
1. Nie widzę powodu wchodzenia najpierw w tryb system, a potem w user To resztki techniki "copy & paste" - ostatnio sam zauważyłem, że tryb user i system mają wspólny stos. 2. Ja zostawiam MCU w trybie system po startupie - nie widzę żadnych zalet w trybie user jeśli nie mam systemu operacyjnego, a będą pytania czemu mi nie działa ... Ma to sens. Jak...
Witam, Postanowiłem pobawić się w wyświetlanie monochromatycznego obrazu na TV używając ATMEGI8. Wzroruję się na #pragma vector=TIMER1_COMPA_vect __interrupt void TV_draw() { TV_PORT = tv_port_sync_on; ++line_count; if (line_count == 248) { tv_port_sync_on = 1 << TV_PIN_1k; tv_port_sync_off = 0x00; } if (line_count...
pragma language pragma config dyrektywa pragma
alpine kostki zmywarka whirpool uszkodzony moduł automatyczne zamykania
program testowy suszarki bosch program testowy suszrki bosch
Moment dokręcania śrub pokrywy silnika Toyota RAV4 Niebieska dioda LED na pilocie Polsat Box 4K, EvoBox – sygnalizacja Bluetooth, parowanie, mikrofon