atomic block

Znaleziono około 113 wyników dla: atomic block
  • [C] Czy ATOMIC_BLOCK wpływa na dokładność odmierzania czasu timerem w C?

    Źle myślisz. Jeśli przerwanie wystąpi akurat w trakcie funkcji atomic block jego obsługa troszeńkę się opóźni. I objaw będzie podobny to faktu obsługiwania wielu przerwań. Dlatego też jak wielokrotnie powtarzano, obsługo przerwania jak najkrótsza. atomic block również. W sumie powinien składać się wyłącznie z odczytu zmiennej typu volatile do zmiennej...

    Mikrokontrolery AVR   18 Lip 2011 20:32 Odpowiedzi: 6    Wyświetleń: 3350
  • [STM32F303][C]Atomic blocks - sekcje krytyczne w STM32

    Czasem Arduino do czegoś się przyda Dodano po 2 Możesz dać przykład takiej krytycznej czasowo operacji? Problem jest a raczej był związany z buforem nadawczym uarta. Mam funkcję: Blokuj tylko przerwania od UART.

    Mikrokontrolery ARM   04 Sty 2020 21:56 Odpowiedzi: 16    Wyświetleń: 1329
  • Nie znalazłeś odpowiedzi? Zadaj pytanie Sztucznej Inteligencji

    Czekaj (1min)...
  • [STM32F103][keil][C] nieznany atrybut przerwania SysTick

    Bitbanding służy tylko do bitów. Atomic block w AVR po prostu wyłaczą przerwania na ten czas. Chodzi o to aby coś w tle nie zmieniło tej lokacji w trakcie czytania / pisania. Dotyczy to zresztą tylko operacji wykonujących w wiekszej ilości operacji niż jedna. Dodano po 3 o dzięki, szukałem dzisiaj tego bitu w PM, ale nie mogłem znaleźć. Naprawdę? http://www.st.com/content/ccc/resource/t...

    Mikrokontrolery ARM   30 Gru 2017 10:38 Odpowiedzi: 63    Wyświetleń: 2448
  • REKLAMA
  • Błąd czasowy w pętli z volatile unsigned int Time_out w przerwaniu 25ms

    [syntax=c] ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {Time_out=0;}; int x; do { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { x=Time_out;); } while (x < 1000); [/syntax]

    Mikrokontrolery   25 Gru 2011 21:08 Odpowiedzi: 14    Wyświetleń: 1533
  • Zmienne globalne wykorzystywane przez przerwania i inne.

    Nie zastanawiać się i zawsze wstawiać atomic block? Etam... Można sobie wyobrazić funkcję zabezpieczoną blokiem z atrybutem RESTORE, która jest wyoływana zarówno w mainie jak i przerwaniu. I co? Można sobie zrobić kuku, nieprawdaż?

    Mikrokontrolery Początkujący   28 Kwi 2021 13:48 Odpowiedzi: 47    Wyświetleń: 2865
  • Atomowość w C: Zmienna _co20ms w przerwaniach i możliwe błędy

    Jeśli 1 bajtowa nic się nie stanie. 2 bajtowa wystarcza 2 kolejne odczyty które dadzą ten sam wynik lub zastosowanie atomic block. to jak zmienić tą konstrukcję : while (_co20ms < 1000) { rób coś tam} ? Czy tak jest dobrze: [syntax=c]while(kopia_co20ms < 1000) { cli(); kopia_co20ms=_co20ms; sei(); rób coś tam }[/syntax] Atomic Block u mnie w...

    Mikrokontrolery   12 Sie 2011 13:22 Odpowiedzi: 7    Wyświetleń: 1555
  • [ATmega32] Jak działa funkcja millis() w Arduino i konfiguracja Timer2 w ATmega32?

    Dziękuję. A czy te cuda :) nie robią za ten ATOMIC BLOCK, o którym pisałeś? Pozdrawiam :)

    Mikrokontrolery AVR   16 Paź 2012 10:38 Odpowiedzi: 7    Wyświetleń: 2358
  • [ATmega32][C][AVR Studio 4] Slave SPI, timery i przerwania - kolizja.

    Albo wręcz zrobić naked i wykorzystać jakiś rejestr sprzętowy. Co prawda jest to 16 bitów. Ale można to zrobić albo w dwóch 8 bitowych- żeby było atomowo albo jako Atomic Block.

    Mikrokontrolery AVR   23 Lis 2011 21:03 Odpowiedzi: 6    Wyświetleń: 1988
  • GCC: Jak ustawić bity 4-7 na porcie bez zmiany 0-3?

    W takim przypadku można usunąć jedno maskowanie: [syntax=c] uint8_t x = 5 DataOut(x); void DataOut(uint8_t data){ data=data<<4; //przesuwam data na najstarsze bity (7-4) ATOMIC_BLOCK(ATOMIC_RESTORESTATE){ PORTx = (PORTx & 0x0F) | data; } }[/syntax]

    Mikrokontrolery   21 Gru 2011 10:17 Odpowiedzi: 5    Wyświetleń: 1017
  • REKLAMA
  • nRF24L01+ ATMega 16A [C] - Brak komunikacji pomiędzy układami

    Dlaczego wykorzystałeś drugie rozwiązanie zamiast pierwszego (IMHO - znacznie lepszego)? Wykorzystując takie zmienne jako flagi prowadzisz do niepotrzebnego komplikowania kodu i utrudnienia kontroli dynamicznie rozwijającego się programu :) Jedna z propozycji rozwiązania problemu: [syntax=c]char SPI_MasterTransmit(char cData){ char spi_return; ATOMIC_BLOCK(ATOMIC_RESTORESTATE){...

    Mikrokontrolery   25 Kwi 2015 09:36 Odpowiedzi: 9    Wyświetleń: 1743
  • [Atmega8] Atmega8: Losowe zaniki pomiaru z czujników DS18b20 w termometrze dwupunktowym

    Funkcje OneWireReset_1, OneWireReset_2, OneWireWriteByte_1, OneWireWriteByte_2, OneWireReadByte_1 i OneWireReadByte_2 obuduj tak: unsigned char OneWireReset_1() { cli(); ... ... ... sei(); return(0); } A jeszcze lepiej to obuduj makrem ATOMIC_BLOCK.

    Mikrokontrolery AVR   13 Gru 2010 23:10 Odpowiedzi: 4    Wyświetleń: 1681
  • Integracja sterowania PWM (AQma Small LED 1.0.2) z sterownikiem akwariowym

    Na początek upewnij się, że żadna z używanych bibliotek nie używa timera używanego do PWM na wybranych przez Ciebie pinach. W ciemno można np. spróbować zamienić piny na inne z PWM (3, 5, 6, 9, 10,11 w UNO/NANO/PRO MINI). Druga sprawa to już zajrzenie do bibliotek, czy aby nie wyłączają przerwań, głównym podejrzanym byłby tu czujnik DS18B20 (ale to...

    Arduino   05 Lis 2018 07:44 Odpowiedzi: 14    Wyświetleń: 603
  • REKLAMA
  • [BASCOM] Skąd te dodatkowe znaki przy wyświetlaniu?

    W przerwniu i programie głównym używasz zmiennych zadeklarowanych jako word. Myślę, ze tu leży pies pogrzebany. W C wystarczy użyc volatile i atomic_block. W Bascim? Był taki na Elektrodzie (niveasoft) co wiedział w jaki tajemniczy sposób Bascom zarządza takimi zmiennymi. Myślę, że nie masz wyjścia, tylko przed odczytej w programie głównym zmiennej...

    Mikrokontrolery AVR   27 Lut 2018 19:12 Odpowiedzi: 2    Wyświetleń: 681
  • Implementacja funkcji millis() z Arduino w języku C

    Co "toto" jest? ISR_NO_BLOCK(TIMER0_COMP_vect) Wyszukiwarka nie działa? Czemu kolega strzela na ślepo? Ja rozumie "dawno, dawno temu, za siedmioma górami, za siedmioma lasami, gdy nie było Internetu..." Ale teraz? https://www.nongnu.org/avr-libc/user-man... Tak ciężko znaleźć? Przy okazji. Chce kolega koniecznie dziedziczyc...

    Arduino   06 Lip 2018 22:47 Odpowiedzi: 30    Wyświetleń: 2220
  • Jak znaleźć inspirację na projekt programistyczny w backendzie?

    Wszystko co Ci proponują wydaje się zbyt trudne? Nic dziwnego. Web a mikrokontrolery to dwie różne rzeczy. Wielu informatykom wydaje się, że jak znają C/C++ to bez problemu poradzą sobie z mikrokontrolerem. Pierwsze kłody pod nogi gdy nie działa fopen np TTYS0, nie ma sterowników , później coraz trudniej. Przejście z mikroprocesorów 64 bit z dziesiątkami...

    Projektowanie i Tworzenie Po godzinach   04 Kwi 2020 23:15 Odpowiedzi: 35    Wyświetleń: 5664
  • UCRSC - nie mogę nic zapisać do rejestru. Programuję prze JTAG.

    Dzieki za zainteresowanie. Jednak powiem krótko-nie rozumiem. I jesli mozna bardziej łopatologicznie to wytłumaczyć to bardzo prosze. W tej chwili inicjuje UART jako pierwszą funkcje w main(). Przerwania globalne są wyłaczone. O ile rozumiem przytoczony text z noty to odczytać UCSRC mogę w nastepnym cyklu zegara, przy wyłaczonych przerwaniach globalnych....

    Mikrokontrolery AVR   10 Cze 2011 21:39 Odpowiedzi: 4    Wyświetleń: 1272
  • M8 DS18B20 LED - DS18B20 format wyniku i podział na cyfry

    Opanowałem całkowicie wyświetlanie na wyświetlaczu LED liczby w formie zmiennej uint16_t, z wyłączeniem wyświetlaczy na których jest "0" (oprócz cyfry jedności) oraz z wyświetlaniem segmentu "minus" w zależności od zmiennej znak. Poniżej funkcja "oblicz", może komuś się przyda, może też ktoś ją ulepszy. Zastosowałem tam dodatkową zmienną lokalną "liczba1"....

    Mikrokontrolery AVR   31 Gru 2012 12:09 Odpowiedzi: 27    Wyświetleń: 4143
  • Niedokładne wyniki licznika impulsów z enkodera - jak poprawić?

    Odnoszę się do kodu z postu #24. Zmienne 'wyslij' oraz 'ilosc' powinny mieć kwalifikator volatile ponieważ są używane w programie oraz w procedurze obsługi przerwania. [syntax=c] volatile int ilosc; volatile bool wyslij; [/syntax] Wywołanie funkcji serial() w pętli loop() może być wielokrotnie "przerwane" przez obsługę przerwania ENKODER_ISR() jeżeli...

    Arduino   08 Wrz 2019 08:31 Odpowiedzi: 47    Wyświetleń: 3021
  • Atmega128 - odczyt DS18B20 - z trzech różnych pinów

    Masz poniżej zawartość dwóch plików, które trzeba podmienić: [syntax=c] #include <util\atomic.h> #include <util\delay.h> #include <avr\io.h> #include "1wire_basic.h" uint8_t Error; uint8_t PinMask; void OW_SendBit(bool bit) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { DDRB |= PinMask; _delay_us(3); if(bit) DDRB &= ~PinMask; _delay_us(60);...

    Mikrokontrolery   04 Kwi 2020 00:24 Odpowiedzi: 21    Wyświetleń: 1299
  • ADC w Atmega128 - błędne odczyty napięcia z potencjometru na ADC1

    A dlaczego kolega ma ustawiony bit ADLAR w ADMUX ( ADMUX = 0b00100000; )? Przecież to włączenie wyrównania do lewej w rejestrze ADC, więc trzeba to chyba później uwzględnić w obliczeniach. Chciałbym jeszcze zauważyć, że sprintf() operuje na zmiennej czterobajtowej, która w każdej chwili może zostać zmieniona przez przerwanie od ADC przykładowo w czasie...

    Mikrokontrolery AVR   01 Mar 2011 16:55 Odpowiedzi: 5    Wyświetleń: 1324
  • DS18B20+ - błędne odczyty temperatury, jak naprawić?

    W OW_Reset po wyslaniu RESET_PULSE (ktory zreszta powinien trwac 480us, a nie 450) za dlugo czekasz pomiedzy koncem RESET_PULSE a poczatkiem badania PRESENCE_PULSE. Kolejna rzecz - po wykryciu PRESENCE_PULSE nie dawaj stalego opoznienia tylko probkuj magistrale az wroci do "1" - oczywiscie z zabezpieczeniem przed zwarciem do "0" - zeby program sie nie...

    Mikrokontrolery   08 Sty 2010 09:55 Odpowiedzi: 37    Wyświetleń: 3999
  • Wyłuskanie wartości zmiennej programowej i wysłanie jej przez UDP (język LUA)

    Jak kolega wyżej słusznie zauważył, potrzebna jest funkcja operująca na RAM. Domyślam się że korzystasz z przykładowych kodów z książki "AVR. Praktyczne projekty"? Nie ma tam buforowanej funkcji UART czytającej stringa umieszczonego w RAM, a więc trzeba sobie taką funkcję dopisać (można też zmodyfikować istniejącą korzystając z tzw named address spaces)....

    ESP8266 i ESP32   23 Wrz 2019 18:09 Odpowiedzi: 5    Wyświetleń: 696
  • Przykładowy program w C na ATmega32 do multipleksowania 4 wyświetlaczy 7-segmentowych

    Przykładowy program który wyświetla jakąś liczbę: [syntax=c]volatile uint16_t disp=0; uint8_t buff[]={0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000, 0b10001000, 0b10000011, 0b11000110, 0b10100001, 0b10000110, 0b10001110}; ISR(TIMER0_OVF_vect) { static uint8_t dig=0; static uint16_t...

    Mikrokontrolery AVR   23 Sty 2018 11:12 Odpowiedzi: 12    Wyświetleń: 1428
  • m8 [c] ATMEL STUDIO - dziwne zachowanie odczyt z PROGMEM

    No tak doczytałem o dokładności taktowania w rozdziale 24. Zaniepokoiło mnie jednak to, że wymagane jest do 1WIRE poprzez USART wykorzystanie pinu D0. Ja mam tam podpięte katody wyświetlacza (całe 8 bitów portu D). Mam w związku z tym kilka pytań: 1. Czy darować sobie w takim razie 1W po USART i bawić się z _delay'ami? mam dwa czujniki podpięte pod...

    Mikrokontrolery AVR   26 Gru 2012 22:47 Odpowiedzi: 20    Wyświetleń: 3099
  • [XMEGA][C] Odczyt flash w isr i eeprom w programie głównym

    Cześć, zagłębiam się trochę w wykorzystanie pamięci eeprom i flash i przeglądając avrowe funkcje nvm natknąłem się na takie stwierdzenie: The functions in this module are modifying the NVM.CMD register. * If the application are using program space access in interrupts * (__flash pointers in IAR EW or pgm_read_byte in GCC) interrupts * needs to be disabled...

    Mikrokontrolery AVR   01 Wrz 2021 19:27 Odpowiedzi: 5    Wyświetleń: 582
  • Nano i Micro - Błędne wartości w zmiennych volatile (wielobajtowych)

    Sądzę, że problem pojawia się gdy przerwanie zostanie wywołane w trakcie zapisu lub odczytu zmiennej z RAM Bardzo słusznie sądzisz. 1. Czy jest to normalne zachowanie, czy raczej efekt źle skonfigurowanego środowiska Arduino? Nie ma pojęcia jak się zachowuje Arduino, bo nie używam, ale podejrzewam, że podobnie jak C czyli sam musisz się przed tym zabezpieczyć....

    Arduino   26 Lip 2016 16:55 Odpowiedzi: 51    Wyświetleń: 3450
  • Zasady pisania programów pseudowielowątkowych na małych proc

    Kolega sulfur nie doczytał, nie pisałem o WinAPI, tylko o swoim okienkowym API na AVR, a że jest podobny do WinAPI z czasów W3 to nie dziwne. Pominąć zdarzenia możesz nie tylko w przypadku okienek, także w technicznych zastosowaniach. Np. czekasz na naciśnięcie przycisku, nerwowy użytkownik naciska go 3 razy, ale ciebie interesuje tylko fakt, że go...

    Mikrokontrolery   12 Kwi 2011 22:58 Odpowiedzi: 103    Wyświetleń: 15176
  • Jak zintegrować ADC z TIMER2 w ATmega32 do próbkowania 8kHz w AVR Studio 4?

    Przykład dla dwóch kanałów Przed wpisaniem tego kodu musisz odpowiednio ustawić Bity w rejestrach ADMUX i ADCSRA Jeśli chcesz mieć próbkowanie co określony czas to musisz odpowiednio ustawić rejestry zegara. Pisałem trochę z pamięci mogłem gdzieś zgubić klamrę przecinek lub średnik [syntax=c] //SET_BIT(ADCSRA, ADSC); - moje makro ustawiające bit w rejestrze,...

    Mikrokontrolery AVR   13 Lis 2011 15:02 Odpowiedzi: 21    Wyświetleń: 3390
  • Jak użyć warunku if i przerwania UART do obsługi czasu w C?

    Witam volatile struct _sTime { volatile uint8_t uiHours; volatile uint8_t uiMinute; volatile uint8_t uiSecond; }; ... ... if((60*sTime.uiMinute + sTime.uiSecond)>=600) { eMAIN_AutomatState = SERVICE_accepted; } if(true==volatileEverySecondsToggle && FREE==TxBufor_0.eTxStatuss)//tylko do spr. że...

    Mikrokontrolery AVR   06 Gru 2010 15:51 Odpowiedzi: 4    Wyświetleń: 1365
  • Odczyt czasu między przerwaniami z AD9850 przez Timer1 - błędy

    Kod poniżej. Zmieniłem parametr w Serial.begin() na 115200 - trzeba przestawić monitor portu szeregowego.[syntax=c]#include <util/atomic.h> volatile int32_t licznik = 0; volatile int32_t licznik_old = 0; volatile int32_t roznica = 0; volatile int32_t roznica_old = 0; void setup() { Serial.begin(115200); pinMode(2, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(2)...

    Arduino   16 Maj 2021 21:42 Odpowiedzi: 29    Wyświetleń: 1017
  • [ATmega 644p][C] Analizator - problem z przerwaniem

    Czyli początkujący w C- tak jak ja może na początek zapamiętać: "Stąd też praktycznie tylko zmienne globalne powinny mieć atrybut volatile" A w drugim przypadku korzystać z Atomic_Block w main(). Czy tak? W tym Atomic_Block nie mogę dojść do różnicy w _Forceon i _Restorestate.

    Mikrokontrolery AVR   01 Wrz 2010 14:56 Odpowiedzi: 14    Wyświetleń: 3509
  • Przetwornik U/f na ATmega32: Jak uzyskać dokładność 1 Hz w zakresie 1-5 kHz?

    uuidgen - nie można stosować sei() i cli(), bo prowadzi to do nieokreślonych skutków na wszystkich poziomach optymalizacji z wyjątkiem O0. Należy stosować makro ATOMIC_BLOCK. A możesz coś więcej powiedzieć na temat tych błędów? Bo, że sei/cli pozwalają na popełnienie głupich błędów (jak nie włączenie przerwań) to się zgodzę, ale: 1. Zarówno cli jak...

    Mikrokontrolery AVR   03 Maj 2010 17:09 Odpowiedzi: 12    Wyświetleń: 1582
  • Pierwsze starcie z mikrokontrolerami (dozwolone linki Allegro, eBay, itp)

    Jak zapisuje się do EEPROMU w Atmedze liczbę typu integer? Zaznaczam, że nie chcę korzystać z gotowych funkcji (eeprom_read_word). Poniższy kod oparty o dokumentacje Atmegi32 bez problemu zapisuje zmienne 8-bitowe. [syntax=c] void ZapisDoEpromu (unsigned int adres, unsigned char dane) { ATOMIC_BLOCK(ATOMIC_FORCEON) { while (EECR & (1<<EEWE));...

    Mikrokontrolery Początkujący   09 Sty 2018 16:32 Odpowiedzi: 2015    Wyświetleń: 551520
  • Zmiana bitów 2-4 w PORTB jednocześnie w AVR C, użycie licznika 0-7

    AVR-libc oferuje makro ATOMIC_BLOCK.

    Mikrokontrolery AVR   29 Paź 2009 11:00 Odpowiedzi: 7    Wyświetleń: 1410
  • [a168][c]dlaczego procek może nie chcieć pisać do eepromu?

    Właśnie do tego masz ATOMIC_BLOCK. Instrukcje w takim bloku będą chronione. Bardziej elegancko można to zrobić w C++, no ale to inna bajka.

    Mikrokontrolery AVR   21 Cze 2010 21:11 Odpowiedzi: 19    Wyświetleń: 1322
  • Atmega32 16MHz/DS18B20 - niewłaściwe opóźnienia

    Skorzystalem z Twojego kodu: [syntax=C]#define SET(what, x) (what |= (1<<x)) #define CLR(what, x) (what &= ~(1<<x)) #define DDRDDRC #define OW_PIN7 #define PORT PORTC #define OW_NoPresencePulse 1 #define OW_BusShorted 2 #define OW_SearchNoResponse3 #define OW_OK 100 #define OW_CONVERT 0x44 #define OW_SkipROM 0xCC #define OW_MatchROM0x55...

    Mikrokontrolery Początkujący   18 Lut 2014 00:15 Odpowiedzi: 3    Wyświetleń: 1335
  • Atmega16 C - Jak poprawić funkcję opóźnienia bez _delay_ms()?

    To prawidłowo powinno być tak: [syntax=c] volatile int counter; delay(x) { ATOMIC_BLOCK(ATOMIC_FORCEON) { counter = 0 } while(counter<x){/* waits */} } ISR() { count++; } [/syntax] To takie rozwiązanie nie będzie miało większego wpływu na mój zegar Jeżeli dam opóźnienie 60s to nie zatrzyma mi się zegar na 60s ?

    Mikrokontrolery AVR   04 Kwi 2013 07:09 Odpowiedzi: 33    Wyświetleń: 3096
  • AVR-GCC - Optymalizacja dostępu do struktury przez GCC?

    [syntax=c]memcmp(Tablica,(void*) &struktura[index].Tab, 8);[/syntax] Działa. Rozumiem, że w tym przypadku, gdy funkcja używana jest w ISR to tylko kwestia zapisu, zaś w innym przypadku (gdy byłaby używana w main) należałoby zastosować: [syntax=c]ATOMIC_BLOCK(ATOMIC_RESTORESTA... { memcmp(Tablica,(void*) &struktura[index].Tab, 8); }[/syntax] robiw

    Mikrokontrolery AVR   12 Cze 2014 22:15 Odpowiedzi: 25    Wyświetleń: 2970
  • [ATMega16][C] Program się zawiesza w losowych momentach

    Nie znalazłem gotowca z wykorzystaniem TWIE czyli przerwania od TWI. Ani nic podobnego do gotowca. Te petle while trwają krótko- kilkadziesiąt mikrosekund- teoretycznie. A próbowałeś z ATOMIC_BLOCK?

    Mikrokontrolery AVR   14 Wrz 2011 21:13 Odpowiedzi: 56    Wyświetleń: 4777
  • Arduino: Obsługa wielu czujników i diod bez użycia delay i z przerwaniami

    Przyznam, że 99,99% moich programów zaczyna się od napisania przerwań od timera, najczęściej 1ms (w 8051 było to 10ms bo był koszmarnie wolny i rozbudowane przerwania wywyływane co 1ms zużywały 50% czasu procka). Do tej wypowiedzi. Nie uzależniasz przerwania od specjalnego pinu procesora, który bezwzględnie wymusza wykonanie konkretnych akcji. Tworzysz...

    Arduino   04 Sty 2018 00:34 Odpowiedzi: 115    Wyświetleń: 5829
  • ATmega128A - Nie mogę ustawić breakpointów w Atmel Studio 6.2 i 7.0

    Wybacz, ale nie rozumiem współpracy tych linii kodu. Zastanów się nad użyciem [syntax=c]ISR(TIMER0_OVF_vect) { timer0_licz--;[/syntax] i dalej, cała funkcja [syntax=c]void delay_500ms(void) { ATOMIC_BLOCK(ATOMIC_FORCEON) { TIFR |= _BV(TOV0); //zerowanie flagi przerwania (zapis 1) TIMSK |= _BV(TOIE0); //aktywacja przerwania od przepełnienia TIMER0 (OVF)...

    Mikrokontrolery AVR   22 Cze 2016 06:33 Odpowiedzi: 37    Wyświetleń: 3216
  • [Atmega8] Atmega8 resetuje się po 260 µs przy użyciu przerwań w AVR Studio - dlaczego?

    W avr-libc są makra do operacji atomowych: #include <util/atomic.h> ATOMIC_BLOCK(ATOMIC_RESTORESTATE)... { /* zrób coś */ } [url=http://www.nongnu.org/avr-libc/user... Pozdrawiam, Dr.Vee

    Mikrokontrolery AVR   10 Paź 2009 10:05 Odpowiedzi: 8    Wyświetleń: 3455
  • Jak zmniejszyć rozmiar kodu w C dla AVRStudio?

    Za późno, już zrobiłem i działa:) Po 20 sek. wyłącza podświetlanie wyświetlacza, po 1 min. wyłącza urządzenie. Naciśnięcie dowolnego klawisza włącza podświetlanie ekranu i kasuje liczniki timera:) Ale zajrzę do ATOMIC_BLOCK, bo może rzeczywiście wyskoczą obelgi;)

    Mikrokontrolery AVR   13 Cze 2011 11:36 Odpowiedzi: 39    Wyświetleń: 3635
  • Kod w C do jednorazowej konwersji AC na Atmega8 i zapis do zmiennej

    To jest jak ustawienie flagi w przerwaniu- ale nie ma prologu i epilogu wejścia w przerwanie. Jest szybciej. Z tym że odczyt rejestrów w takim przypadku należy chyba robić w Atomic_block. A- ale to jest w asm. No to trzeba zablokować/odblokować przerwania.

    Mikrokontrolery   10 Sty 2012 20:48 Odpowiedzi: 14    Wyświetleń: 2976
  • [ATmega32][c] Przerwanie od porównania w timer1 - ograniczenia

    Gdzieś na forum był już podobny temat przerabiany. Instrukcja skoku do przerwania trwa z tego co wiem 4 cykle zegarowe. W trakcie obsługi jednego przerwania inne nie jest obsługiwane. Zostanie wykonane dopiero po zakończeniu obsługi poprzedniego przerwania. Jeżeli co najmniej dwa przerwania wystąpią w tym samym czasie to zostanie obsłużone to z niższą...

    Mikrokontrolery AVR   21 Lis 2011 17:23 Odpowiedzi: 10    Wyświetleń: 2488
  • [ATmega32][C] - Złe działanie bez kolejnego resetu po właczeniu zasilania

    OK, udało mi się wyizolować problem - wysypuje się dodawanie znaków do stringa żeby zawsze miał identyczną długość: [syntax=c]while(strlen(bufstr) < 4) append(bufstr," ",0);[/syntax] Po zakomentowaniu zawsze działa dobrze. Wygląda mi na to że gdzieś w tej funkcji wycieka mi pamięć. Funkcja append: [syntax=c]void append(char subject[], const char...

    Mikrokontrolery AVR   05 Lis 2015 19:45 Odpowiedzi: 17    Wyświetleń: 1485
  • Jak używać muteksów w AVR do ochrony zmiennych przed przerwaniami?

    W tym przykladzie potrzebujesz raczej atomowych operacji, a nie blokowania dostepu do zmiennych. Zwykle wylaczanie przerwan - w AVR-libc masz w tym celu makra ATOMIC_BLOCK jest wystarczajace. Freddie - jesli tak bardzo ci brakuje double to zainwestuj w komercyjny kompilator, ktory to obsluguje takze dla AVR, albo zrob cos dla ludzkosci i napisz to dla...

    Mikrokontrolery AVR   08 Lis 2009 11:03 Odpowiedzi: 16    Wyświetleń: 2277
  • Konfiguracja ADC w przerwaniach na XMEGA - atxmega128A3U, wynik = 0 na LCD

    W trybie freerunning kolejne pomiary są wyzwalane automatycznie, po zakończeniu poprzedniego. Co do atomowości - nie, volatile zapewnia tylko to, że kompilator przy każdym dostępie do zmiennej odczyta/zapisze jej zawartość w pamięci RAM. Natomiast ty musisz zapewnić, aby przy dostępie, nie następował dostęp w tym samym czasie w innym miejscu programu...

    Mikrokontrolery   24 Wrz 2017 10:11 Odpowiedzi: 11    Wyświetleń: 852
  • Jak bezpiecznie zrzucić 16-bitową wartość z TCx0.CNT w Xmega?

    Tak jak pisałem, cała operacja jest ukryta przed programistą i po prostu nie musisz się tym przejmować. Jak widziesz, w prezentowanym kodzie odczywana jest najpierw mniej znacząca, a potem bardziej znacząca część rejestru, resztą zajmuje się hardware MCU. Co do odczytu w main i przerwaniu, to jak zawsze należy zadbać o atomowość - czyli umieścić odczyt...

    Mikrokontrolery AVR   10 Kwi 2017 10:52 Odpowiedzi: 7    Wyświetleń: 981
  • Atmega32 i DS18B20 - Problemy z zewnętrznym kwarcem 1.47456MHz

    Tak już lepiej. Działa? Jeśli nie to sprawdź poniższą funkcję: [syntax=c] void OW_ResetPulse() { SET(DDR, OW_PIN); _delay_us(480); CLR(DDR, OW_PIN); } bool OW_WaitForPresencePulse() { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { OW_ResetPulse(); _delay_us(30); unsigned char counter=0; while((counter<0xFF) && (GET(OW_PIN))) { _delay_us(1); counter++;...

    Mikrokontrolery AVR   08 Gru 2011 01:58 Odpowiedzi: 28    Wyświetleń: 2346
  • AVR C – jak bezpiecznie obsłużyć bufor kołowy UART (Petera Fleury) w sekcji krytycznej?

    W celu uzyskania "atomowości" zainclude'uj sobie <util/atomic.h> . Jest w nowym WinAVR. Jest tam kilka makr, Ciebie pewnie zainteresuje taka konstrukcja: ATOMIC_BLOCK(ATOMIC_RESTORESTATE)... (jakieś operacje) } . Dobrze wiedziec, żę coś takiego jest w nowym WinAVR. Ja czasami używam takiej takiego rozwiązania: unsigned...

    Mikrokontrolery   22 Kwi 2008 15:53 Odpowiedzi: 11    Wyświetleń: 1955
  • Niepokojące migotanie żarówki przy sterowaniu fazowym odbiornikiem prądu przemiennego 230V

    I niestety znowu mamy przykład że brak podania całego kodu na początku zgłaszania problemu powoduje niepotrzebną stratę czasu na szukanie błędu tam gdzie go nie ma. Tak, masz rację. Mea culpa, sorry. Niemniej jeddnak osobiście nie zabierałeś głosu w sprawie, więc mam nadzieję, że tego czasu nie straciłeś. Co zaś się tyczy sedna wypowiedzi...nie przyszło...

    Mikrokontrolery AVR   27 Gru 2020 15:36 Odpowiedzi: 75    Wyświetleń: 3450
  • [tiny26][c]problem z czytaniem i porownywaniem tablic

    Jeszcze dodalbym, ze poniewaz np. g_KrokiZTablicy sa zadeklarowane jako uint16_t i sa volatile i porownywane w przerwaniu to ich modyfikacje w glownej petli nalezy wykonac z zablokowanymi przerwaniami - np. za pomoca macro ATOMIC_BLOCK. Przerwanie moze wystapic pomiedzy operacjami zmiany tej zmiennej, zmieniony bedzie tylko jeden bajt i w przerwaniu...

    Mikrokontrolery AVR   21 Sie 2009 08:51 Odpowiedzi: 6    Wyświetleń: 2283
  • Nierówne odczyty czasu między przerwaniami transoptora przy 400 RPM

    Zmienna wynik zadeklarowana jest jako int i zdaje się 16 bitowa. Dostęp do tej zmiennej jest możliwy z przerwania oraz z głównego programu ale nie widzę synchronizacji. Możliwe jest zatem ze głowny wątek odczyta jeden bajt ze zmiennej (w końcu mamy 8 bitowy procesor) po czym nastąpi przerwanie w którym 'wynik' zostanie zmodyfikowany, a po powrocie do...

    Mikrokontrolery   01 Gru 2018 23:39 Odpowiedzi: 17    Wyświetleń: 852
  • Jak wywołać programowe przerwanie w ATMEGA644 bez użycia wolnych pinów?

    Za czasów 8051 obsługiwałem 8 zewnętrznych usart (2x16c554) tyle, że w przestrzeni XRAM. Kto by pomyślał, że na AVR będę miał większe problemy. Problemy wynikają z tego, co koledzy wcześniej napisali - niezbyt przemyślanego projektu hardware. Trudno się nie zgodzić, że pomysł protezowania przy pomocy zewnętrznych UARTów jest słaby ;) No i do tego uparłeś...

    Mikrokontrolery AVR   18 Sty 2018 21:38 Odpowiedzi: 51    Wyświetleń: 2391
  • [Mega32] Mega32 ADC - Problem z wysyłaniem danych przez UART, odbieram tylko H

    No dobra to jedna rzecz już wyjaśniona, napisałem taka funkcje: [syntax=c] void uart_puts(char *s) { register char c; while ((c = *s++)) uart_putc(c); uart_putc('\n'); } [/syntax] teraz moja pętla główna w pliku main.c wygląda tak: [syntax=c] while(1) { ATOMIC_BLOCK(ATOMIC_FORCEON) { adc_temp=adc; } if(send_flag) { send_flag=0; uart_puts(utoa(adc_temp,...

    Mikrokontrolery AVR   29 Sty 2012 10:12 Odpowiedzi: 10    Wyświetleń: 2717
  • Prawidłowy sposób korzystania z przerwania z RTC PFC8583

    Zminana na odczyt co 60s zmieni tylko tyle, że mignięcie będzie co 60s a nie co sekundę, niby lepiej, ale ciągle nie tak. Jeśli po włączeniu/wyłączeniu przerwań program idzie w maliny to znaczy, że masz w programie błąd. Najpewniej oprócz flagi I modyfikujesz także inne flagi tego rejestru. Zamiast modyfikować rejestr kontrolny procesora użyj sei/cli....

    Mikrokontrolery AVR   23 Mar 2014 10:31 Odpowiedzi: 10    Wyświetleń: 2460
  • Książki o programowaniu uC i systemach uC - opinie, przemyślenia, nowości

    No tak-ten rozdział o przerwaniach to czytałem jak kryminał. Wydawało mi się że coś o tym wiem- a tu trup w każdej szafie... Ale przedtem wydawało mi śię że ATOMIC_BLOCK jest trochę mądrzejszy- że potrafi rozpoznać czy instrukcja jest wykonywana w jednym czy w paru cyklach. I potrafi je wykonać tak aby nie rozdzielić tych instrukcji. A tu- po prostu...

    Mikrokontrolery Początkujący   21 Mar 2020 12:19 Odpowiedzi: 525    Wyświetleń: 139349
  • Enkoder (zdarzenia, dekoder) - wyskalowanie wyniku - XMEGA

    (at)kamil94goldman Ciągle w twoim kodzie nie widzę korekcji war_pom. Teraz to działa tak, że enkoderem zmieniasz wartość tej zmiennej. jeśli przekracza ona 3700 to wyświetlasz 3700, ale zmienna ciągle może rosnąć przy dalszym kręceniu enkodera. Podobnie w drugą stronę - jeśli jest mniejsza od zera, to wyświetlasz zero, ale zmienna może przyjmować co...

    Mikrokontrolery   26 Wrz 2017 10:27 Odpowiedzi: 30    Wyświetleń: 1581
  • [ATxmega64B3] - Czy dostęp do bitów w rejestrach GPIORx jest faktycznie atomowy

    Dziękuje za odpowiedź. Tak to by się zgadzało, że za odpowiedni kod odpowiada w tym przypadku odpowiednia konfiguracja kompilatora. Czy mógłbyś zasugerować jakie ustawienia (oprócz oczywiście stopnia optymalizacji) należałoby wprowadzić w kompilatorze aby wygenerować taki "atomowy" kod jaki uzyskałeś. Samo włączenie optymalizacji (-Os) za bardzo mnie...

    Mikrokontrolery AVR   01 Mar 2013 12:37 Odpowiedzi: 5    Wyświetleń: 1731
  • [Atmega32][C]Przypisanie bajtu danych do dwóch różnych portów

    Tak czy inaczej pozostaje problem odczyt-modyfikacja-zapis. Będzie to realizowane w kilku operacjach, pomiędzy które może np. wejść przerwanie. I jeśli takie przerwanie zmieni coś w porcie to może być problem. A skąd pozostaje ten problem - ja tam go nie widzę. Tzn w tym sensie, że po pierwsze nikt tu nie pisał (tzn autor nie pisał) że przerwania będą...

    Mikrokontrolery AVR   31 Paź 2011 19:54 Odpowiedzi: 21    Wyświetleń: 2311
  • ATTINY2313: Multipleksowanie DS18B20 na 4x7-segmentowym wyświetlaczu

    Witam, Mam problem z przerobieniem kodu do obsługi DS18B20. Chodzi o nieszczęsne multipleksowanie. Wcześniej napisałem kod bez multipleksowania i działa bez problemu. Próby z multipleksowaniem powodują wyświetlanie 85. Macie jakieś sugestie? [syntax=c]#ifndef F_CPU #define F_CPU 8000000 #endif #include <avr/interrupt.h>// Definicje nazw pinow...

    Mikrokontrolery Początkujący   01 Sty 2014 17:02 Odpowiedzi: 4    Wyświetleń: 1143
  • ATMEGA32 - Jak uruchomić równoległe wątki do pomiarów i komunikacji RS232?

    Spróbowałem odblokowania przerwań na czas opóźnień w resecie i działa to bardzo dobrze. Nie ma błędów komunikacji, a na silniku nie słychać już żadnych przerw - praca jest płynna. Czyli chyba problem rozwiązany. Ja korzystałem z tego opisu Atmela, do którego dołączony był przykład: http://www.atmel.com/images/doc2579.pdf . Napisany co prawda na Atmegi,...

    Mikrokontrolery AVR   31 Paź 2015 17:39 Odpowiedzi: 35    Wyświetleń: 5493
  • Usuwanie części po przecinku ze zmiennej String w Arduino

    Znalazłem inną bibliotekę taką w której można określić pin sterujący podświetlaniem. Problem w tym że podczas kompilacji daje jakiś dziwny błąd którego nie mogę zlokalizować. [syntax=c] Arduino:1.8.5 (Windows 10), Płytka:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200" In file included from C:\Program...

    Arduino   14 Mar 2018 22:04 Odpowiedzi: 37    Wyświetleń: 2133
  • Arduino NANO Every, test, uruchomienie, problemy...

    Assemblera na ARM? Na AVR piszesz w ASM? Nie, czasami robię wstawki w przerwaniu, ale głównie sprawdzam co mi kompilator wypluł bo juz kilka razy miałem że program mi nie mnie chodził jak chciałem przez nadmierną optymalizację kompilatora. W ARM takich problemów nie ma. Wstawek ASM nie trzeba robić ani poprawiac kompilatora. Więcej ram, SPI, I2C, RAM,...

    Artykuły   10 Lip 2020 05:08 Odpowiedzi: 32    Wyświetleń: 19308
  • Usypianie i budzenie procesora przerwaniem zewnętrznym (ATMega88 [nie 8] - Int0)

    Zasadniczy błąd to usypianie w przerwaniu. Wyłączone są przerwania, a ty usypiasz i procesor się nie wybudzi. Ja nigdy nie usypiam w przerwaniu. Ustaw sobie pomocniczą flagę, którą w pętli głównej odczytaj i wtedy uśpij. Jak chcesz zaoszczędzić na bateriach to dołącz cli() i sei() w przerwaniu jak ty masz jest nie potrzebne, bo to jest już robione z...

    Mikrokontrolery AVR   02 Lip 2012 21:12 Odpowiedzi: 15    Wyświetleń: 2580
  • ATMEGA 32: Niespodziewane wyjście z pętli głównej do funkcji ustawień

    Od kiedy praca dyplomowa jest tajna? Pytam z ciekawości- kiedyś była jawna na całym etapie pisania. Dlaczego w pętli głównej blokujesz przerwania- potem wykonujesz sporo obliczeń- a potem odblokowujesz? A co będzie jak w tym czasie pojawią się dwa przerwania? Jedno pójdzie się kochać. Do tego wykorzystuje się ATOMIC_BLOCK jak naprawdę trzeba. Co kryje...

    Mikrokontrolery AVR   12 Lip 2011 17:05 Odpowiedzi: 29    Wyświetleń: 2964
  • ATTINY2313 - Czy przepełnienie SRAM powoduje reset procesora? MCUSR = 0

    Ponownie odświeżam. Z braku czasu, nie miałem kiedy dokończyć programu. Dalej mam problem z resetami. Wyciąłem obsługę DS, bo to nie ona powoduje restarty. Przyczyna może leżeć w źle ustawionych przerwaniach? [syntax=c]#ifndef F_CPU #define F_CPU 8000000 #endif #include <avr/interrupt.h>// Definicje nazw pinow uk³adu #include <avr/io.h>...

    Mikrokontrolery Początkujący   27 Lut 2014 11:48 Odpowiedzi: 8    Wyświetleń: 1398
  • Atxmega USART - kod TMF'a nie działa po dołożeniu jednej stałej

    Witam. W przykładach do książki Tomasza Francuza jest obsługa USART w przerwaniach. Kod: [syntax=c] #define MAX_CMD_LEN 10 //Maksymalna długość polecenia w bajtach void USART_init() { PORTC_OUTSET=PIN3_bm; PORTC_DIRSET=PIN3_bm; //Pin TxD musi być wyjściem USARTC0.CTRLA=USART_RXCINTLVL_LO_gc | USART_TXCINTLVL_LO_gc; //Odblokuj przerwania odbiornika i...

    Mikrokontrolery   23 Maj 2014 16:17 Odpowiedzi: 2    Wyświetleń: 1062
  • [Atmega328p] [C] - Żle odmierzana czas, zła konfiguracja timera?

    jedyne co mogę jeszcze dołożyć to definicja struktury [syntax=c] struct connections { uint8_t detect : 3; //nr. detektora uint8_t triac : 3; //nr. triaka uint8_t setFlag : 2; //znacznik ustawienia fazy }; // zmienna connections ma zapisane w sobie // kolejności występowania faz oraz przyporządkowuje // do fazy detektor i triak volatile struct connections...

    Mikrokontrolery AVR   27 Lip 2015 15:16 Odpowiedzi: 14    Wyświetleń: 3321
  • [XMEGA][C] Rozszerzenie obsługi komend UART/USART ponad 2 komendy

    Witam. Piszę aplikację w języku C służącą do komunikacji mikrokontrolera AVR XMEGA32A4 poprzez interfejs UART/USART. Docelowo interfejs ten ma być połączony z modułem Bluetooth i służyć do komunikacji z telefonem. Aplikacja na telefonie sterowałaby mikrokontrolerem i urządzeniami peryferyjnymi podpiętymi pod niego poprzez wysyłanie odpowiednich komend....

    Mikrokontrolery AVR   09 Wrz 2018 01:39 Odpowiedzi: 8    Wyświetleń: 1104
  • Program wykrzacza się, gdy zmienna nie jest zadeklarowana jako static.

    Cześć, programowanie embedded nie przestaje mnie zaskakiwać. Mam program, ogólnie dość rozbudowany, na procesor xmega. Program między innymi odtwarza dźwięk. Zajmując się czym innym chciałem sobie czasowo mrugać ledem, więc do sprawdzania czasu korzystam z funkcji millis(), która wygląda tak: [syntax=c] long millis() { long result; ATOMIC_BLOCK(ATOMIC_RESTORESTATE)...

    Mikrokontrolery AVR   10 Mar 2021 15:49 Odpowiedzi: 31    Wyświetleń: 1491
  • Nadpróbkowanie LM35 z użyciem AVR i przerwań ADC - jak poprawić kod?

    Witam [syntax=c] #include <avr\io.h> #include <stdio.h> #include <avr\interrupt.h> #include <util\atomic.h> #include <string.h> #include <util\delay.h> #include "KS0108lib.h" #include "graphics.h" #define NOOFSAMPLES128 volatile uint32_t ADCVal; ISR(ADC_vect) { static uint32_t ADCaccum; static uint8_t sampleno; ADCaccum+=ADC;...

    Mikrokontrolery AVR   05 Cze 2017 22:01 Odpowiedzi: 16    Wyświetleń: 2313
  • Jak uśrednić odczyty z 8 czujników KTY na ADC w AVR i wyświetlić na LCD?

    Ciągle jest wiele rzeczy do poprawienia - z banalnych - nie używaj sekwencyjnego odwoływania się do rejestru IO, np. ADMUX, tylko przypisz mu od razu nową wartość. Ponieważ rejestry IO są volatile, więc każde odwołanie do nich generuje odpowiedni ciąg instrukcji. Powstaje mega długie przerwanie, zupełnie niepotrzebne. Poza tym, po co ci osobny licznik,...

    Mikrokontrolery   20 Lip 2011 18:36 Odpowiedzi: 6    Wyświetleń: 2715
  • ds18b20 - Obsługa 1wire - diagnoza funkcji odbierania pisania

    Silne 1 zapewniam przez rezystor połączony z linią danych i linią vcc. Co do sum crc - nie ma ich w tym kodzie podobnie jak wielu innych rzeczy - skoro miałem probem chociaż z odbiorem bajtu innego niż stałe "1" nie było mowy o liczeniu crc. Finalna aplikacja posiadać będzie sprawdzanie sum. Nie rozumiem, dlaczego mam problemy z zachowaniem czasu okien...

    Mikrokontrolery AVR   21 Lip 2015 22:10 Odpowiedzi: 23    Wyświetleń: 1590
  • AVR231 - Bootloader wpływa 'niechcący' na funkcje IO aplikacji

    A skąd taki wniosek? Pozostałe linie działają bez zmian. [syntax=c] #define CLEAR_1W(port, bit) port|=(1<<bit)//_BV(bit) // 1 - wy #define SET_1W(port, bit) port&=~(1<<bit)//_BV(bit)// 0 - we unsigned char RESET_PULSE(volatile unsigned char *port, unsigned char pin) { unsigned char PRESENCE; CLEAR_1W(DDR(*port), pin);//CLEAR_1wire; _delay_us(500);...

    Mikrokontrolery AVR   16 Sie 2016 11:20 Odpowiedzi: 14    Wyświetleń: 1188
  • Współbieżna obsługa LCD z przerwania i main w AVR C - kod i struktura bufora

    Witam Znów mam pytanie dotyczące kodu który pozwala na współbieżną obsługe lcd z main i przerwania przedstawiam tylko plik .c [syntax=c] #include "LCD_trans.h" #include <avr/interrupt.h> #include <string.h> #include <util/atomic.h> #include "defines.h" #include "hd44780.h" #include "Alloc_safe.h" #include "PinMacros.h" typedef struct...

    Mikrokontrolery AVR   29 Maj 2017 17:35 Odpowiedzi: 11    Wyświetleń: 1446
  • [ATmega32] [ATmega32][C/AVR Studio 5] Błędne odczyty z LM335 na LCD, jak poprawić?

    [syntax=c]#include <stdio.h> #include <stdlib.h> #include <avr/io.h> #include <util/delay.h> #include <util/atomic.h> #include "HD44780.h" #define NOSAMPLES 128 // usrednianie wyniku co 128 probek volatile uint16_t ADCwynik; // zmienna zawierajaca wartosc ADC co 128 probek void init_adc(void) { ADMUX = (1 << REFS0);...

    Mikrokontrolery AVR   04 Gru 2011 13:22 Odpowiedzi: 42    Wyświetleń: 6671
  • Spowolnione działanie Nucleo po dłuższym okresie pracy - mbed

    Warto aby autor przeczytał https://forbot.pl/blog/kurs-arduino-ii-w... ARM ma timer systemowy problem przepełnienia znany z millis() można rozwiązać używając timera 64-bit. Powstanie problem odczytu zmiennej 64-bit używanej w przerwaniu i programie głównym, można rozwiązać to przez __disable_irq() i __enable_irq()....

    Mikrokontrolery   18 Maj 2018 06:28 Odpowiedzi: 29    Wyświetleń: 939
  • [AVR] [AVR][C++] Atmega64 - różnice między wskaźnikiem a referencją w C++

    Ale odpowiedź... Nie powiem żebyś "zapunktował" takim tekstem... 4\/3!! No coz, gdybym chcial zapunktowac to zostalbym politykiem :) Niemniej uwazam, ze merytorycznie odnioslem sie do problemu, czyli jest ok. A swietych wojen nie lubie, nie widze sensu w udowadnianiu komus, ze cos co lubi jest be i powinien polubic to co ja lubie bo to jest ok. Co...

    Mikrokontrolery AVR   17 Lis 2009 18:05 Odpowiedzi: 15    Wyświetleń: 2665
  • Dekodowanie sygnału DCF77 na ATmega - synchronizacja czasu bez GPS

    U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie był problem, gdy je zasilałem osobno - z sieci lub z baterii...

    Mikrokontrolery AVR   09 Mar 2023 17:01 Odpowiedzi: 27    Wyświetleń: 10206
  • Jak skonfigurować oscyloskop na ATmega32 z użyciem poniższego kodu?

    Witam wgrałem poniższy kod do megi32 i będę sobie testował oscyloskop [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/atomic.h> #include <string.h> #include <stdlib.h> #include "lcd44780.h" #include <avr/pgmspace.h> void timer_init() { TCCR1B=_BV(ICNC1) | _BV(ICES1); //Włącz filtrowanie ICP,...

    Mikrokontrolery AVR   17 Maj 2017 21:44 Odpowiedzi: 13    Wyświetleń: 1605
  • [Atmega32] - PWM i błąd podczas kompliowania przykładu z książki

    Witam, Korzystam z książki Tomasza Francuza i na swojej Atmedze32 próbuje skompilować kod, którym odczytam wypełnienie PWM sygnału. Podczas kompilacji dostaje błąd: Error1'GTCCR' undeclared (first use in this function) Error4'ICIE1' undeclared (first use in this function) Error3'PSRSYNC' undeclared (first use in this function) To jest ten kod: [syntax=c]#include...

    Mikrokontrolery AVR   27 Gru 2014 20:07 Odpowiedzi: 4    Wyświetleń: 1002
  • DS18B20, ATMEGA32A - Nie moge wykryc Presence Pulse

    Witam Już od dłuższego czasu nie mogę poprawnie uruchomić termometru ds18b20. mikrokontroler to ATMEGA32A, F_CPU 16Mhz Próbowałem już na wiele sposobów, ostatecznie jednak korzystam z kodu zamieszczonego w książce tmfa. http://obrazki.elektroda.pl/9838684200_1... Każda próba kończy się odpowiedzią " No Presence Pulse" Jestem początkujący...

    Mikrokontrolery Początkujący   16 Paź 2013 18:22 Odpowiedzi: 10    Wyświetleń: 1941
  • PIC24HJ128GP502 - rozpoznanie bojem (ustawienie zegara)

    A jak jest z kompilatorami na AVR-y są darmowe czy płatne ? AVR-GCC, bezpłatny kompilator C/C++. GCC popularny jest także wśród ARM. Na start z AVR dobre jest Arduino (tez korzysta z AVR-GCC). Arduino obsługuje tez PIC32 (ale to chyba ARM). Arduino dobre jest do pobawienia się, szybkiego sprawdzenia jakiegoś układu peryferyjnego, wyswietlacza, czytnika...

    Mikrokontrolery PIC   25 Lis 2017 00:41 Odpowiedzi: 16    Wyświetleń: 1689
  • Konfiguracja jednego timera TCA0 do dwóch częstotliwości.

    Podziałam dzisiaj wieczorem i dam znać co z tego wyszło. Kod do analizy/weryfikacji poniżej: /* * Atmeta4808_PomiarSily.c * * Created: 24.02.2025 23:00:58 * Author : Waldek */ #define F_CPU 20000000UL // wewnętrzny kwarc 20Mhz #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <util/atomic.h>...

    Mikrokontrolery   09 Mar 2025 18:32 Odpowiedzi: 17    Wyświetleń: 441
  • Xmega A1 - Jak poprawnie zrealizować USART z przerwaniami?

    hmmm... a da się jakoś uzyskać przerwanie od systemu QDEC? Mogę zrezygnować z przerwań od USART, ale muszę jakoś sprawdzać kiedy zliczona ilość impulsów osiągnie wartość zadaną wartość. Da się jakoś wpisać ISR i uzyskać obsługę przerwania? Dodano po 54 Znalazłem taki kod ( Dodano po 9 Jeszcze jedno: Czy używając union (jak w [url=http://www.avrfreaks.net/forum/usin...

    Mikrokontrolery AVR   15 Gru 2014 21:18 Odpowiedzi: 9    Wyświetleń: 1914
  • Język C dla Atmeli: ograniczenie ilości wpisów w tablicy const char

    Dostosowuję program przykładowy z książki "AVR Praktyczne projekty" dotyczący USART-DMA. Jest tam całkiem fajna funkcja która zamienia napis na numer indeksu tego napisu w tablicy. Nie mogę jednak zrozumieć w czym tkwi ograniczenie polegające na niemożności zwiększenia ilości wpisów w tabeli. Fragment oryginalnego kodu: [syntax=c]#define MAX_CMD_LEN...

    Mikrokontrolery AVR   21 Paź 2014 17:24 Odpowiedzi: 12    Wyświetleń: 1743
  • Błąd zegara AVT-5522: wyświetla złą godzinę 10. i 30. dnia miesiąca.

    Różnica może wynikać z użytej wersji kompilatora, albo czy wgrana jest wersja Debug a może Release. Piszę o tym ponieważ natknąłem się na coś niedobrego ze strony kompilatora kompilując ze źródła programu w Microchip Studio. Nie jestem pewien ale wydaje mi się, że znalazłem błąd w kompilatorze avr-gcc w trybie Release z włączoną flagą "-Os". Wyszczególniłem...

    Mikrokontrolery   25 Gru 2024 20:35 Odpowiedzi: 152    Wyświetleń: 5859
  • [Atmega32]+czujnik przyśpieszenia+obsluga PWM / ADC

    Zredukowalem trochę program tylko do odczytu z ADC bez przyciskow i wyswietlacza. Deklaracja zmiennych [syntax=c] #include<avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdint.h> #include <avr/sleep.h> #include <avr/eeprom.h> #include<util/atomic.h> #define przycisk PINC #define ELEKTROMAGNES...

    Mikrokontrolery AVR   06 Paź 2011 15:40 Odpowiedzi: 27    Wyświetleń: 3743
  • XMega128A3U - Emulacja RS na USB i nieprawidłowa praca innych portów

    Witam. Mam problem z jednoczesnym używaniem portów. Do komunikacji z komputerem chce użyć emulacji portu szeregowego, na USB. Bazując na artykule ze strony [url=http://mikrokontrolery.blogspot.com... uruchomiłem komunikację z komputerem. Wszystko jest ok. Połączenie...

    Mikrokontrolery AVR   21 Kwi 2016 11:38 Odpowiedzi: 7    Wyświetleń: 888
  • 1wire SEARCH ROM (0xF0) zwraca dwie jedynki - problem z odczytem

    Na oscylogramie widać podstawę czasu przypadającą na działkę więc wrzuciłem aby ktoś porównał to z tym jak ma być, więc dlaczego twierdzisz że nie jesteś w stanie odczytać zależności czasowych? Co mi da wrzucenie przez kogoś swojego oscylogramu z działającej komunikacji? Ano to że wówczas dokonam właśnie porównania z timingami które ja mam u siebie...

    Mikrokontrolery   27 Sie 2020 23:10 Odpowiedzi: 26    Wyświetleń: 1488
  • Atmega16 - FAST PWM, Timer 2 i IGBT - problem z częstotliwością i przyciskami

    Ad 1 Chciałbym poprzez tranzystory IGBT przełączać 230VAC Myślalem nad zastosowaniem takiego rozwiązania OCRx--->driver IGBT--->para tranzystorów. To w ogóle ma szanse się powieść przy silniku o mocy max 1,5A największy ?? Problem: Gdy przetwornik działa w trybie Free Running i wciśnięciu przycisku podłączonego pod PC4 w timerze 2 zmienia się...

    Mikrokontrolery Początkujący   05 Mar 2013 14:08 Odpowiedzi: 12    Wyświetleń: 2439
  • Atmega8: ISR(USART_RXC_vect) - LED gaśnie po przerwaniu, jak to naprawić?

    Początek zabawy, i bliski jestem stwierdzenia, że to nie dla mnie. A więc, albo ktoś podpowie, albo pogryzę tego procka. Problem jest następujący: Po przerwaniu, program zapala leda i wychodzi z pętli WHILE (zaczyna main()) czyli mój LED zgaszony. Lub bez przerwania, prog. wchodzi do petli WHILE opuszcza ją i zaczyna od main(). czyli na terminalu widzę...

    Mikrokontrolery AVR   28 Gru 2010 00:09 Odpowiedzi: 4    Wyświetleń: 3628
  • Termometr ds18b20 jak rozpoznać czy 85stC to temperatura czy bład

    Witam, Temat wałkowany już 100 raz, ale od paru dni próbuje i nie wiem jak to rozwiązać:/. Mam podłączonego DS18B20 do atmega8a, kwarc wewnętrzny 8MHz. Początkowo układ nie chciał w ogóle współpracować i zwracał standardowe 85 C. Po modyfikacji sterowania pullup zgodnie ze wskazówkami mirekk36 z http://www.elektroda.pl/rtvforum/topic14... układ...

    Mikrokontrolery   17 Sie 2012 19:52 Odpowiedzi: 11    Wyświetleń: 2364
  • Połączenie i programowanie matryc 8x8 z układami MAX7219 - wyświetlanie ramki 16x64 piksele

    co i jak wysyla, moze w przykladach cos bedzie, -> patrz załączony kod w pierwszym poście, co i jak. Zapewne masz na poczatku inicjalizacje matrycy, czyli ilosc wierszy i kolumn, tego nie widze. o tym również pisałem: Najważniejsze to wyłączyć dekodowanie, ustawić skanowanie na wszystkie cyfry. Nic więcej istotnego w inicjalizacji nie ma. Dodano...

    Programowanie   13 Paź 2021 00:45 Odpowiedzi: 4    Wyświetleń: 819
  • ATmega32/Atmel Studio 6 - Wysyłanie danych przez UART

    Witam, naskrobałem taki oto kod z wykorzystaniem operacji atomowych, semafory i wywaliłem z funkcji pomiarów z czujników delaye. Rozbiłem te funkcje na mniejsze, a czas oczekiwania na zakończenie konwersji odliczam timerem i wystawiam do main odpowiednią flagę pozwalającą na pobranie wartości. Funkcje dtostrf wrzuciłem w blok atomowy, dzięku czemu skończył...

    Mikrokontrolery   05 Gru 2012 11:24 Odpowiedzi: 13    Wyświetleń: 4377
  • LabVIEW, funkcja w C - wykonywanie równoległe wolniejsze od "po kolei"

    Napisałem w LabVIEW wywołanie funkcji napisanej w C. Jest to dość proste: na Block Diagram wybiera się Functions > Connectivity > Libraries & Executables > Call Library Function Node, podaje się nazwę pliku z biblioteką, definiuje się nazwę funkcji i parametry, i to działa. Spróbowałem napisać funkcję, która dodaje liczbę do zmiennej (w C instrukcja...

    Programowanie   26 Wrz 2020 08:40 Odpowiedzi: 10    Wyświetleń: 732
  • [c++] Jak prawidłowo zakończyć wątek w klasie DBConnector w C++?

    Witam, Próbuję napisać prostą klasę (DBConnector), która będzie odpowiedzialna za przesyłanie danych do bazy danych(mysql). Klasa tworzy osobny wątek w którym co jakiś czas odbywa się operacja `INSERT` zbuforowanych danych to bazy. Wszystko śmiga pięknie poza funkcją "disconnect". Funkcja ta jest wywoływana z innego wątku i ma za zadanie przerwać połączenie...

    Programowanie   10 Gru 2015 12:56 Odpowiedzi: 12    Wyświetleń: 972
  • Chińska Kamera IP wyjęta z prądu podczas Aktualizacji

    uszkodzona: 15A U-Boot 2013.10.0-AK_V3.1.00 (Jun 30 2021 - 14:56:45) ramsize: 08000000 DRAM: 128 MiB efuse_read:0x00000007 Block:... Chip:8MB Bus:1 Name:FM25Q64 should_load_env cdh:... line:564 load env_relocate total partitions: 8 In: serial Out: serial Err: serial Net:...

    Monitoring Wizyjny CCTV   21 Gru 2023 12:49 Odpowiedzi: 34    Wyświetleń: 4581