wywal: #include <avr/signal.h> zamiast: SIGNAL używaj ISR i zamiast SIG_OVERFLOW0 daj TIM0_OVF_vect link do manuala [url=http://www.nongnu.org/avr-libc/user... Pozdrawiam
A masz oscyloskop zeby steirdzic ze rzeczywiscie sie nic nie dzieje? Ja wrzucilem taki program do megi16 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT SIGNAL(SIG_OVERFLOW0) { PORTD=0xFF; } int main(void)...
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...
niemożliwe, skompilowałem i prosze; while (1) Display1Data = 7; 1ca:87 e0 ldir24, 0x07; 7 1cc:90 e0 ldir25, 0x00; 0 1ce:90 93 87 00 sts0x0087, r25 1d2:80 93 86 00 sts0x0086, r24 1d6:fb cf rjmp.-10 jak widać w hex'ie jest. zamieniłem jeszcze #include <avr/signal.h> na #include <avr/interrupt.h> i SIGNAL (SIG_OVERFLOW0)...
Przywołano avr/interrupt.h a użyto signal Trzeba zastosować #include <avr/signal.h> Signal i interrupt służą do obsługi przerwań. Signal wyłącza przerwania a Interrupt nie. Może to nie wszystko. To tak na pierwszy rzut oka.
Witam... Generalnie rzecz biorąc procedury opóźnienia czasowego nie nadają się do modulowania diody IR... Częstotliwość nie jest zbyt stabilna to raz... Dwa nie uzyskasz 36kHz musisz skorzystać z dobrodziejstw timera... Np. tak... #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> int...
To dobry moment na poczytanie w końcu datasheeta, czyli zrobienie tak zwanego RTFM. • Bit 7 – RXC: USART Receive Complete This flag bit is set when there are unread data in the receive buffer and cleared when the receive buffer is empty (i.e., does not contain any unread data). If the receiver is disabled, the receive buffer will be flushed...
Witam Trochę pozmieniałem swój kod ale dalej nie wiem jak zrobić przewijanie w drugą stronę. Czy ktoś mógł by mi pomóc... #include <avr\io.h> #include <avr\interrupt.h> // funkcje sei(), cli() #include <avr\signal.h> // definicje SIGNAL, INTERRUPT #include <avr\delay.h> #define F_CPU 11059200 // 1 MHz char znak[16]={0x3F,0x06,0x5B,0x...
Taki jest wynik kompilacji twojego projektu I co ty na to ?? Gdzie robię błąd ? Powiem , jak na spowiedzi - skończyły mi sie pomysły :| Takie zwykłe NIC ... #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> SIGNAL(BYLECO)//(SIG_UART_RE... {;} int main(void) {;} ... i...
"Signal(SIG_OVERFLOW1)" i "#include <avr/signal.h>" do śmieci, teraz używa się "ISR(TIMER0_OVF_vect)": http://www.nongnu.org/avr-libc/user-manu... Warningami to się nie chwalisz, sami mamy zgadywać.. ?
Dlaczego na wjsciu portu B nozce 7 jest 110-120Hz a nie jak na to wskazuje kod programu 1kHz. Uzywam kwarcu 4MHz, fuse bity: CKSEL3..0 to 1101. #include <io.h> #include <signal.h> #include <atmel.h> SIGNAL(SIG_TIMER0_COMPA){ TCNT0=0; PORTB ^= 1<<7; } const unsigned char preskaler = 2; void initLicznikA(){ // ustawienie liczby...
boohoo -> przecież jeśli masz AVR-GCC to masz taki folder: \WinAVR-20080610\avr\include\avr zajrzyj tam sobie, masz tam definicje wszystkiego czego chcesz i do każdego procka w tym twojego iotn2313.h poza tym ten twój kod ładnie się kompiluje i bez żadnych ostrzeżeń jeśli zrobisz tak: #include <avr\io.h> #include <util\delay.h> //#include...
Bardzo prosze o pomoc z timerem1 w mikrokontrolerze Atmega8. Czytam tą dokumentacje i wydaje mi się, że wszystko dobrze zrobilem a mimo wszystko nie działa. Chce by przy przepełnieniu zapaliły się diody. Oto mój kod: #include <avr\io.h> #include <avr\signal.h> #include <avr\interrupt.h> SIGNAL (SIG_OVERFLOW1) { sbi(PORTC,PC5); } int...
OK, ruszyło na SIGNAL. Tzn z początku nie chciało, ale jak zainkludowałem avr/signal.h,to poszło. Byćmoże przy tym ISR też ruszy jak coś zainkluduję. Aktualnie mam takie inkludy: #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h>
Nie napisałeś, jakiej wersji WinAVR używasz (ja mam WinAVR-20100110), ale spróbuj na początku pliku 'watomierz.c' dodać linijkę: #include <compat/deprecated.h> i usuń: #include <avr/signal.h> Jeśli oprócz tego w plikach 'lcd4bit.h' i 'lcd4bit.c' w funkcji 'lcd_string' zmienisz typ parametru z 'unsigned char*' na 'char*', to powinno się skompilować...
Skompilowałem to u siebie i od razu widać błąd: makro do przerwań pisze się z dużych liter: SIGNAL(...) - w takim przypadku uzyskałem poprawny kod. Przy "signal" z małych liter powstała funkcja o nazwie "signal" (zwracany typ domyślnie int, przez co kompilator wyrzucał jeden warning). C jest językiem case-sensitive. Co do reszty kodu: zmień dołączenie...
Witam, napisałem takie coś. Działać działa tak jak chciałem ale czy tu wszystko jest zgodnie ze sztuką? Czy coś tu można napisac lepiej? [syntax=c]#include <stdio.h> #include <sys/types.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> void catch_ctlc( int sig_num ) { printf( "Przechwycilem sygnal CTRL+C!\n"...
A spróbuj tak #include <avr/wdt.h> #define LED_PIN 13 void setup() { // Blink LED to signal reset pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); } void loop() { wdt_enable(WDTO_8S); // Infinite loop to simulate a crash while (1); } Dodano po 3 Ledy oczywiście możesz pominąć
Witam. Mam pewien problem żeby na tym mikrokontrolerze zrobić czasomierz. Gdy napisze w bascomie działa ok, ale jak w WinAVR to już nie. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNAL (SIG_OVERFLOW0) { PORTD = ~PORTD; } int main(void){ DDRD=0xff; PORTD=0xff; TIMSK = _BV(TOIE0);...
przy kodzie #define F_CPU 12000000UL #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "delay.h" SIGNAL(SIG_OVERFLOW0) { //zakres serwa kroki ok. 7 - 25 // ok. 20 krokow char gora,dol; if (OCR0==25) { dol=1; gora=0;} if (OCR0==3) { dol=0; gora=1;} if(gora) OCR0++; if(dol) OCR0--;...
Prosiłem o więcej informacji :( Wypróbuj coś takiego: #include <avr/io.h> //#include <avr/interrupt.h> #include <interrupt.h> #include <signal.h> SIGNAL (SIG_INTERRUPT0) { unsigned int i=1; PORTC^=_BV(PC0); // zmieniamy stanu na przeciwny while(i++); //eliminacja skutków drgań styków (~393000...
Witam wszystkich. Co jest powodem, że programik dokonuje komparacji tylko 1 raz. Po zmianie na wejściu komparatora trzeba resetu żeby to pokazał. Chodzi mi o ciągłą kontrolę U wej. Oto kod AVR Gcc #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNAL(SIG_COMPARATOR) { outp(0xDF,PORTD);/* turn on 1st led on PORTB...
Spróbuj tak: #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> #define F_CPU 16000000 void signal (SIG_INTERRUPT0) { PORTA=0x00; } int main(void) { DDRA=0xFF; PORTA=0x0F; DDRD=0x00; PORTD=0xFF; sei(); MCUCR=0b00000010; GICR=0b01000000; GIFR=0b01000000;...
Ten kod jest napisany dla ATmega103 ( niedostępny już w handlu) a jego następca to ATmega128. Poniżej poprawki dla WinAVR ( ten kod był dla kompilatora IAR): 1. #include <iom103.h> #include <ina90.h> ma być #include <avr/io.h> #include <avr/signal.h> 2. type def struct{ ma być typedef struct{ 3. interrupt /**** A V R A P P L...
Napisałem coś takiego, ale wiem, że w pętli głównej musi jeszcze być konfiguracja prescalera i nie mam pojęcia jak ją napisać. Oglądałem datasheeta z atmegi ale za bardzo tego nie rozumiem. Jaki kwarc do tego trzeba zastosować bo czytałem, że właśnie tą częstotliwość bezie trzeba dzielić. Ja chciałem zastosować 16MHz. Może być? Pozdrawiam Dodano po...
ISR(TIMER0_OVF_vect) { a+=1; //reti(); } To ma być osobna funkcja, a nie funkcja lokalna, których zresztą nie ma w standardzie C (chociaż, nota bene, gcc takowe obsługuje). #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT Wywal to drugie,...
#include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/pgmspace.h> int g=0; volatile c=0; SIGNAL (SIG_INTERRUPT1) { if (c==0) c=1; else c=0; } main(void) { PORTB=0xf0; DDRB=0x0f; PORTD=0x0c; DDRD=0xf3; while(1) { GIMSK...
Zakładam że kompilujesz w takim GCC jak ja. Spróbuj tego: #include <avr/io.h> //#include <stdio.h> niepotrzebne, bez tego też działa #include <avr/interrupt.h> //#include <avr/signal.h> tej biblioteki się nie stosuje - patrz gcc-libc ISR(TIMER0_OVF_vect) //po co tam miałeś INT0_vect? { PORTD ^= 0xFF; //będziemy mieli...
To mój pierwszy kontakt z AVRami i od razu schody. Od kilku godzin próbuje uruchomić taki najprostszy programik wykorzystujący przerwanie od timera. Używam ATMega16 i kompilatora WinAVR (w różnych wersjach z tym samym skutkiem). Oto kod okrojony do minimum: #define __AVR_ATmega16__ #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h>...
Witam! Od jakiegoś czasu głowię się, jak zrobić, żeby zakończyć proces potomny przed macierzystym, aby macierzysty mógł zostać powiadomiony sygnałem, że potomny się skończył. Napisałem coś takiego, ale nie działa: [syntax=c] #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <signal.h> #include <sys/types.h>...
Pisane na żywca, nie wiem czy się skompiluje od strzału: #include <avr/io.h> #include <avr/signal.h> #define LED PORTC.0 uint8_t liczba; SIGNAL (SIG_OVERFLOW0) { TCNT0=0x05; if(liczba++==250) { PORTC=~PORTC; liczba=0; } } int main( void ) { DDRC=0x0FF; PORTC=0; TCCR0=0x04; TCNT0=0x05; TIMSK=0x01;...
ISR(INT2_vect) //procedura obslugi przerwania { impulsy++; } A czy zadziała: (chyba powinno ;)) SIGNAL(SIG_INTERRUPT2)// gdy nastąpi przerwanie na wejściu INT2, wykonuje to co w klamrach { impulsy++; // każde przerwanie powiększa zmienną impulsy o 1 // tu wpisz swoją funkcję - opóźnienie o 40 milisekund } Ale spróbuj też w tym swoim...
1/ #include "avr/io.h" <- zdecydowanie powinno być <avr/io.h> 2/ z tego co widać w "test.txt", nie ma tam żadnych funkcji odpowiedzialnych za przerwania (nazwy właśnie __vector_* [po rozwinieciu SIGNAL(x) przez preprocesor]), a skok do wektora przerwania, w którym brak funkcji przerwania powoduje skok do resetu (domyślna funkcja do wektorów...
jeśli chodzi o przerwania korzystaj z SIGNAL a nie ISR (a dlaczego? to już sobie sam doczytaj) Wycinek z <avr/interrupt.h> z najnowszego AVR-GCC #if defined(__DOXYGEN__) /** \def SIGNAL(vector) \ingroup avr_interrupts \code #include <avr/interrupt.h> \endcode Introduces an interrupt handler function that runs with global...
oraz jeszcze: 1. stosujesz stare funkcje obsługi przerwań a nowe wektory - stosuj nowe funkcje ISR(): http://nongnu.org/avr-libc/user-manual/g... i wywal nagłówek #include <avr/signal.h> 2. returny w funkcjach ISR() i main() są zbędne. 3. Ostatnia uwaga kol Zaquadnik jest baaaardzo istotna. Nie dość, że czekasz w funkcji...
Nie ma, trzeba sobie wybrać jakiś sygnał. Jest taka tajna (blisko godzina szukania) funkcja biblioteki GCC:[syntax=c]#include <stdio.h> #include <signal.h> int __libc_allocate_rtsig(int high_priority); int main(void) { int rts[4], ix; for (ix = 0; ix < 4; ix++) rts[ix] = __libc_allocate_rtsig(ix < 2); printf("A={%d, %d, %d, %d}, MIN=%d,...
Nie chce mi się tego testować, ale powinno działać.. // prędkość zegara w hercach #define F_CPU 16000000UL #include <avr/io.h> #include <avr/interrupt.h> typedef unsigned char u8; u8 led_ZmianDoKonca; SIGNAL(SIG_OUTPUT_COMPARE1A) { // czy trzeba dokonać aktualizacji stanu wyjść diod? if(led_ZmianDoKonca != 0) {...
Proponuję zacząć od mniejszych szybkości przetważania ADC. Ja to robię tak: // Procedury przetwornika ADC #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "uart.h" #include "adc.h" volatile u08 Analog; void ADC_Init(void) { outp(BV(ADEN)|BV(ADSC)|BV(ADATE)|BV(ADIE...
Includujesz plik źródłowy! [syntax=c]#include "HD44780.c"[/syntax] Zamiast "starych" signal [syntax=c]SIGNAL(SIG_ADC)[/syntax] używaj "po nowemu" ISR [syntax=c]ISR(ADC_vect)[/syntax]
Mam problem, bo za bardzo nie wiem jak jednocześnie liczyć impulsy na kilku wejściach. #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/rs232.h> static volatile unsigned int l; SIGNAL (SIG_OVERFLOW1){ TCNT1H = 0x81; TCNT1L = 0x71; USART_Transmit(l/2); l=0; } int main(void)...
Mam problem otóż wpisując w hyper terminalu 'n' procek tego nie wykrywa zapaleniem diody na porcie D7 połączenie jest bo jeśli zrobie tak: SIGNAL(SIG_UART_RECV) { sbi(PORTD,7); } to dioda zapala się. kwarc jest 16MHz czyli UBRR = 25(UBRRH =0x00, UBRRL =0x19) dla 38,4Kbaud #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h>...
Witam. Napisałem prosty program dla testu odbierania znaków z komputera przez RS232 do ukontrolera AT90S2313.. oto program: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <stdlib.h> #define VUART 2400 #define VUBRR F_CPU/(VUART*16)-1 char znak; SIGNAL(SIG_UART_RECV) { PORTB=32;...
Wgrałem do Atmega16 prosty programik obsługi przerwań zewnętrznych (poniżej kod). #include <avr/io.h> #include <avr/interrupt.h> SIGNAL (SIG_INTERRUPT0){ PORTB = 0xFF; } SIGNAL (SIG_INTERRUPT1){ PORTB = 0x00; } int main(void){ DDRB = 0xFF; DDRD = 0x00; PORTD = 0xFF; GIMSK = _BV(INT0)|_BV(INT1);...
Do obsługi przerwań służy SIGNAL nazwa_przerwania lub INTERRUPT nazwa_przerwania Na podstawie stronki http://avr.elektroda.eu/?q=node/25 zrobilem podobnie. Niestety nie dziala. Podpowie ktos? #include <avr/interrupt.h> SIGNAL (SIG_INTERRUPT0) { jeden(); } SIGNAL (SIG_INTERRUPT1) { dwa(); } GIMSK = _BV(INT0); MCUCR = _BV(ISC01); sei(); while(1);...
Trochę zmieniłem Twój program (mam diody na Porcie C i nie używam biblitoek delay.h) i załączam mój program który napewno działa (mam ATmega16 z zewnętrznym kwarcem 16MHz). Na 99% u Ciebie brak dołączenia biblioteki signal.h #define F_CPU 16000000 #include <avr/interrupt.h> #include <avr/signal.h> #define tau0 250; unsigned char liczt0;...
AT90S2313 to procesorek o większych możliwościach, posiada wszystko to samo co AT90S2323, więc nie powinno byc problemów, ma nawet więcej pin - mozna się pokusić o dorobienie obsługi linijki świetlnej pokazującej dostrojenie, a może nawet jakiś LCD... Ta biblioteka <signal.h>, to może część programu również napisana przez autora ? Co się dzieje,...
Programowo nie da się jej zmienić....... Weź chłopie daj wszystko jak było, tylko BAUD daj 4800 i sprawdź, czy przy takiej prędkości działa #define F_CPU 1000000ul #include <avr/io.h> #include <util/delay.h> #include <avr/signal.h> #define FOSC 1000000 #define CZYT 50 #define BAUD 4800 #define MYUBRR FOSC/16/BAUD-1 void USART_Init(...
Hej, Spróbuj tego: #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> #define F_CPU 1000000 unsigned int c=0, s=0; int main(void) { TCCR0 = 0x05; //(1 << CS02) | (1 << CS00); prescaler na 1024 // TIFR |= (1 << TOV0); TIMSK |= (1...
Miałem w końcu chwilę czasu, poskładałem "maszynę która robi ping" i zamieszczam efekty. Użyty procek MSP430F2274 ( miałem wlutowany w płytkę uniwersalną więc wygrał konkurs ) Użyłem TimerA i TimerB ( ten drugi ma możliwość synchronicznej aktualizacji rejestrów ) Kompilowane mspgcc, stąd nieco inny wygląd. Procesor chodzi na 16MHz - zależało mi żeby...
Spróbuj jeszcze zmodyfikować deklarację biblioteki przerwań: #include <avr/signal.h>
prosze oto kod mam problem z ogarnięciem dlaczego nie zlicza mi sygnałów z int0 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include...
Witam! Czy ktoś mógłby mi wyjaśnić na czym polega różnica w bibliotekach interrupt.h i signal.h? Mam też drugie pytanie: czym różnią się oba poniższe zapisy? #include <jakis_plik.h> #include "jakis_plik.h"
Dzięki ale dalej nic to niedało. Tak wygląda program po zmianach rozumiem ,że licznik zlicza od wartości z TCNT1 do 65535 więc poodejmowałem za jedną z rad, wartość TCNT1 od wyników ale dalej klapa wyświetla mi jakieś liczby w zmiennej " o " przekraczające czasem grubo ponad 10 000 a z mojch obliczeń 65535-34286 wynika że max to 29714 prosze mnie poprawić...
Tylko nie zapomnij włączyć bibliotek: #include <avr/interrupt.h> #include <avr/signal.h> Pozdrawiam.
Problem polega na tym , że zmienna nrzn działa poprawnie tylko w ciele funkcji przerwania, w pętli programu już nie. Jej wartość wynosi 0 poza przerwaniem. //Biblioteki #include <avr\io.h> #include <util/delay.h> #include <avr\pgmspace.h> #include <avr/signal.h> #include <avr/interrupt.h> //Zmienne unsigned char znak [10]...
No i jeszcze trzeba zadeklarowac: #include <avr/interrupt.h> #include <avr/signal.h>
Tutaj masz kod programu, u mnie działa, dioda miga. #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT #define F_CPU 8000000UL //definicja czestotliwosci w moim wypadku 8Mhz void delay(unsigned int mstime) {...
Wyjaśni ktoś dlaczego ten program mi nie działa? #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> #define Timer0_Start TCCR0 = (1 << CS01) | (1 << CS00); TIMSK |= (1 << TOIE0); TCNT0 = 131; SIGNAL (TIMER0_OVF_vect)...
Mam problem z TIMER2 - odmierzanie czasu , najlepiej 1s. Wartość b będzie zmieniała się - tylko co jaki odstep czasu. Może ktoś poratować? Albo ma może jakiś swój przykładowy programik na Timer2 z wywoływanym przerwaniem? Radzio // Testowanie timera 2 #define F_CPU 8000000UL #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h>...
Hej, osobiście stosuję następujące rozwiązanie: - kwarc zewn. 3.6864 MHz - timer2 zliczający z prescalerem 1024, do 36 (po tym się resetuje i liczy na nowo od 0) W efekcie mam "rtc", który przepełnia sie 100 razy na sekundę (3686400/1024/36), a zatem mogę odliczać z dokładnością do setnych sekundy. Chyba wystarczająco. Poniżej kod w C, kompilator avr-gcc...
Cześć, potrzebuję zmierzyć częstość rzędu kilkudziesięciu kHz a nie mam oscyloskopu. Zrobiłem coś takiego: AT90S2313 + LCD na PORTB; na INT0 mierzony sygnał a na INT1 50 Hz z sieci przez transoptor i 7414. Powinno działać, ale na LCD widać na zmianę 0 i 1. :( Przebiegi na INT obecne. Nie mam pojęcia, dlaczego nie działa, może ktoś z Was wskaże jakieś...
Chwilkę się tym pobawiłem i tak teraz do mnie dotarło, że nie trafiam w warunki zadania :/ main.cpp #include <cstdio> #include <cstdlib> #include <signal.h> #include <sys/wait.h> #include <unistd.h> #include <cstring> #include <fcntl.h> // PID potomkow pid_t child1; pid_t child2; // deskryptory potoku nienazwanego...
Można odczytywać stan wejść w przerwaniach uzyskiwanych przy użyciu setitimer() - pewnie od systemu zależy, jakie będą odstępy czasy między nimi, można zadeklarować, jakie mają być, ale jak się zadeklaruje bardzo małe, to wychodzą większe, niż przy zadeklarowaniu nieco większych - a to dlatego, że program przestanie zdążać z obsługiwaniem przerwań....
No to jest akurat główny program tylko.... A o co chodzi z tymi przyciskami na przerwaniach? Ich obsługa powinna być umieszczona również gdzieś w przerwaniach? Przerwania mama tutaj: #include <avr\io.h> // dostęp do rejestrów #include <inttypes.h> // definicje typów uint8... #include <avr\signal.h> #include <avr\interrupt.h>...
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "delay.h" #define F_CPU 8000000UL #define UART_BAUD19200ul //prędkość transmisji w bodach (tu 19200 bodów) #define V_UART(F_CPU/(16ul*UART_BAUD)... SIGNAL(SIG_UART_RECV) { char znak; znak=UDR; if (znak!=0x0D)...
Witam Mam taki mały problem z budzeniem procesora M128 za pomocą zewnętrznego przerwania, gdyz nie chce on wstać z prawie żadnego trybu (wyjątek IDLE). Męcze się z tym już jakiś czas, więc może Wy mi pomożecie. Zamieszczam część mojego programu: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/sfr_defs.h>...
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> char s[] ="0101011010101010101010101010"... static volatile unsigned int a; SIGNAL (SIG_OVERFLOW1){ TCNT1H = 0xd9; TCNT1L = 0x99; PORTB=s[a++]&0x01; if(a==27)a=0; } int main(void) { DDRB=0xff; TCNT1H...
Witam... Na początek może spróbuj zmienić zapis TCCR1A = 130; na TCCR1A = 0b10000010; lub TCCR1A = (1 << COM1A1) | (1 << WGM11); łatwiej ci będzie połapać się co ustawiłeś... A co do samego problemu z działaniem programu to sprawdz tak #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h>...
Napisałem w c serwer HTTP pod windowsa. Ma działać on na wątkach. Główny wątek ma akceptować nowe połączenia TCP. W przypadku połącznia klienta z serwerem musi zostać utworzony wątek który obsłuży to połączenie. Niestety nie wiem co jest źle. Serwer nie otrzymuje nic przez GET, a przeglądarka żadnego obrazku nie ma. [syntax=c]/* * Uruchamianie: >...
spokojnie starczy 1 bajt tak jak mówisz :) widzę już że kurcze popełniłem śmieszny błąd co do kodu że nie wrzuciłem do maina :/ masakra wiem... dobra dupa sorry cos nie działa :/ aktualnie to tak wyglada: MASTER [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <util/delay.h> #include...
Sami zobaczcie: http://youtu.be/muACJfkTm4c Oto prosty kod jaki napisałem: Czy ktoś wie o co chodzi? :D
sprawdzalem wszystko i jest dobrze pdolaczone. zaprogramowalem fusy i dalej nic. nie wiem co w tym kodzie jest zle (pisze pod a4studio z pluginem gcc) #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> unsigned char volatile znak = 0; SIGNAL(SIG_UART_RECV){ znak = 0xFF; } SIGNAL(SIG_UART_TRANS){...
Jako stawiający pierwsze kroki wymyśliłem sobie układ wykrywający zmianę U, i zapalający LED. wygląda to tak: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sig-avr.h> SIGNAL(SIG_COMPARATOR) { outp(0xFE,PORTB);/* turn on 1st led on PORTB */ } int main( void ) { outp(0xF3,DDRB);/* pin2 and3 PORTB set as INput, other output...
Zrobiłem takiego myka i wydaje się że wszystko działa tak jak należy. #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> #include <util/delay.h> int main(void) { DDRD=0x00; DDRB = 0xFF; DDRA |= _BV(PA0); PORTA |= _BV(PA0); TCNT0 = 34; //wartość początkowa...
Witam... To jest pełny kod... #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> #define F_CPU 4000000 // 4MHz zegar procesora #define CYCLES_PER_US ((F_CPU+500000)/1000000) // cpu cycles per microsecond // #define UART_BAUD 19200ul #define UART_CONST (F_CPU/(16ul*UART_BAUD)-1)...
Witam, próbuję zrobić program do migania diodą w zakresie ok. 1-30 Hz i postanowiłem użyć do tego timera. Wyprodukowałem coś takiego: #include <avr/io.h> #include <compat/deprecated.h> #include <util/delay.h> #include <avr/interrupt.h> SIGNAL(SIG_OVERFLOW1){ TCNT0 = 8190; PORTA=~PORTA; } void main(){...
Spróbowałem mq_* - wygląda na to, że działa to prawie 5x wolniej, niż msg*, i prawie 2,4x wolniej, niż socket-y Unix. A może da się to zrobić inaczej, szybciej? Serwer: Dodano po 3 Z użyciem sygnałów mq_* jest minimalnie (parę %) wolniejsze od użycia samych sygnałów. Serwer (klient jest ten sam): [syntax=c]#include <fcntl.h> /* For O_* constants...
wywalił tylko jedno ostrzeżenie: c:/winavr-20080610/lib/gcc/../../avr/inc... warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
Mam problem z bardzo banalnym ukladem ktory ma nadawac i odbierac sygnaly ultradzwiekowe. Zastosowalem w nim dwa najprostsze czujniki utlradzwiekowe (nadajnik i odbironik) i nie wiem czemu odbiornik w ogole nie reaguje. Obydwa sa sprawne (slychac jak brzecza gdy podlacze je pod sygnal jednak nie chca odbierac i wytwarzac napiecia. Do odbiornika przkladalem...
Witam, napisałem następujaćy programik do obsługi przetwornika A/C: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "moje.h" #include <avr/delay.h> volatile uint8_t value; volatile uint8_t value2; unsigned char bufor[5]; unsigned int a; SIGNAL(SIG_ADC) { LCD_clr();...
Witam, prosze o sprawdzenie mojego programu bo moim zdaniem jest OK a wciąż nie chce zadziałać. Używając hyper terminal-a wysyłam znak poprzez RS232 do układu na USART0, chcę żeby po odebraniu znaku zapaliła się dioda podłączona do portu E. Hyper terminal mam skonfigurowany następująco: 4800b/s, 8bitow danych, bit parzystosci, 2 bity stopu, kontrola...
Timer działa i generuje przerwanie co około 4 sekundy świetnie, ale jest jeden problem zanim wejdzie w pierwsze przerwanie przez około minutę przerwań nie generuje. Podmieniłem atmegę na inną, działa identycznie... Dopisałem parę linijek na początku pracy ze zmianą portuB i opuźnieniem delay_ms i dopisane linijki się zrealizowały, ostatni stan się "zamroził"...
Wyliczenia są zadawalające tylko, co z nimi zrobić. Na początku chciałem ustawić wybrana częstotliwość i jakoś nie wychodzi. Te obliczenia są do PWM'a sprzętowego czy opartego na przerwaniu ?? Próbowałem na początek ustawić 50Hz i wyszły głupoty :cry: #include <avr/io.h> #include <avr/interrupt.h> SIGNAL (SIG_OVERFLOW1) { PORTB...
Po pierwsze to zapomnij i wyrzuć z pamięci makra o nazwie SIGNAL ;) i to jak najszybciej. Zamiast tego stosuj makra ISR a do tego nazwy wektorów z końcówką zwykle _vect po drugie jeśli masz stworzony plik przerwania.c to chyba go jednak nie inkludujesz do projektu za pomocą #include ??? bo jeśli tak to źle. Zamiast tego dołącz go po prostu do drzewka...
no teraz w tych miejscach mam error: invalid lvalue in assignment Tiaaaa ... Gdyby Ci się chciało zajrzeć do pliku deprecated.h , to być może zauważył byś , że dla outp wystarczy zamienić miejscami parametry :D Ale ja jestem czarodziejem , wiem o jaki kod Ci chodzi i ... podaję rozwiązanie ;) Tak mają wyglądać "includy" ... #include <avr/io.h>...
Wiec zgodnie z obietnica :) wykonalem zalecania kolegi _Robak_ i napisalemm prosty programik ktory mroga dioda za pomoca przerwania. Oto on: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNAL (SIG_OVERFLOW2) { TCNT2 = 0x00; PORTD ^= _BV(PD3); } int main (void) { sei(); DDRD = 0x08; PORTD |= _BV(PD3); TCNT2...
Dobra już poprawiłem kod lecz nie jestem pewien co do funkcji ISR() [syntax=c]/* * Przerwania.c * * Created: 2013-12-01 17:11:49 * Author: Kamil */ #define F_CPU 4000000UL #include <avr/io.h> #include <avr/interrupt.h> //--------------------------------------... // SIGNAL(SIG_INTERRUPT0) // { // PORTB = ~PORTB; // zamieniaj...
Poszukam jeszcze u innych kolegów ...za "wielkim morzem" Podam jak będzie coś ciekawego. Datasheet tego kbc MEC1404-NU w zał. Od firmy Mouser(UK) na Microchip MEC140x/1x Keyboard & Embedded Controllers are customized for notebooks and tablet platforms. They are highly configurable, mixed signal, and include an advanced I/O controller architecture. Each...
Dobrze, zatem po zmodyfikowaniu programu : #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include "lcd.c" #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #define cbi(port, bit) (port) &= ~(1 << (bit)) volatile unsigned long...
Witam ! Założenia kodu: - port B ustawiony jako wyjście; - dane odebrane z portu szeregowego są przesyłane na port B - stan portu B jest z powrotem wysyłany za pośrednictwem portu szeregowego #include<avr/io.h> #include<util/delay.h> #include<avr/signal.h> #include<avr/interrupt.h> void InitUSART(void) { UBRRH =...
Jak w temacie. Napisałem następujący programik: #include <avr/io.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <avr/signal.h> #include <avr/interrupt.h> #define ENABLE_INT1_FALLING cbi(MCUCR,ISC10);sbi(MCUCR,ISC11);outp((... void waitus(unsigned char czas){ TCCR0=0x02; TCNT0=255-czas; while((inp(TIFR)&0x01)!=0x01);...
Poszukałem informacji o timerze i napisałem taki program, czy będzie działać poprawnie? #define F_CPU 1000000L #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> SIGNAL (SIG_OVERFLOW1) { PORTD = 0x08; //Włącz PD.4 _delay_ms(10); //Opóźnienie PORTD = 0x04; //Włącz PD.3 _delay_ms(10);...
Dodałem zapamiętywanie obsługi sygnałów przed wywołaniem Sequencera, i przywracanie oryginalnego stanu po jego zakończeniu - ale nadal jest SIGSEGV. [syntax=c]#include "epicsThread.h" #include "iocsh.h" #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 500 #endif #include "extcode.h" #include <signal.h> #include <stdio.h> #include <unistd.h>...
Przepraszam, ale jak mam skonfigurować przerwania?? Myślałem że wystarczy na początku prog podać #include <avr/interrupt.h> #include <avr/signal.h> To przerwania należy jeszcze konfigurować? Poproszę przerobić mój kod jeżeli jest to możliwe.
Witam. Problem jest następujący. Są 2 przebiegi PWM 50% jeden składa się z dwóch połówek po 25us a drugi z dwóch po 28us. Co pewien czas na wyjściu jest generowany raz jeden a raz drugi przebieg . Trzeba zmierzyć co ile są przełanczane. Pomyślałem aby zrobić to w taki sposób: wyznaczyć moment start/stop w miejscu kiedy jedna połówka ma 25us a następna...
Dobrze, że "przerobienie" napisałeś, bo myślałem że tan program nie działa. Ale może żeby tak gotowca nie dawać i zmotywować do pracy i czytania - skorzystaj z wyjścia INT0 kontrolera(pamiętaj o rezystorze podciągającym), tam podepnij switcha. Następnie tak skonfiguruj przerwania zewnętrzne, aby było wywoływane przerwanie INT0 na przykład przy zmianie...
Witam. Napisalem prosty programik ktory ma za zadanie zwiekszac o 1 zmienna time co wywaolanie Timera1.. i wysłać ją na RS232 niestety tak sie jednak nie dzieje.. za kazdym razem dostaje tą samą wartość... Gdzie jest błąd? Oto kod programu: #include <avr/io.h> #include <stdlib.h> #include <stdio.h> #include <avr/signal.h> #include...
Dołączając moduł #include<avr/interrupt.h> możesz stosować deklarację SIGNAL i INTERRUPT. SIGNAL blokuje pozostałe przerwania na czas jego obsługi, a INTERRUPT nie. Po pierwsze nie INTERRUPT tylko ISR, po drugie obydwa te makra nic nie robią z flagą GIE, więc przerwania są ZABLOKOWANE. Jedynym sposobem ich odblokowania jest skorzystanie z makra...
To nie moze byc wina stykow bo dioda bo zakonczeniu procedury przerwania zapala sie. Co prawda nie jest filtrowane -ale dioda moze najwyzej pownie zgasnac :) Mam wrazenie ze na portach zostaja przywrocone stany sprzed przerwania - czy to mozliwe? Ponizej jest uproszczony kod: (kompiluje gcc+avrlib) #include <avr\io.h> #include <interrupt.h>...
proszę bardzo: #include <avr/io.h> #include <avr/interrupt.h> int liczba; SIGNAL (SIG_OVERFLOW0) { if(liczba++==675) { PORTC=~PORTC; liczba=0; } } int main( void ) { DDRC=0xFF; // port C jako wyjście PORTC=0x00;; // początkowy stan portu C - niski TCCR0=0x03; // prescaler 64 TCNT0=0x00; //...
include hd44780 include winavr include różnica
podzielić cyfrę limit polaczen niemieckie kolumny
Jak połączyć słuchawkę Nokia BH-105 z Samsung Galaxy A55? Oporność czujnika ABS w Ford S-Max - wartości i pomiar