Było 10000000000000000000 razy: volatile int secPP; volatile int secDP;
volatile unsigned char UART0recv, UARTBuffer[BUFF_SIZE], UARTCount, UARTGet, rx_counter; A czy przypadkiem tylko pierwsza zmienna będzie volatile przy takiej deklaracji?
volatile char * rxbufptrwrite; volatile char * rxbufptrread; To nie wskaźniki są volatile tylko obszar pamięci na który wskazują. Spróbuj: volatile char * volatile rxbufptrwrite; volatile char * volatile rxbufptrread; ale w tym przykładzie powinno też Ci wystarczyć char * volatile rxbufptrwrite; char * volatile rxbufptrread;
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...
Efekt jest dokładnie taki jak kod - o to mogę się założyć. Twój kod ma po prostu błędy i tyle, więc czego oczekujesz? Poza faktem braku volatile "tu i tam", to zerowanie tej flagi w przerwaniu masz, ale gdzie masz jej ustawianie? Nigdzie. 4\/3!!
Przkonwertować się nie da :) Możesz: 1. używać adresu tej zmiennej volatile i robić derefencję [syntax=c] volatile uint8_t x; char *ptr = &x;[/syntax] 2. Przypisac wartosc tego do takiej tablicy [syntax=c]volatile uint8_t x; char c[ILOSC_ELEMENTOW]; /* ....*/ c[element] = x;[/syntax] 3. Jezeli chcesz mieć to w postaci stringa [syntax=c]utoa(x, c, 10);...
No, z tą szybkością to akurat nieprawda - inkrementacja zmiennej o dowolnej długości na CM zajmuje 3..4 instrukcje, to przy 50 MHz wciąż będzie na ogół szybciej niż jedna instrukcja na 8.bitowcu... ;)
Witam. Zmontowałem przed chwilą i sprawdzone. Zostaje tylko pozbycie się drgań styków klawisza. [syntax=c]#define F_CPU 16000000UL // Atmega644 #include <avr/io.h> /*biblioteka avr*/ #include <string.h> /*biblioteka napisy*/ #include <stdio.h> /*biblioteka podstawowa C*/ #include <stdlib.h> /*biblioteka C*/ #include <stdbool.h>...
Tak jest to dość istotne... Do pomiaru używany jest 16-bit'owy timer 1 (atmega162 ma dwa ale po takim ogólnym rzucie okiem na pdf wygląda na to, że nie ma różnic w konfiguracji)... Co przy częstotliwości taktowania 8MHz prescalerze 8 daje max ~65,5ms przy dokładności do 1us... Poniżej fragment kodu który mierzy czas trwania stanu wysokiego... ... volatile...
Odpowiednie typedefy są w nagłówku stdint.h Co do podziału pomiędzy przerwanie a program główny to pewnie zapomniałeś modyfikatora volatile przy deklaracji zmiennych, które są dzielone pomiędzy przerwaniem a main(). Co do "tablicy czujników": struct czujnik { uint8_t adres; /* do wyboru czujnika na szynie */ uint8_t ileProbek; uint16_t probki[ROZMIAR];...
https://obrazki.elektroda.pl/9337556500_... Pewna wyjątkowa osoba zasługiwała na równie wyjątkowy prezent, a że nie jestem fanem kupowania niespodzianek, postanowiłem "zrobić" coś własnym rękami. 1. Wstęp, motywacja 2. Zarys konstrukcji 3. Płytka z diodami - projekt (łączenie diod) 4. Płytka z diodami - projekt (zatrzaski) 5. Eagle...
Interfejs CobraSPI wstępnie uruchomiony. Wysyła znaki oraz odbiera swoją transmisję. https://obrazki.elektroda.pl/4256100500_... Filmik. Na ekranie są dwa znaki. Pierwszy od lewej to znak wysłany, drugi to znak odebrany. W środku filmiku następuje rozsynchronizowanie nadany/odebrany ponieważ na chwilę została odłączona zwora między...
https://obrazki.elektroda.pl/7417895700_... Motywacja Jeden ze znajomych poprosił mnie, aby taki śmieszny pad na USB (kształtem przypominający dżojstik od konsoli NES) https://obrazki.elektroda.pl/5837949700_... https://obrazki.elektroda.pl/8178021400_... przerobić tak, aby dało się go podpiąć właśnie...
http://obrazki.elektroda.pl/9209500600_1... O tym, że większość padów do PEGASUSa często ulega uszkodzeniu, nie trzeba nikogo informować. I nie chodzi tu o uszkodzenia kabla czy też wtyczki, ale układu scalonego będącego w padzie. Zwykle uszkodzenie objawia się: * całkowitym brakiem reakcji na wciśnięcia klawiszy, * niedziałaniem niektórych...
http://obrazki.elektroda.pl/3499461100_1... Jest to bardzo specyficzna konstrukcja i prawie na pewno nikomu oprócz mnie nie przyda się w tej konkretnej postaci jaką tu opisuję, ale zawsze pozostają walory edukacyjne, nauczenie się jak coś zrobić albo jak czegoś w żadnym wypadku nie robić :D Urządzenie jest protezą dzięki której omijam...
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
Witam ponownie, Poszedłem o krok dalej i moim planem jest podłączenie każdego z czterech wtryskiwaczy do osobnego pinu Arduino Uno/Nano z Atmega 328p. Pozwoliło mi to na skonstruowanie programu aby sterować każdym wtryskiwaczem z osobna z tą samą częstotliwością i wypełnieniem, ale sygnał do ich wysterowania jest przesunięty około 90° (problem z rozdzielczością...
Witam. Chcę przedstawić szopkę Bożonarodzeniową. http://obrazki.elektroda.pl/9749389200_1... Całość wykonana własnoręcznie z pomocą kochanej żonki. Opiszę co i jak. Szopka ma ruchomy żłobek, dwie pochodnie i ognisko, na filmikach wszystko widać. Opiszę konstrukcję, do sterowania wszystkim użyłem Atmegi8. Trzy sprzętowe kanały PWM posłużyły...
OK. Wszystko rozumiem. Nie wiedziałem o tym makro, również o innych które namierzyłem. Muszę popróbować pisząc jakiś kod. ( zainteresowanie moje wynikało z tego. że zastanawiałem się, o co chodzi z podwójnymi podkreślnikami "__"w plikach *.h.) Ale mniemam że, tyczy to bardziej kompilatora. To nie moja "liga". Daje spokój. Narazie muszę dokończyć ten...
http://obrazki.elektroda.pl/5959558100_1... Witam :) Razem z kolegą chcielibyśmy się pochwalić naszą maszyną :) Jest to ramie robota oparte na serwomechanizmach modelarskich. Ja zająłem się sterowaniem i elektroniką, a kolega robił projekt 3D w SketchUp i konstrukcje http://obrazki.elektroda.pl/9008440700_1... Początkowo...
(at)margas60 masz w kodzie definicje klawiszy : (dodałem guzior na płytce do testów sie nada) #define nucleoButton PC13 // Definicje pinów klawiatury #define key_1 PB0 #define key_2 PB1 #define key_3 PB2 #define key_4 PB3 #define key_5 PB4 #define key_6 PB5 #define key_7 PB6 #define key_8 PB7 chce uporządkować to i na naciśnięcie przycisku przypisać...
http://obrazki.elektroda.pl/4926270100_1... Diagnozer joysticków (np. do Pegasusa) na Atmega 8 Projekt Przyszedł wreszcie czas naprawić posiadane przeze mnie joysticki do Pegasusa. Zwykle uszkodzeniu (urwaniu) uległ kabel lub taki niesprawdzony/niesprawny joystick został zakupiony bez znajomości jego przeszłości. Jeśli kable się urwały,...
Może i działa, ale parę bzdur masz w tym kodzie. volatile w deklaracji argumentu funkcji jest bez sensu. Nikt tego argumentu nie ma szans zmienić. ATmega pracuje z zegarem max. 20 MHz, czyli okres 50 ns. Co ma niby robić ten delay ze ZMIENNOPOZYCYJNYM argumentem? Wykonanie jednej instrukcji przez ATmegę zajmie więcej czasu niż ma wynosić to opóźnienie....
Witam Skompilowałem wsad na którym można uruchomić to urządzenie napisany na kodzie z int DS_TEMP = 5; // DS18B20 Temperature pin int AC_LOAD = 3; // PD3 Output to Triac pin code from https://alfadex.com/2014/02/dimming-... int PC817_DET = 2; // PD2 INT0 interrupt pin connected to cross zero detect circuit volatile byte state...
tak dokładnie jako uint_16_t czyli następująco: volatile uint16_t zmienna = 0; Zastanawiam się czy dobrze mam fusy ustawione - bo nic innego do głowy mi juz nie przychodzi.
Wciśnięcie powoduje zwarcie do masy. Kolejne pytanie: Utworzyłem sobie 12 zmiennych typu volatile uint8_t Chce teraz stworzyć tablice 12 elementową, do której przypisze te zmienne i będę je sobie wybierał pętlą w programie. Niestety przy takiej inicjalizacji; volatile uint8_t tablica[11]={pwm1,pwm2,pwm3,pwm4,pwm5,pw...
Raczej nie wydłuży obsługi przerwania,a w przypadku uC wydajniejszych od ATmega wręcz ją skróci, bo modyfikacje zmiennej bez atrybutu volatile zajmują zwykle mniej czasu, niż modyfikacje stanu portu. Być może w AVR jest tak samo - to zależy i od sprzętu i do kompilatora. Po prostu te operacje, które wykonujesz na porcie, należy wykonywać na zmiennej...
A weź to wgraj do Nano i podłącz diode nadawczą do pinu 11. Zobacz czy teraz będzie działać. [syntax=c]#define PWM_PIN 11 volatile bool pwm_on, state = false; void setup(){ pinMode(PWM_PIN, OUTPUT); digitalWrite(PWM_PIN, LOW); noInterrupts(); TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; OCR1A = 221; //36kHz przy kwarcu 16MHz TCCR1B |= (1 << WGM12); TCCR1B...
Witam ponownie, próbowałem ogarnąć na początek funkcję eeprom_write_block. Oto fragment kodu: [syntax=c] typedef struct { // tu są chary, inty, tablice } TEngine; // zmienna w RAM volatile TEngine Engine; // Kopia będzie w EEPROM TEngine EEMEM eeEngine; // i gdzieś w kodzie dalej eeprom_write_block( &Engine, &eeEngine, sizeof(Engine) ); [/syntax] Przy...
Witam, Mam ten sam problem co kolega Beer Bear. Na zdjeciu otrzymuje to samo zaklocenie. Uzywam 2 pamieci rownoleglych po 64kB + zatrzask 573 . Caloscia steruje ATMEGA 64 16MHz. Wyeliminowalem częśc sprzętową, ponieważ sprawdziłem wszystkie połączenia na płytce kilka razy i nie znalazłem żadnego blędu. Wiec pomyślalem sobie ze wina moze tkwic w kodzie...
Mam podobny problem z tą właśnie Atmega i programowym PWMem. Korzystam z CTC: [syntax=c] volatile uint8_t pwm1; DDRD=0xFF; //port D jako wyjscie TCCR2A |= (1<<WGM21); //CTC OCR2A = 200; ASSR |= (0<<AS2); TIMSK2 |= (0<<OCIE2A); [/syntax] Przerwanie: [syntax=c] ISR(TIMER2_OVF_vect) { static uint8_t cnt; if(cnt>=pwm1) PORTD |= (1<<PD2);...
Witam. Od paru godzin męczę się z niedziałającym USARTem na atmedze32. Na atmedze88 wszystko śmiga jak ma więc przejściówka USB<->RS232 jest ok. Brak zimnych lutów na płytce. Kwarc zewnętrzny (ustawiony jako EXTHIFXTALRES_258CK_4MS - przy czym nie wiem czy tak ma być dla kwarcu 16MHz). Kod zamieszczam poniżej: [syntax=c] /* * softPWM.c * * Created:...
witam, próbuję osbłużyć akcelerometr ADXL345 po i2c, ale komunikacja zawiesza się po pierwszej komendzie i w ogóle program nie wchodzi do pętli while(1). jak zakomentuje linijkę: i2cTransmit(ADXL345, POWER_CTL, 0) w mainie; to ATmega wysyła po USARCIE dane bez problemu, w przeciwnym razie zawiesza się. o to listing programu: ATmega168 + 20 MHz, na samym...
Zmieniłem to tak: Dodano po 6 I Atmega działa na 16MHZ
Chciałbym Ci zaproponować trochę bardziej eleganckie rozwiązanie - bez delaya w przerwaniu i z sensownym debouncingiem: [syntax=c]#include <stdio.h> //dodajemy biblioteki, które umo¿liwiaj¹ korzystanie z procedur #include <math.h> #include <avr/io.h> #include <util/delay.h> #include "LCD.h" #include <avr/interrupt.h>...
Witam. Próbuję przesłać i odebrać znak pomiędzy atmega128 a putty. ATmega taktowana kwarcem 14.7456MHz. Korzystam z przejściówki USB<->RS232 (z atmega32 działa). RXD/TXD skrosowane. KOD: uart.c : [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include "uart.h" volatile char c_in; // odebrany znak...
Niemniej jednak porady o BASCOMie również mi sie niezbyt podobają <: 4\/3!! A w zasadzie dlaczego? Język jak język-można wyrazić co się chce. Kompilatory bywają dobre lub gorsze. A te języki są "wysokiego poziomu abstrakcji". W C to co jest najlepsze to wskaźniki. Od razu mi się spodobały i oczywiste do zrozumienia. Bo to jest to co jest w procesorze....
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
Kurdę no przerwanie jest wywoływane co 310us a to jest bardzoooo wiele cykli zegara na to by mogła się wykonać cała pętla while, cały czas nie rozumiem czemu na atmega 16 działa a na atmega128 nie chce działać :/ sprawdzałem bity ustawiające timer i przerwanie, są one takie same dla mega 16 i 128 więc nie wiem w czym jest problem :( Ten program działa...
piotrwzk - wlasnie udalo mi sie uruchomic rf12.... powiedz w jakim jezyku piszesz ... Ja uruchomilem rfm na atmedze 8 z wewnetrznym oscylatorem 8mhz zasilanie to 3,3V .. Postaram sie pomoc ...a no i zamiescic jakis ludzki opis :) ... powiem ze nie udalo mi sie uruchomic tych modolow w Bascomie - czasem cos dzialalo , czasem nie ,,, nie wiem wydaje mi...
Treść linku - Znam i rozumiem. uC to ATmega 16. Jeżeli możesz, wytłumacz mi : cytat od "tmf"" "#define PIN(x) (*(&x - 2)) To jest błędne. Powinno być volatile, ....." Co miał na myśli, jak z tego zrobić volatile. Czy chodziło Mu o to: unsigned char volatile zmienna; zmienna=PINA; lub zmienna=PIN(PORTA); a dalej, już w kodzie: }while(zmienna...
Witam, mam problem z uruchomieniem programu do zliczania impulsów na T1 przez 1 sekundę. Wyświetla mi ciągle zero. Co źle ustawiłem z Timerami ?? Atmega 32 [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <hd44780.h> volatile unsigned char licznik = 0; //liczba...
volatile pomogło dzięki Dodano po 11 Wprawdzie dzielisz jeszcze przez 630 czyli wynikałoby zapisywanie co kilka sekund ale cały czas pod te same komórki pamięci - też masakra. No ale chce nadpisywać wcześniejsze nieaktualne już dane co w tym złego? Toż z powodzeniem możesz to zapisywać do pamięci RAM Za dużo z atmega nie miałem do czynienia jak to zrobić?
Witajcie Tak jak w temacie. Walczę z komunikacją z komputerem przez RS-232. Port COM sprawny, jak zewrę TX i RX dostaję na wejście to co wysyłam. Bezsilny zacząłem ładować przykładowe, niby działające kody w C z UARTem ale nic z tego... Atmega nie odpowiada. Czasem coś wyrzuci ale to niezgodne z tym co powinno. Dodam że wysyłając komendy by np zapalił...
A może coś takiego [syntax=c] typedef struct{ u08 b0:1; u08 b1:1; u08 b2:1; u08 b3:1; u08 b4:1; u08 b5:1; u08 b6:1; u08 b7:1; } volatile IO; IO * const pora=(IO*)&PORTA; #define PORTA0 pora->b0 #define PORTA1 pora->b1 ... [/syntax]
Witam. Mam problem ze startem pamięci at45db081d. Poniżej schemat. http://obrazki.elektroda.pl/1957945200_1... Właściwie jest taki sam jak w znanym MMnet01 propoxa. Po podaniu zasilania na płytkę atmega odczytuje cały czas FF dopiero chwilowe zwarcie wspólnego połączenia linii RST,WP,VCC do masy powoduje prawidłowy odczyt statusu z pamięci....
Cześć, Mam problem z kodem na Atmega32u4. Mam dwie PCB z Atmega 32u4 - w jednej z nich podłączony jest silnik DC poprzez driver do pinu PWM. W drugiej jest tylko nadajnik. Używam NRF24l01, do którego zakupiłem biblioteki od firmy Atnel. Wydaje mi się, że musiałem popełnić gdzieś błąd w kodzie, ponieważ nie wszystkie, a nawet mniejszość pakietów dociera...
Pomogło dodanie volatile w strukturze. Dzięki, teraz wszystko działa jak należy. [syntax=c]struct GLOBAL_FLAGS //brief Flags for status information { //! True when PID control loop should run one time volatile uint8_t pidTimer:1; volatile uint8_t dummy:7; } gFlags = {0, 0};[/syntax] Zastanawiam się tylko dlaczego nie było to zaimplementowane w kodzie...
...proszę o sprawdzenie i korektę błędów z komentarzem... //--------------------------------------... // >>>>>>>>>>... V O L T O M I E R Z <<<<<<<<<<... //--------------------------------------... //##################...
Czy z przerwania mogę zwrócić daną do głównego programu (jako dana globalna) ?? Tutaj znajdziesz odpowiedź: http://mikrokontrolery.blogspot.com/2011...
volatile atmega atmega volatile zmienna atmega volatile funkcja
pęcherz powietrza skaner sterownik skanuje czarno
sterownik kolektorów vaillant cyrkulacja
Grzałka górna piekarnika Bosch Electrolux opada – naprawa mocowań, wymiana uchwytów Xerox WorkCentre 6605 – komputer widzi drukarkę, ale nie widzi skanera po instalacji sterowników