Wpisać magiczne "volatile" volatile int sekunda=0;
Gdzies juz chyba widziałem, jak napisałeś coś w stylu, że "ogólnie wiadomym jest, że bascomowe SPISLAVE nie konfiguruje tak jak potrzeba" . Ja o tym czytałem pierwszy raz... Mogę wiedzieć której wersji Bascom używasz jeśli nie najnowszej 2085? W SPI najważniejsze jest to, że to master taktuje slave`a. Dlatego nie bez powodu w komendzie konfiguracyjnej...
Możesz zwiększyć czas oczekiwania i wpisać wartość dla ciebie odpowiednią ale z kwarcem może być problem bo jak twoja atmega nie potrafi tak szybko pracować to nici. Na układzie w symbolu układu powinno być podane jaki jest maksymalny kwarc z jakim może pracować.
Po pierwsze - czy ustawiłeś prawidłowo fusebity, aby procesor pracował na zewnętrznym oscylatorze? Po drugie - w karcie katalogowej jest informacja, że rejestr UBRRH i UCSRR znajdują się pod tym samym adresem, więc instrukcją UCSRC|=_BV(UCSZ1)|_BV(UCSZ0&... wpisujesz tak naprawdę wartość do rejestru UBRRH! Aby wpisać ilość bitów danych...
...niestety nie znam asemblera. Nie musisz znać. Jak przeczytasz uważnie i zrozumiesz zasadę, to sam napiszesz procedurę obsługi przerwania w C. Dla częstotliwości PWM rzędu kilkunastu kiloherców i zegara CPU 8MHz przerwanie występuje co ponad 500 taktów, więc nawet procedura napisana w C nie będzie za długa (myślę, że nie powinna przekroczyć 100 taktów)....
Chcę napisac własny program z wykorzystaniem Timerów. Na początek proszę o wytłumaczenie dlaczego w poniższym programie: 1. wykorzystano podzial częstotliwości zegara (po preskalerze 256) 250/125 zamiast wykonac jedno dzialanie? 2. uzyto wartość początkową Timera0 = 250 przed Petlą do Loop End . O ile wyjaśnienie podane przez Tomq jest błędne(!) Load...
\ 1. Rozumiem, że ustawienie odpowiedniej częstotliwości da mi czas, który jest mi potrzebny? Tak, program z tego postu demonstruje rejestry i bity których odpowiednie ustawienie spowoduje daną częstotliwość przerwać timerów, a w konsekwencji odpowiednią częstotliwość wysyłania tekstu / migania diodą, jednak obecny ustawiony czas jest przykładowy, nawet...
https://obrazki.elektroda.pl/2650867800_... Dziś kolejna krótka prezentacja wnętrza starego sprzętu. Tym razem będzie to 32-calowy telewizor LCD LG mający premierę w 2007 roku, sprzęt jeszcze z podświetleniem świetlówkowym, ekran o rozdzielczości 1366 x 768 pikseli. Pokażę tu jego wnętrze i sprawdzę, czy coś ze środka może się przydać...
W kodzie umieść funkcję [syntax=c] ISR( ISR_BAD ) [/syntax] i sprawdź czy program nie skacze do niej.
U ciebie 99E4 i zapyla na 8MHz ;) Poszukaj sobie kalkulatorka do fusebitów i będzie łatwiej . Możesz też policzyć te wartości z dokumentacji atmegi 32 ze strony atmela wpisujesz hasło fusebit i masz . Pamiętaj tylko że zaprogramowany bit ma wartość zero i to często jest mylące w programatorach dlatego pewniej jest wpisać wartość liczbową .
Witaj mam pytanie jaką wartość trzeba wpisać żeby temperatura wskazywana była po przecinku
to inaczej - jak to wpisać żeby to niebyła pusta pętla tylko żeby program czekał poprostu pewną wartość czasu BASCOM
ehhh a nie lepiej jest użyć jednego licznika 8-bitowego ustawionego tak aby w ciągu sekundy np 32k razy przepełniał się - a w trakcie przepełnienia (przerwania) wpisać do odpowiedniego rejestru licznika kolejną wartość nowej próbki?
W dokumentacji niestety dla licznika 1 nie występuje preskaler 128. Występuje natomiast 256. Zakładając, że licznik pracuje w trybie CTC (WGM12 =1) i zakładając 8MHz źródło sygnału zegarowego (tak jak jest w komentarzu w kodzie) należy wpisać do OCR1A= 31249 oraz ustawić preskaler na 256 czyli CS12=1 A tak na przyszłość ...nota katalogowa. Tam wszystko...
Mam procesor ATMega 16, najnowszego bascoma w wersji demo i klawiaturę podłączoną do portu C. Niestety nie działa poprawnie funkcja GETKBD. Zwraca wartość 7 gdy nic nie jest wciśnięte. Pod pozostałymi portami działa ok. W ramach rozwiązania problemu zacząłem testować portc i okazuje się że nie mogę wpisać na niektóre wyprowadzenia "1" Ustawiam Portc...
Witam ponownie !!! Jeszcze jedna mała nie ścisłość: void USART_Init( unsigned int baud ) { UBRR1H = (unsigned char) (baud>>8); //ustawienie prędkości UBRR1L = (unsigned char) baud; UCSR1B = (1<<RXEN) | (1<<TXEN); //włączenie nadawania iodbierania UCSR1C = (1<<USBS) | (3<<UCSZ0); //format ramki: 8data, 2stop bit } Jest to...
Jest jednak jeszcze jeden mankament.Ale dotyczy kwestii elektronicznej. Otóż czasami jak wyślę polecenie odtwarzania jakiegoś pliku to w głośniku najpierw usłyszę trzask a potem odtwarzanie.Nie jest to wina programu ani odtwarzanych plików. Mogę odtwarzać 100x ten sam plik i trzaski pojawiają się losowo. W sumie to im większą przerwę czasową mam pomiędzy...
Zasadniczo macie rację, ale ja potrzebuję zapisać eeprom bit po bicie a nie bajcie i dlatego wygodniej jest mi wpisać zera i dopiero pracować na takim "wyczyszczonym" obszarze pamięci. druga kwestia, to fakt, iz w eepromie bedą w trakcie pracy zapisywane różne wartości, a przy restarcie muszę się tych danych pozbyć, to tylko kwestia przyjętej logiki...
wiem już chyba w czym rzecz, chyba tajmer1 musi zbyt dużo zliczyć impulsów aby nastąpiło pierwsze przerwanie od niego a on właśnie obsługuje wyświetlacz,muszę chyba wpisać wartość wstępną do niego przed pierwszym przerwaniem.... Dodano po 4 zmieniłem prescale tajmera 1 z 1024 na 1 i jest oki :-)
Serdecznie witam, Zlecę odpłatnie wykonanie prostego urządzenia. Urządzenie ma się składać z silnika krokowego, klawiatury numerycznej z zerem + przycisk OK, WSTECZ, TRYB, WYCZYŚĆ oraz wyświetlacza 3cyfrowego i jednocyfrowego. Ma to działać w następujący sposób: przyciskiem tryb zmieniam tryb pracy. Są 2 tryby pracy a) ustawienie jednostki kroku tzn...
Do programowania używam pony proga. Gdzie mogę dokładnie sprawdzić fusebits? Dodano po 13 Znalazłem znajduje się on w zakładce Configuration and security bits i w moim przypadku bit M103 nie jest zaznaczony czyli rozumiem że ma on wartość 1. Oznacza to że ten tryb zgodności jest w moim przypadku wyłączony. Jutro postaram się to dokładnie posprawdzać...
Zaleca sie uzywanie ISR() zamiast SIGNAL(). Makro SIGNAL() będzie w przyszłości usunięte, ISR() robi dokładnie to samo. W zasadzie jako argumentów tych makr powinno się używać SIG_OVERFLOW2 zamiast TIMER2_OVF_vect, ale to akurat nie powinno być przyczyną niedziałania, bo obie te konstrukcje znaczą dokładnie to samo. TIMSK =((1<<TOIE2));...
wymyśliłem sobie, że jak wartość wyświetlana spada poniżej 100, to ma nie być wyświetlana pierwsza zero (zamiast 099 ma być 99) jeśli wartość spadnie poniżej 10 mają nie być wyświetlane 2 pierwsze pozycje wyświetlacza (zamiast 009 ma być 9) Niby proste. Wystarczy na tą pozycje wpisać 10 i cyfra się wygasi. Kod jest taki: ISR(TIMER1_COMPA_vect)...
Witam , mam nadzieję iż nie zanudziłem bez reszty.. W zestawieniu z moimi "dokonaniami asm." kolega michalko12, jest najbliższy temu co ja kiedyś robiłem . Oto wersja asm z przełącznikiem kompilacji aby kompilować jako samodzielny plik - kto chce ->ten może :D ( ta wersja to 16-timerów, 16-nasto bitowych, każdy cztery tryby konfiguracji, oczywiście...
Witam Szanowne Grono Specjalistów Zdecydowałem się zamieścić w tym miejscu moje pytanie bo sam nie jestem pewny gdzie się zgłosić - proszę o wyrozumiałość. Chciałbym nauczyć się wykorzystywać mikroprocesory w swoich jakiś tam projektach. Zależy mi na nauce w asemblerze - w tym czuję się dobrze (bawiłem się tym w C-64). BASCOM odpada po zapoznaniu się...
Cześć. Prosze o pomoc w rozwiązaniu problemu, a mianowicie mam problem przy konfiguracji klawiatury. Nie moge ręcznie wpisać kodu np. 1234, tylko program sam dobiera mi kod ( caly czas podaje jedna liczbe"1", tak jak bym ja cały czas wpisywał) kod wtedy jest ustawiany na 1111, ale jeżeli zmienie wartość na "k=2" w miejscu zaznaczonym w kodzie to program...
Po pierwsze używaj znaczników SYNTAX dla łatwiejszego czytania składni. Druga sprawa, w twoim przykładowym programie źle ustawiony jest parametr F_CPU gdyż twoja atmega nie jest taktowana z 40MHz! Wpisz tam taka wartość w Hz jaka jest taktowana twoja Atmega. Podłączenie... Dioda przewodem do PC5 przy mikrokontrolerze. Przycisk przewodem do PB0 przy...
Witam W tym rejestrze tylko dwa bity dadzą się zmienić i przy okazji odpowiadają one za rozdzielczość więc wpisanie do rejestru wartości 63 dzisiętnie lub 3F hexadecymalnie załatwia sprawę. -- pozdrawiam
Na dole pierwszego pisze HIGH i LOW. W Mkvcalculatorze masz to samo tyle że u góry. Wpisz High i Low i wciśnij przycisk Ustaw. Wszystkie wartości się ustawią na podstawie tych dwóch wartości.
Analizowałeś plik .lss? Sprawdzałeś ilość cykli w symulatorze?: Wydaje mi się, że 20 cykli zegara to dużo, by zmienić wartość rejestru. W którym miejscu programu? Timer1OFF_dwupulsowy() zrobiłbym jako inline.
W trybie CTC wartość timera jest zerowana, gdy TCNTx jest równe OCRxA. Nie pojawia się tutaj sprawdzenie w relacji większy/równy. Tak więc jeśli w danym momencie OCRxA jest równe 100, TCNTx 98 i w tym momencie zostanie wpisane do OCRxA wartość 96 to nie zostanie spełniony warunek dla TOP, timer będzie się zwiększał aż do 65535 (długa przerwa) kiedy...
Witam, przetwornik ADC działa w ten sposób, że osiągnięcie napięcia AVref na wejściu ( zaniedbując błędy przetwarzania ) powoduje wpisanie maksymalnej wartości do rejestru ADCW czyli 0x3FF przy wyrównaniu wyniku do prawej (ADLAR=0) i wartość ta pozostaje stałą, nawet po dalszym zwiększaniu napięcia wejściowego przetwornika, więc nie da się w ten sposób...
A z jakiego terminalu korzystasz? Bo na obrazkach masz ustawienia portu tylko. Kiedy korzystasz z usartu nie musisz ustawiać kierunkowości portu. Po włączeniu RXEN i TXEN piny te automatycznie są wykorzystywane przez usart i procek sam nimi steruje (przynajmniej w usart0). A dlaczego nie korzystasz z usart0? Wykorzystujesz go juz? uint8_t uart_getchar(void)...
Jak przerwanie? To ma działać z automatu czy na przerwaniach? Bo jak na przerwaniach to musisz zerować w nim licznik, bo od ocr2b nie ma opcji ctc. Najlepiej zrób tak : ustaw licznik w tryb ctc i do ocr2a wpisz odpowiednią wartość skracającą cykl, do ocr2b wpisz dowolną wartość od 0 - ocr2a, ustaw bit COM2B0, włącz licznik z odpowiednim preskalerem....
Patrz wyżej - oblicz sobie odpowiednią wartość i ładuj do powyższych 3 rejestrów. Ale chodzi mi o to, że nie wyobrażam sobie jak ta Twoja pętla z 1szego posta wykona się 230400 razy, bo jak dla mnie to o jakieś 255 za mało wgzlędem tego co w rejestrach wpisałeś.
Hahahaha :D tak! W IDE sa wpisane takie dla małego projektu i małego procesora. Mając większy projekt i procesor trzeba je albo tam zmienić albo wpisać bezpośrednio w projekcie. Kompilator się nie pyta o nie bo ma wpisane te domyślne, ale one są za małe. Musisz wiedzieć jaki masz mikrokontroler i ile ma RAM`u. Na przykład ATmega 32 ma 2kB RAM`u (dwa...
Mylisz się :) Aby znaleźć plik to już trzeba trzeba trochę kodu (czyli wystarczy petitFatFs) :) Ale żeby już zmienić jego zawartość to już sporo zabawy :) Należy: 1. Wyliczyć wielkość danych które chcesz zapisać (pestka) 2. Zlokalizować plik w RootDirectry (trochę trudniej) 3. Wyciągnąć interesujące nas informacja o pliku z RootDirectry 3. Zmienić rozmiar...
Najpierw wylosuj jedną z tych sześciu zmiennych i przypisz jej 1. Następnie w losowaniu bierze udział pięć pozostałych, wylosuj z nich jedną i przypisz jej 2, i tak dalej. Ostatniej liczby nie ma co losować, bo zostanie tylko jedna, jej przypisz 6. Można też inaczej. W tablicy 6-cio elementowej wpisz wartości od 1 do 6. Wylosuj indeks tablicy, przepisz...
a no to ok skoro Verify było ok to już jesteśmy dalej ;) - ale coś cię trzeba ciągnąć za język - i po kilka razy zadawać pytania - czy może cię nie interesują już podpowiedzi w tym temacie? pytałem przecież czy aby napewno masz procesor ATmega48 a nie 89C2051? oraz pytałem czy przypadkiem nie piszesz programu mając zadeklarowany inny procek? Bo jaką...
1/ Zamieszane są te bity od szyny danych, w kodzie wcale nie umieszczasz bitów na swoje miejsca (w ZAPISZ_LCD bit źródłowy i docelowy są sygnalizowane tą samą stałą, więc w efekcie bajt leci na opak) 2/ Strasznie zagmatwany kod - wcięcia na różnych poziomach, zbędne (według mnie) odkładanie rejestrów na początku funkcji. Inicjalizację przecież można...
Próbowałem również wpisać odpowiednie wartości do UBRR, ale u mnie wyglądało to tak: UBRR0H = 0x07; UBRR0L = 0x01; Dla predkosci 9600 i kwarcu jak u Ciebie do rejestru UBRR0 trzeba wpisac wartość 72, więc dlaczego wpisujesz wartość 1793 ?? ( 0x07<<8 + 0x01) Niestety nic się nie poprawiło...
A nie lepiej generator RC? Dla mikrokontrolera generowanie sygnałów sinusoidalnych jest bardzo obciążające. Znajomy miał taki problem że mu ATmega nie nadążała więc zrobił coś takiego że wpisał wartości do tablicy a potem zamiast wyliczać to z niej ustawiał kolejne wartości.
Zatrzymanie timera - wystarczy do rejestru TCCR... wpisać wartość 0 :-) Dodano po 2 dokumentacja ATmega16. str. 114/115
To znaczy, że ja sam muszę zadbać o to, żeby dołożyć do przesyłanych danych bit startu i stopu? Mówiąc przyjmie miałem na myśli to czy da się to do niego wpisać (tak żeby poprawnie nadał), nie chodziło mi o odbiór. I jeszcze jedna sprawa: jak najlepiej sprawdzić wartość jednego bitu w rejestrze? Można go pobrać i wyświetlić jako int w postaci 0 lub...
Jeśli pracujesz na wewnętrznym RC część mikrokontrolerów wymaga wpisania odpowiedniej wartości kalibracji do osccal.
Jak w tytule, korzystając z funkcji DTMF out w Bascomie udało mi się wygenerować "jakiś" sygnał. .................. W moim programie nie ma żadnej instrukcji $crystal bo nie wiem czy powinna być. Podaję kod programu odpowiedzialny za wysyłanie DTMF: Jeżeli w programie /listingu nie ma podanego taktowania lub wybranego processora oraz wartości dla:...
W przedstawionym kawałku programu OCR1A nie jest ustawiony więc w czasie resetu przyjmuje wartość domyślną czyli zero. W takiej sytuacji na wyjściu PWM, w momencie "przekręcenia" licznika pojawiają się krótkie impulsy o długości trwania jednego tika zegara. To taki "ficzer" timerów AVR. Jeżeli pragniesz zobaczyć ładniejszy przebieg to do rejestru OCR1A...
No jak byś znał zasadę działania zwykłego wyświetlacza hd44780 to byłoby Ci łatwiej zrozumieć że z tym Twoim to wszystko jest niepotrzebne ahahahahaha. Normalny wyświetlacz ma piny RS,EN i D0, D1, D2 ..do D7. Jest też pin RW, ale użytkowo jest opcjonalny więc go pominę. Pin RS słuzy do wyboru czy przesyłane dane to komenda czy znaki. Pin EN służy do...
Po zapoznaniu się z datasheet Atmegi 8 (str.186-188 oraz rejestrów na str.309) troszkę mi się rozjaśniło. Oto poniższy kod który stworzyłem na podstawie powyższego. ....... Sprawdzę działanie w praktyce jutro. Gdyby było coś jeszcze w nim nie tak to proszę o reakcję :) \] O to właśnie chodziło! Dodam jeszcze: -zwróc uwagę na rejestr ADUMX. Trzy górne...
Kolego doklej do tego pliku: #define F_CPU xxul i zamiast xx wpisz wartość ustawionego wewnętrznego kwarcu
F_CPU=18432000. ?????? A niby skąd masz te częstotliwość . Wewn jest tylko 8MHZ. Myślisz że wystarczy tylko wpisać wartość bez podłączenia oscylatora ? zmień to na 8000000L
Masz najnowszą wersję 2080? Czasem gdzieś się czai jakiś błąd i wtedy warto sobie zrobić taki ekspresowy kodzik który najpierw konfiguruje licznik a potem od razu odczytaj rejestry i sobie wyświetl w postaci binarnej. Można wtedy sprawdzić z notą czy wszystko ustawione tak jak powinno. Nie wszystkie tryby licznika da się do końca skonfigurować Bascomowymi...
Witam, Nigdy nie miałem do czynienia z tym robotem, ale rozumiem że skoro w ADMUX wpisywane jest tylko wejście oraz zapis wartości od lewej to zakłada się ze Vref jest wyłączone. Spróbuj ustawić na sztywno wejście w ADMUX = 0 i tylko z niego tymczasem korzystaj czyli wpisz w ADMUX tylko 1 do ADLAR bez instrukcji if. // return 0-255 // int MiniBoard::analog(int...
Dla kwarcu 4MHz jest to prescaler 64 i początkowa wartość licznika: 193 Dla kwarcu 8MHz prescaler to: 64 i początkowa wartość licznika: 131 To pokazuje kalkulator. Chciałoby się zakrzyknąć : a nie mówiłem :-P Aby wpisać do Timer2 początkową wartość, to używamy poleceń: TCNT2=początkowa_wartosc Timer2= początkowa_wartosc Counter2=początkowa_wartosc...
;* ;***************************************... ;*PROCEDURY OBSŁUGI MAGISTRALI 1-Wire DLA MIKROKONTROLERA AVR ;***************************************... ;* ;*Nazwa pliku :AVR_1Wire.asm ;* ;*Przeznaczenie :dowolny AVR, za wyjątkiem AT90S1200 ;*Kwarc :4MHz ;* ;*******************************OPIS****...
tak - takimi programikami można sprawdzić, i wartość należy zawsze wpisać do rejestru przy starcie każdego programu. To jest rejestr w pamięci RAM a nie EEPROM. Nie jest to też Fusebit. Dodano po 2 ale wiesz co? ja bym na twoim miejscu sprawdził ten procek z kwarcem = 8MHz czy przypadkiem się nie okaże że jednak też nie działają wyższe prędkości. Może...
... Później wykorzystałem wyjście CompareA , skonfigurowałem charakter na toggle i pięknie sygnał generuje, nic nie przeszkadza sygnał jest ciągły, ale za jasną ch... nie mogę wpisać początkowej wartości i regulować częstotliwość... Świetny pomysł, tylko gorzej z wykonaniem :D Użyj jednego z dwóch trybów CTC timer1 i zmieniaj wartość końcową , czyli...
No więc widzę, że muszę zacząć grzebać w rejestrach, żeby najpierw wpisać wartość pinu, a potem przełączyć kierunek, bo w bascomie "configiem" chyba się nie da łatwo... No to nadszedł czas na krok do przodu --> C :)
A dlaczego chciałeś wpisać wartość 0x3C? Aby zmienić wewnętrzny oscylator z 1 na 4Mhz powinieneś wpisać wartość 0xE3 do LowFuse. Wpisując wartość 0x3C spowodowałeś: - zmanię na zewnętrzny Crystal/Rezonator Mediem Freq. - włączenie Brown-out z poziomem 4V Aby móc ponownie go zaprogramować musisz dołączyć zewnętrzny kwarc (1-3Mhz) i kondensatory (12-22pF)....
twoje rozumowanie wynika z uproszczonego analizowania działania rejestrów: dla ciebie jest to zwykła komórka, do której to co się wpisze będzie odczytane (w skrócie)... od tego stanu jednaj zacznie odbiegać np rejestr wymiany danych z usartu - do którego wpisuje się dane do transmisji, ale odczytuje dane z odbiornika... w praktyce rejestry i/o są bardziej...
Pociąganie realizowane jest poleceniem "Set" - ósma i dziewiąta linijka. To nie jest podciąganie(!) Jest to próba wpisania wartości do rejestru, który z natury jest przeznaczony tylko do odczytu. Nie ma możliwości zmiany stanu rejestru "PIN.x" z poziomu programu. Stan PIN.x możesz zmienić tylko fizycznie z zewnątrz poprzez podanie tam napięcia o odpowiednim...
Tak, Arduino Mega 2560 :) po wpisaniu Serial.println(analogRead(A0)); otrzymuję wartość 294 i zmienia się +/- 2 jednostki co kilka sekund, nie ważne jak pokręce rezystorem.
Czyli będzie to wyglądało przy deklaracji: ChannelMUX Nie tu mają byc wartosci jakie chcesz wpisać do rejestru ADMUX if(ConversionResults Nie. 3 to przypadkowa zbierzność. << 3 oznacza razy 8. taka przyjałem wartosć o filtra. Moze byc to dowolna liczba większa od 1. wzór wtedy bedzie = (ADCW * (liczba)) - wtedy odejmowanie ponizej powinno byc...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Witam Jeśli wykonasz kasowanie pamięci flasch i eeprom to dalej nie chce działać autodetekcja?? Może jest w pamięci wpisana jakaś bzdurna wartość i program juz sobie z tym nie radzi... Pozdrawiam
Proponuję abyś w menu SZUKAJ (u góry) wpisał: Generator sinusoidy atmega wyskoczą Ci 4 tematy gdzie znajdziesz gotowe rozwiązanie. A następnym razem zacznij od tego lub Google.
Mniej więcej co 2 tygodnie ktoś tu próbuje obsługiwać przycisk na przerwaniu portu i co dwa tygodnie próbujemy takiemu delikwentowi wybić ten nierozsądny pomysł z głowy. Przeszukaj archiwum. Przycisków NIE obsługuje się przy użyciu przerwań portu, a przy użyciu przerwania timera. Jak chodzi o mikrokontolery jestem początkujący. Tego typu obsługa była...
SIGNAL(SIG_OVERFLOW0){ straznik = 0; cli(); } #1 Skoro 'straznik' przyjmuje tylko wartości 0 lub 1, to po co 16-bitowy typ 'int'. Wystarczy w zupełności 'uint8_t'. Ta sama uwaga dotyczy również zmiennych 'i' oraz 'j' w pętli 'for'. #2 Jeżeli używasz zmiennej 'straznik' zarówno wewnątrz procedury obsługi przerwania i w programie...
Rezonatory kwarcowe? Nie pakuje. Tam jest układ oscylatora RC, który jest kalibrowany na etapie produkcji, poprzez wpisanie odpowiedniej wartości do rejestru kalibracyjnego. Do tego rejestru możesz też zapisywać z poziomu programu.
Jutro od rana będę dalej walczył w lokalizacji błędu, ale zastanawia mnie na teraz czy: 1. Rezystory pullup 10k mogą zbytnio spowalniać transmisje i powodować błąd? 2. Czy winą może być np. niewłaściwe filtrowanie zasilania? 3. Moja Atmega ustawiona jest na 1MHz, a zgodnie z datasheetem żeby korzystać z I2C muszę wpisać do TWBR jakaś wartość. Jest na...
timer2 w ciągu 10 minut późni się o jakieś 12 sekund, a timer0 zdaje się nie reagować na wartość początkową wpisaną do rejestru TCNT0 Z zegarem wewnętrznym 12/600 = 2% porównaj z DS. A timer 0 reaguje, tylko Ty nie dostrzegasz różnicy 131 cykli na 10 minut -) Tą wartość to jakby nie tylko raz trzeba było wpisać. Albert
Czy mógłby ktoś mi powiedzieć jak mają być ustawione te bity i uzupełnić state ="0" lub state ="1", gdzie 0 - bit zaprogramowany, 1 - bit niezaprogramowany: ... I po co kombinujesz jak przysłowiowy koń ... :?: ...Ja programuje mikroprocesory Burno o Matem, programator jaki posiadam to usbtiny. No to wypadałoby poznać trochę narzędzie z którego się...
Ja bym sprawdził jeszcze coś takiego. Przypisz zmiennej ch jakaś stała wartość i zobacz czy na wyświetlaczu zostanie wyświetlony poprawny znak odpowiadający tej wartości. Druga sprawa to zastanowił bym się nad parametrami transmisji chodzi mi o wartość UBRR. Jak widzę prędkość transmisji masz założoną na 19.2k, kwarc masz 11.0592 MHz i nie ustawiasz...
Skoro brak bezpośredniej funkcji , to nic nie stoi na przeszkodzie , by odpowiednie wartości wpisać do rejestrów mikroprocesora i mierzyć ... :) No ale to wymaga ruszenia d.... i zajrzenia do dokumentacji.
Zrobiłem to w taki sposób, aby prztestować: Do 1.Czytaj bajt z karty 2. Przypisz owy bajt do zmiennej BUFOR 3 BUFOR = BUFOR / 2 4. Wpisz wartość bajtową BUFOR do rejestru PWM Loop Ciszej jest, jednak bardzo jakość słaba...
tmf - właśnie czytałem że to nie jest "na stałe". Procka można odzyskać, ale danych nie. No mam rzeczywiście coś takiego jak Lock Fuse i dwa "czekboksy". Czy dobrze rozumiem, że jak zaznaczę read to zablokuje przed odczytem a jak write to przez zapisem? Ale podświetlają mi się, uaktywniają pola do wpisania wartości hex, czy to konieczne czy zostawić...
Witam jestem początkujący jeśli chodzi o programowanie i tu mam pytanie do forumowiczów odnośnie ustawienie fuse bit.Programuje za pomocą programatora avrdoper usb i programu avrdude.Wiem że uP jest ustawiony domyślne na wewnetrzny rezonator RC 1MHz ,a ja chce go ustawić na zewnetrzny rezonator kwarcowy 12MHz, w sieci znalazłem kalkulator za pomocą...
W trybie CTC nie musisz się martwić o ładowanie nowej wartości to timera, bo dzieje się to samoczynnie. Musisz jedynie na początku programu wpisać przy jakiej wartości timer będzie się resetował wpisując do rejestru OCR2 wyliczoną wartość. Przy 8 bitowym timerze proponuję ustawić preskaler na 1024 zaś do OCR2 wpisać 124 (124 czyli zliczanie do 125)....
Witam jestem tu nowy aczkolwiek zaawansowany w bascomie AVR Musisz ustawić prescaler i wpisać wartość counter0 lub timer0 żeby przerwanie przychodziło co określony czas. Osobiście się z ty nie zgadzam bo jeśli INT0 to nie timer tylko podanie standardowo zera na jedno z wejść w 8515 jest to PD2 lub INT1 PD3. Ja osobiście dałbym waita pod koniec przerwania...
Witam serdecznie! Mam wielki problem z bascomem i magistralą i²c. Otóż kiedyś, gdy miałem bascoma 1.11.7.7 magistrala i²c działała bez problemów, teraz mam Bascoma 1.11.9.5 i nie mogę się skomunikować z żadnym układem i²c. Zegar i pamięć eeprom w ogóle nie odpowiadają, testowałem na 2 płytkach (jednej własnej konstrukcji, druga BASCOM...
Dzień dobry, mam problem z uruchomieniem serwonapędu na ATmega8535, prosiłbym was o ustosunkowanie się do mojego kodu. Pisząc go posiłkowałem się stronami: #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <string.h> int main(void) { int p = 1500; //zmienna DDRA = 0x00; //przyciski PORTA...
Hej, Dzielnik zmieniłem i jest przed diodą. Dodanie kondensatora C6 za diodą powodowało, że przy rozłączeniu zasilania mega nic nie zapisywała i zliczała od zera. Podobnie jak wpisanie polecenia RISING. Odlutowałem C6 i zmieniłem polecenie na FALLING. Zamieniłem dzielnik tak jak był na początku a więc 100K i 18K tak aby comparator wyzwalał się przy...
Witam! Mam problem ze zmianą fusbitów tak, aby mikroprocesor atmega 16 pracował z kwarcem zewnętrznym 8MHz. Używam programatora PROGRAMATOR AVR ISP pod USB . W AVR studio ścieżka argumentów wygląda następująco: -p m16 -c usbasp –e -U flash:w:Ster_stefan.hex i -U hfuse:w:0xD9:m -U lfuse:w:0xee:m . Z kalkulatora zawartego na stronie http://www.engbedded.com/fusecalc/...
1) Tak, zmieniając taktowanie timera zmieniają się także liczby, które należy wpisać do jego rejestrów. 2) każdy timer ma kilka kanałów PWM i skojarzone z nimi rejestry. Konfigurujesz wyłącznie wartość określającą wypełnienie, konfigurację samego timera już masz. Co do tych 6 PWM - zauważ, że drugi timer, któym dysponujesz jest tylko 8-bitowy i w zależności...
Problem polega na tym, że odczytujesz wartość ADC z uC zamiast z DS18xxx. Brakuje ci obsługi DS18B20. Poniżej fragment kodu działającego u mnie. [syntax=vbnet] Config 1wire = Portb.0 '0,1,2 NOP 3,4,5,6,7 works good ON MY Equipment Do 1wreset 'reset 1wwrite &HCC 'jedna kostka, więc wykorzystujemy rozkaz SKIP ROM 1wwrite &H44 'dokonaj konwersji Waitms...
Witam wszystkich ;) Czy ktoś może mi udzielić jakiejś wskazówki jak w procesorze Atmega2560 wpisać do rejestru TIMSK0 wartość 0x01. Chcę zrobić układ w którym po przepełnieniu Timera występuje przerwanie. I wszystko działa dobrze tylko muszę ręcznie (poprzez kliknięcie myszką) ustawiać ten rejestr. Próbowałem już wpisywać do niego wartość poleceniami...
Hmmm - dziękuję bardzo. A jeśli mogę spytać jak by to wyglądało w moim przykładzie ? Coś rozumiem - wiem że dzwony biją ale nie wiem gdzie - przepraszam. Chodzi o same deklaracje Timerów - i gdzie mam wpisać wartość 6 ewętalnie jak inaczej to zadeklarować.
Mam problem z wpisaniem "0" do rejestru TCCR1B (CS10,CS11) Programowo ustawiam te bity na 1. TCCR1B |= _BV(CS11) | _BV(CS10); Lecz nie mogę ich ustawić na 0. TCCR1B &= ~(_BV(CS11)) | ~(_BV(CS10)); Czy są jakieś przypadki, kiedy nie dają się przestawić ? Wkładam 3go uC i to samo !
Witam, przesyłam wartość zmiennej z jednego uc do drugiego po rs232. Wykorzystuje printf("%u", zmienna); jeśli do "zmiennej" wpisze wartość np. 7 do drugi uc wyświetla mi nie 7 a 55 co odpowiada cyfrze siedem w kodzie ASCII. Mo je pytanie, jak wysłać wartość "zmiennej" jako liczba a nie kod ASCII. Dodam , że wysyłając z terminala 7 jako kod ASCII na...
No sprawdziłem już i nic ten drugi port nie pomógł. Natomiast trafiłem na coś dziwnego podczas testowania programu w AVR studio, mianowicie w przerwaniu od timera do zmiennej wpisuje 1 po powrocie do programu głównego gdy testuje tą zmienną czy jest różna od 0 okazuje się że nie jest gdy najadę kursorem na tą zmienną pisze ze ma wartości 1, próbowałem...
Robisz sobie ten Shift i w zależności od pozycji modyfikujesz odpowiedni bajt adresu. Po każdej modyfikacji wyświetlasz aktualną wartość. Chyba jest w bascomie instrukcja warunkowa "if"? Dodano po 15 tutaj masz algorytm w pseudo-C, powinien być w miarę zrozumiały... musisz zapętlić to wszystko tak, aby było sprawdzane po każdym naciśnięciu klawisza,...
bezpośrednio z bascoma się nieda. trzeba by wpisać odpowiednią wartość do rejestru sterującego timerem ale niepamiętam dokładnie jak to sięrobi, trzeba by zajżec do noty katalogowej tam wszystko dokładnie opisane. ale mozna zrobić inna sztuczkę $regfile = "m8def.dat" Config Pinb.1 = Output $crystal = 1000000 Config Timer1 = Timer , Prescale...
kod: Config Adc = Single , Prescaler = Auto , Reference = Off dalej w kodzie: U = Getadc(0) dla deklaracji Reference = AVcc i podpięciu do napięcia wyj. ukł. 7805 nogi Vref układ pracuje prawidłowo ale potrzebuję zmniejszyć Vref i nie wykorzystywać Internal Reference (ok. 2,56V) Przy Reference= Off i TL431 pomiary wskazują wartość ok. 3 krotnie zawyżoną....
ponawiam prośbę o rozwiązanie problemu z regulacją obrotów dmuchawy. Napisz proszę czy jest szansa że się tym zajmiesz? Zastanawiałem się czy robić tą przeróbkę programu. Problemem w zasadzie nie poprawki kodu kodu (chociaż z tym już jest nieco więcej roboty), a użytkownik... Otóż nie wystarczy wpisać w tabelkę malejące lub zwiększające się wartości...
Witam, W jaki sposób zapisać w bascomie zmienną typu long (np.41819798) w zewnętrznej pamięci 24c02 Myślałem żeby rozbić tę liczbę na wartości 41 81 97 i 98 i wpisać te liczby w komórki 1 do 4 - tylko jak to zrobić ?
No i nie wiem o co chodzi. Pod układ podłączyłem inne zasilanie, pod podświetlenie inne (mają wspólną masę) i dalej to samo. Jak wpisze do OCR2 wartości od 1 do 5 (małe podświetlenie) to LCD jeszcze chodzi i wyświetla zawartość. Jak przekroczę wartość 5 (większe wypełnienie pwm - jasność) to lcd się czyści. Nie rozumiem.
Pewnie Atmel złą wartość wpisał co do liczby SPI, skoro nawet w opisie atmegi 88 jest też tak podane: http://www.atmel.com/devices/ATMEGA88.as...
Witam ponownie, Układ sprawdzałem z kilkoma procesorkami. Jednak efekt zawsze ten sam. Procesory wydają się sprawne, ponieważ bez problemu mogę czytać i zmieniać fusebity za pomocą programatora. Ścieżki, połączenia, luty sprawdzałem chyba milion razy. Choć prawdopodobnie tu jest gdzieś przyczyna problemu. Jakie linie,ewentualnie zwarcia mogą mi się...
Chodzi mi konkretnie : do zmiennej jest wpisana wartość od 0 do 255 odczytuję tą wartość następnie za pomocą portu np portd.0 wpisuje do rejestru przesuwnego i na wyjściu tego portu przesuwnego otrzymuję wartość zmiennej wystawionej binarnie czyli 01010101 do tego celu zmienną muszę zamienić na bin potem potem jednym wyjściem portu zapisać to do rejestru...
...natomiast drugie występuje naprzemiennie z przerwaniem pierwszym (z niewielkim przesunięciem czasowym) bez względu na to jaką wartość wpiszę do OCR1B Tak niestety będzie. Wartość OCR1B określa stan licznika, przy którym następuje przerwanie, a nie z jaką częstotliwością. O tym, z jaką częstotliwością jest wywoływane przerwanie decyduje wartość,...
wpisać wartość napięcia wpisać wartość bascom wpisać wartość napiąć
wymiana drążka zmiany biegów zasilacz monitor neovo przedni wycieraczka
Chłodnica klimatyzacji (skraplacz) – budowa, typowe usterki, serwis, R-1234yf, micro-channel Pompy ciepła Panasonic Aquarea – High Performance, T-CAP, HT, L-Generation, dobór i parametry