Ostatni raz powtarzam: #define STEP_OFFTCCR1B &= ~(_BV(CS10)) | ~(_BV(CS11)); <--- to jest źle, bardzo źle i niczego nie zeruje Zamień na to: #define STEP_OFF TCCR1B &= ~(_BV(CS10) | _BV(CS11)); <--- to będzie działać, to zeruje bity. Na więcej postów nie odpowiadam bo czuję tutaj stratę czasu.
Jesli chcesz wykorzystac sprzetowe I2C (TWI) w ATmega8 to wszystko ustawiasz za pomoca odpowiednich rejestrow. Jesli ATmega bedzie pracowala w jako SLAVE to za pomoca odpowiedniego rejestru ustawiasz jej adres. Poczytaj w doumentacji od uC.
PWM ustawiasz na przykład w tryb Fast PWM (patrz tab. 17-8): Mode 3 ustawiając: - bity WGM20 i WGM21, - preskaler bitami CS2x - dla wyjścia OC2A ustawiasz: -- pin jako wyjście rejestrem DDRx -- z tabelki "Table 17-3. Compare Output Mode, Fast PWM Mode " wybierasz tryb bez negacji sygnału ustawiając bit COM2A1 dzięki czemu będziesz miał sygnał w postaci...
Jeżeli dobrze patrzę w DS, to tryb CTC jest ustawiany bitem WGM02=1 (WGM00=0 i WGM01=0, WGM03=0) w rejestrze TCCR0B a nie WGM01=1 w rejestrze TCCR0A.
Jak ustawiać preskalery według tabelki z #27 podanej przez excray .Jak wygląda preskaler 32 i 128 jak to się ustawia. W internecie jest taki preskaler , TCCR1B |= (1<<CS12)|(1<<CS10); // preskaler = 1024 Jak czytałem preskalera 32 i 128 nie obsłuży Attiny 2313 i Atmega 8. Co obsłuży wszystkie preskalery podane w tej tabelce. Bo patrzysz...
Rejestr EIFR to rejestr FLAGI przerwania, która jest automatycznie zerowana po zakończeniu przerwania. Badanie jej w przerwaniu musi dac wynik pozytywny. Poza tym masz w tym kodzie błąd: reset eifr.0 if eift.0 = 1 then set led chyba powinno być: if eifr.0 = 1 then set led Napisz jak ustawiasz rejestr EICRA Na końcu przerwania zbadaj If EIMSK.0=1 then...
Witam Czy można w bascomie ustawiać rejestry odpowiedzialne np za to, czy procek (ATmega) korzysta z wewnętrznego czy zewnętrznego oscylatora kwarcowego, np w ATmega8 ustawia się to za pomocą CKSEL0...3 i czy da się to w bascomie ustawiać? Dzięki za odpowiedź i pozdrawiam.
Zobacz jak dziala kod na jakims debuggerze - masz JTAG? Albo w AVR Studio (nie wiem czy Bascom ma odpowiednik). Sprawdz czy prawidlowo sa ustawiane rejestry odpowiedzialne za wspolprace z XRAM. Moze to jakis blad Bascoma? Swoja droga przy tak duzym procesorze chyba juz warto przejsc na profesjonalne narzedzia? :)
No a w jakiej nocie kolega doczytał że preskaler dla m644 ustawia się w rejestrze TCCR1C ? ;) proszę to sobie sprawdzić.
Dowiedziałem się, że to tych rejestrów trzeba dostać się przy pomocy funkcji LDS/STS... Jak piszesz w C nie musisz się o takie rzeczy martwić. To zadanie kompilatora dobrać odpowiednią instrukcję. Przeszukałem forum i google ale są tylko przykłady dla assemblera, nic dla C. Na pewno są też dla C, ale podam jeszcze raz: // kasowanie bitu 5 (bit...
A skąd wiadomo, że działa akurat na 8kHz? A widzisz sie pomyliłem bo Atmega8A myślałem że on działa na 8MHz a standard to 16MHz wiec w rejestrze (1 << CS10) Timer ustawia 1:1 wiec sygnał może być 16kHZ jak atmega ma 16MHz..
No to po kolei. W ATtiny26 w masz schemat przetwornika ADC na str.97 i tabelkę na str.104. Na górze tabelki masz które wejścia ustawiasz jako positive a które jako nagative. No i Gain- wzmocnienie może być 1 albo 20. No i dalej-ATMega8, 88 nie ma sprzętowego pomiaru różnicowego. ATMega16- ma, ale nie gwarantują tego w obudowie DIP- tylko w TQFP. No...
ustawianie stanów logicznych na pinie odbywa się w przypadku 1-wire nieco inaczej niż pokazałeś. Ty ustawiasz kierunek i wymuszasz stan, a to troche nie tak. Ustalać powinieneś jedynie kierunek transmisji. Domyślnie w rejestrze PORTx są same zera, więc nie musisz się nim w ogóle przejmować. Dla np resetu powinno być tak: ustawiasz port jako wyjście,...
Tak, możesz użyć rejestru PINx do tego celu. Pamiętać tylko musisz, że ze względu na obecność synchronizatora sygnał odczytywany z PINx jest przesunięty o jeden cykl zegara w stosunku do tego co na tym pinie jest, ale w więszkości przypadków jest to bez znaczenia. Co do ustawiania kierunku pinów to dotyczy to tylko pinu SS z interfejsu SPI, pozostałe...
Kombinowałem na różne sposoby i nadal nie rozumiem na jakiej zasadzie odbywa się sterowanie tymi układami z poziomu programu. Samą tabelę z datasheet zrozumiałem ale nie widzę co trzeba zmieniać w programie, by móc dostosowywać go do swoich potrzeb. Mógłbym Cię prosić abyś dorzucił kilka komentarzy? Zdecydowanie pomogłoby mi to w zrozumieniu. Musisz...
Z kwarcu i preskalera wyliczasz sobie przy jakiej wartości licznik powinien się przepełnić i taką wartość ustawiasz w rejestrze OCRx. Włączasz tryb CTC timera, preskaler i przerwanie.
Przeglądnij sobie ten przykład i wykorzystanie w nim sposobu ustawiania rejestrów USART (w tym bitu U2X) z wykorzystaniem nagłówka setbaud.h: http://mikrokontrolery.blogspot.com/2011... Może w ten sposób szybciej odnajdziesz przyczynę problemów lub zastosujesz zawsze rozwiązanie z artykułu, które działa zawsze poprawnie.
Po restarcie mikrokontrolera i tak wszystkie piny są wejściami, zatem ustawianie PD0 jako wejście nie jest konieczne, za to może się bardziej przydać podciągnięcie tegoż wejścia programowo do VCC [syntax=c]PORTD |= (1<<PD0);[/syntax] Poza tym zamiast pisać tak: [syntax=c]DDRD = 0xfe;//IN0 ustawiam jako wejscie EICRA = 0x3;//Przerwanie ustawione...
Było już na ten temat nie raz ale co tam... Są trzy rejestry odpowiadające za porty... DDRx - ustawienie portu jako wejście lub wyjście (rejestr kierunku)... PORTx - odpowiada za ustawienie stanu portu (stan wysoki/niski na poszczególnych pinach lub całym porcie) "wystawienie" wartości na port... PINx - odczyt wartości z portu lub stanu pojedynczych...
Skoro już używasz timera, to zrób to na timerze :) Najprościej tak, że ustawiasz timer w tryb CTC, procedura obsługi przerwania działa tak jak to wcześniej opisałem. Jeśli chcesz uzyskać przyśpieszenie po przytrzymaniu klawisza to zmieniasz tylko wartość rejestru porównania w trybie CTC na mniejsza, w efekcie kolejne przerwania będą przychodzić szybciej,...
Jak wiemy mikrokontrolery avr maja w datasheecie wartości initial value. Wiem ze po wgraniu nowego programu następuje reset i porty I/O są ustawione w stan wysokiej impedancji. A co z rejestrami np. TCCR, TIMSK od timerow czy rejestrami np od transmisji szeregowe czy jeszcze innych? Są ustawiane na swój initial value jak podaje producent w konkretnym...
Jeśli mogę poprosić o ocenę oto on: Przemyśl to :|
Polecam dokumentacje atmegi. Tam masz przyklady na 100% dzialajacej inicjalizacji usart oraz dokladne znaczenie rejestrow flagowych ustawianych podczas owej inicjalizacji. Pamietaj ze w zaleznosci od atmegi rejestry maja rozne nazwy.
Witam Najpierw niech kolega "na sucho" sprawdzi PWM manipulując zawartością OCR. Jeśli będzie ok to sprawdzić trzeba czy przypisanie na sztywno do zmiennej pomoc różnych wartości daje rezultaty. Jeśli wszytko będzie ok sprawdzić trzeba pomiar częstotliwości. Jak będę miał chwile to popatrzę na kod i jakiś schemat by się przydał może tam jest błąd ;]...
w naglowkowy w zasadzie nic nie ma: void Funkcja_Poczatkowa(void); void Walka (void); void Eliminacje (void); void Diagnostyka (void); void Test_Cz_Odleglosci (void); void Test_Cz_Linii (void); void Test_Silnikow(void); void Ust_Portow (void); void USART_Init( unsigned int baud );...
Na jakiej podstawie uważasz, że przerwanie wykonuje się tylko raz? Na podstawie PWM? Wczoraj zadałeś pytanie ([url=http://www.elektroda.pl/rtvforum/t... 8535 - PMW C tryb 15) czy "rejestrem OCR1B ustawia się czas trwania jedynki a rejestrem OCR1A czas trwania zera". Odpowiedziano, że nie. A tutaj po komentarzach sądzę, że w dalszym...
TXC "znacznik ten jest ustawiany("1") w chwili,gdy cała nadawana dana zostanie wysunięta z nadawczego rejestru przesuwającego i nie ma nowej zapisanej w rejestrze UDR" Dlatego dałem taki warunek,aby czekał na zakończenie transmisji .
Nie wiem jak to w bascomie nie wnikałem w kod, ale można to zrobić tak że deklarujesz aktywację przerwania jednym zboczem, a po jego wywołaniu zmieniasz tą konfigurację na drugie zbocze (zmiana w rejestrze MCUCR). Albo wywołanie przerwania ustawiasz na dowolną zmianę sygnału i w jakiejś zmiennej przechowujesz stan wcześniejszy i porównujesz
Pomijając fakt, że sam pomysł jest dziwny ... to powinno to działać tak jak planujesz. Kierunek portu (wartość rejestru ddr) możesz zmienić w dowolnym miejscu programu, nie tylko w deklaracji na początku. Czyli na początku programu deklarujesz pinb.1 jako wejście, zerujesz pinb.1 (reset). W programie sprawdzasz co jakis czas czy pinb.1 jest ustawiony...
Kod łatwiej byłoby analizować gdybyś dał komentarze. Bez tego trzeba szukać w nocie jaki preskaler ustawiłeś. Kod nie zadział z każdym serwomechanizmem. Okres powtarzania impulsów ma ok 4ms a powinien być ok 20ms. Na timerze 8 bit będzie jeszcze gorzej. Gdy ustawisz 16ms (więcej się nie da) to rozdzielczość wyniesie 64us. Zakres regulacji to od 512us...
A więc tak: Mój pomysł z wykorzystaniem $Noramclear działa, ale go nie chcę, bo nie jestem pewien czy nie wyczyszczona pamięć nie namiesza mi w programie. Konstrukcja If Mcucsr.wdrf = 1 Then Info = 1 End If nie działa. Nie wiem dlaczego po resecie ten bit nie jest ustawiany ?? A to by było rozwiązanie najlepsze. Co zaś do $Timeout, to owszem można by...
Hej ! Ustawiam bit ACSR.6 i wejście nieodwracalne w kompaktorze ma swoje napięcie odniesienia 2.56V. Ale bit ACO (ACSR.5)z rejestru ACSR mi się ustawia/zeruje jak przekroczę na drugim wejściu kompaktora około 1.325 V, właśnie, dlaczego na 1.325V a nie na 2.56 ? pozdr.
Żeby na 100% nie było różnicy między badanymi stanami pinów podczas kolejnych badań oraz zapisu do rejestru, powinieneś tylko w jednym miejscu odczytać PIND i zapisać w zmiennej. Dopiero zmienną testować i gdy trzeba zapisać do tablicy. Sprawdź (pokaż) jak wygląda zawartość pliku .lss. Może trzeba powalczyć z instrukcją asm volatile("nop"), zeby program...
\ 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...
(at)elektryku5 To już jest także w XMEGA oraz nowych ATMega. Generalnie jest to częściowe rozwiązanie problemu autora, bo w ten sposób można ustawiać/zerować lub zmieniać wybrane piny, ale nie można w ramach jednej operacji łączyć tych działań. ilka nóg mikrokontrolera (np 3, albo 4,5) ustawione w wyjście, i traktowane jako jedno "słowo". Ale nie 8....
Hm.. Nigdy nie używałem symulatora do AVR, choć uważam to za trafiony pomysł, alternatywą jest debugger, ale pewnie takiego nie masz. Głównie piszesz że jest wyzerowany , może symulator jeszcze nie działa prawidłowo? Ja bym spróbował na łatwiejszym przykładzie, np: takim bez przerwań i sprawdził czy ustawianie rejestrów działa poprawnie -- zawsze będziesz...
Szukaj, nie pytaj o sprawy omawiane !!! Przycisków nie obsługuje się przez INTx, bo to nie jest element krytyczny czasowo. Wystarczy proste sprawdzenie jego stanu (PINx), a jeśli wymagana jet eliminacja drgań, to doczepiamy obsługe na timerze. Ustawienia rejestrów DDRx i PORTx i inne pierdółki są omówione w każdym pdf-ie od procesorka.
Nie używam GCC więc nie wiem czy to może być przyczyną, ale ATmega8 ma dwa rejestry do ustawiania prędkości transmisli: UBRRH i UBRRL. UBRR występuje tylko w dokumentacji: UBRR Contents of the UBRRH and UBRRL Registers, (0 - 4095) Jacek
M168 ma >128kB FLASH? Ciekawostka. Dodano po 2 Moja rada jest taka: przejść się na GCC. To jest niedoróbka BASCOMa, najlepiej zgłosić to do supportu. Akurat tu gcc obsysa podobnie. Co prawda jakoś to działa przy >128kB FLASH, ale nie do końca. Raz, że dane muszą być <64kB, inaczej trzeba kombinować jeszcze bardziej niż zazwyczaj, to jeszcze...
Jesli chcesz aby bylo jak z pierwszego obrazka z wypelnieniem 50% (czyli zawsze jeden z nich bedzie w stanie wysokim) to ustaw timer1 na tryb 8. Rejestrem ICR1 regulujesz czestotliwosc (wraz z preskalerem), bity COM1A i COM1B ustawiasz tak zeby kanal a wlaczal sie przy przechodzeniu licznika w gore a kanal B wtedy wylaczal.
Mam problem ze zliczaniem czasu przez timer w układzie PCF8583. Na starcie programu ustawiam timer: I2cstart I2cwbyte 162 I2cwbyte 0 'rejestr kontrolny I2cwbyte &B00000100 'alarm aktywny I2cstop I2cstart I2cwbyte 162 I2cwbyte 8 'rejestr kontrolny timera I2cwbyte &B01000010 'zapis rejestru alarmu 'odmierzanie sekund ' włączony alarm timera I2cstop I2cstart...
No widzisz- jak zostałem zmuszony do takiego ręcznego ustawiania rejestrów w bascomie to pomyslałem sobie- dlaczego nie robić tego samego w C? Skoro mam i tak ręcznie się dobierać do wnętrzności procesora. Zwłaszcza że ustawianie rejestrów rozumiem. Najpierw myslałem że Bascom będzie mi jeszcze służył do napisania prostych programów i szybko. Ale tak...
Witam, moim zdaniem zmiana rozdzielczości wcale nie musi być taka trudna, ATmega maże multipleksować na jednym porcie wejściami do ADC, wiec jaki problem do każdego z wejść dołączamy dzielnik napięcia, a następnie zmiana jednego rejestru ustawiamy z którego wejścia chcemy korzystać. A co do projektu, elegancko zrobiony, bardzo przydatne urządzenie w...
Nie musowo być biegłym w BASCOMie. Wystarczy znajomość jednaj komendy z BASCOMa: On Timer. [syntax=vbnet] On Timer1 Timer1_handler ... Timer1_handler: 'Tu robisz pomiary ADC Return [/syntax] A do skonfigurowania Timera w tryb PWM Phase Correct wystarczy wpisać odpowiednie wartości do rejestrów Timera (i nawet nie można tu w zastępstwie użyć polecenia...
Sprawdź poprawność symboli określających adresy rejestrów OUT i DIR. W podstawowej konfiguracji proty IO XMEGA nie różnią się od ATMega. Dopiero różnice widać jak korzystasz z rejestru kontrolnego portu. Użyj symulatora z AS do sprawdzenia czy po wykonaniu programu odpowiednie rejestry mają taką wartość jaką oczekujesz. BTW, w nowszych AVR stos jest...
Czekaj, czekaj. Jeden czujnik odpali przerwanie INT0 a w tym przerwaniu sie uruchomi timer. Drugi czujnik po INT1 ma go wyłączyć. Raczej o tym myślałem. Lepiej tak: czy ktoś by mi dokładnie wytłumaczył jak wywoływać timery, zbierać z nich czas, do czego służą poszczególne rejestry. Noty katalogowej tego procka po polsku nie znalazłem, a dobrego poradnika...
..bardzo trudno uodpronic uklad na reset np od zaklocen, zwlaszcza avr'ki ;)... wystarczy jeden przypadkowy reset na miesiac i musimy ustawiac zegarek co miesiac :(..ale wpadlem na inny pomysl, wystarczy zapisywac do eeprom aktualny czas co 1h, w razie resetu w najgroszym przypadku stracimy 60min dokladnosci...na 10lat daje nam to 80k zapisow ;)..ale...
Jestem początkujący i szczerze powiem że nie mam pojęcia na czym polega i do czego służy zatrzaskiwanie danych na magistrali. Zatrzaskiwanie danych polega (w skrócie) na przepisaniu stanu linii danych do rejestru wewnątrz układu. Czyli ustawiasz pewne piny i potem mówisz do układu "gotowe" - zatrzaskując stan wszystkich pinów. Zwykle zatrzaśnięcie...
mam takie pytanko w atmega 16 niewiem w jaki sposób włanczać i wyłanczać timer niewiem któr rejestr dego dokonuje , a może one chodzą cały czas bo jeśli ustawie timer na to żeby zliczał (timer0) impulsy zegara sys. i włanczał przerwanie gdy zgodzie się jego wartość z rejestrem OCR0 ale od kiedy on ma się włączyć ktury bit to ustawia ? nobo leci sobie...
Chyba koledzy nie zauważyli że kolega ciągle ustawia ADMUX i korzysta z pierwszego odczytu. U mnie odczyt jest stabilny i ani razu nie schodzi poniżej 1023 a mierzę te 5V co 500ms jak Ty bez cudów filtrowania. TYLKO ja pomijam/odrzucam wynik pierwszej konwersji BEZPOŚREDNIO po ustawianiu rejestru ADMUX Wystartuj konwersję jeszcze raz i napisz jak wygląda...
Witam, Potrzebuję wycisnąć a ATmegi32 maksymalną prędkość ADC. znalazłem wiele artykułów, i w większości z nich zrobione są wstawki w języku Assembler, dzięki którym Atmega korzysta tylko z 8 bitów przetwornika. Wiem że ustawia się to bitem w rejestrze "ADLAR", ale niestety całość musi być napisana w ASM, bo Bascomowa komenda "getadc()" i tak konwertuje...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Dzięki za odpowiedzi. Schemat zasilania wygląda tak. Zawiesza się procesor u1, który znajduje się na drugiej płycie podłączonej do zasilacza 30cm szarej taśmy. https://obrazki.elektroda.pl/9335085400_... Na tę chwilę nie potrafię określić czy procesor zawiesza się na skutek włączenia czy wyłączenia, cewki stycznika czy styków (obciążenia)...
Z tego co wyczytałem to rejestr TCCR2 w M168 jest podzielony na 2 rejestry TCCR2A i TCCR2B, zgadza się ? Gdzie to wyczytałeś? W dokumentacji? Jeśli tak to w jakim celu pytasz się, czy to prawda? :D Zestawienie rejestrów związanych z ustawianiem Timer2: 18.11 Register description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....
Otóż rozdzielczość 16 bitową PWM-a osiągnąłem przy zastosowaniu trybu opisanego w dokumentacji numerem 14. W rejestrze ICR1 ustawiam rozdzielczość PWM-a (max 65535 ponieważ licznik jest 16 bitowy). Natomiast w rejestrze OCR1x (u mnie OCR1A) ustawiam wypełnienie biorąc pod uwagę iż wartość ICR1 to wypełnienie 100%. Dokumentacja jest prawidłowo opisana...
(at)margas60 Już kiedyś próbowałem wytłumaczyć, dla STM ( nie tylko, ale tu zajmujemy się STM) istnieje kilka różnych bibliotek. Jedna stara STL chyba już nie rozwijana, HAL obie od producenta, odrębnie rozwijana mbed bardzo fajna oparta na rtos, Arduino oraz golas cmsis, w którym dziergasz po rejestrach. Arduino wewnętrznie jest oparta na HAL, więc...
twu... pomyliłem się. Dostaję 0xFFFF bo korzystam z tego 16 bitowego SPI. A co w takim razie oznacza odebrane 0xFF? Że RF12 zapisał rejestry poprawnie ?Niestety całość komunikacji mogę sprawdzić dopiero w przyszłym tyg bo nie mam 2 modułu. Moja procedura SPI jest identyczna jak opisywane w tym temacie z tą różnicą że inaczej się w ARM'ie ustawia i kasuje...
wlasnie chodzi o to, ze w przerwaniu ustawiam tylko flage. I nie wiem co mu pochlania tyle czasu. W sumie po wujsciu z przerwania w głownej petli jest jescze warunek if , wlaczenie timera i odczyt rejestru, ale to chyba nie pochlania 50 instrukcji
W drugiej linijce nic nie ustawiasz. Zapis czytasz zgodnie z hierarchią nawiasów. Kręcisz się w pustej pętli tak długo, jak spełniony jest warunek, a warunek to "nieprawda, że ustawiony jest bit TWINT w rejestrze TWCR". Ciekawe, czy to działa - na pierwszy rzut oka wygląda podejrzanie, ale na szczęście nie pamiętam już nic z TWI w ATmega, więc poczekajmy...
Witam Próbuję odpalić tryb free running w atmega 16 i coś mi nie wychodzi. Z noty katalogowej zrozumiałem, że w rejestrze ADCSRA ustawiam na 1 ADATE umożliwia to wybranie wyzwolenia, natomiast w SFIOR ustawiam na 0 i jest free runing mode. jednak nie chce się odpalić nawet przerwanie od wykonanej konwersji więc przypuszczam, że coś jest nie tak z tym...
Na początek polecam stronę: http://www.8051.prv.pl/ ale uwaga - przykłady są pisane pod AT90S8535, więc pod ATmega będzie to wyglądało trochę inaczej. Polecam lekturę datasheetów w razie wątpliwości. Bardzo przyjemny do pisania w AVR-GCC jest edytor AtmanAVR, ale niestety nie jest darmowy. Posiada wiele udogodnień (np. Code Wizard, który automatyzuje...
Atmega 328P z kwarcem 18432000 (w specyfikacji mozna ja kręcić do 20MHz) spokojnie potrafi wygenerować trzy PWM przesunięte w fazie o 120 stopni z krokiem 256 z częstotliwością 50Hz przy tym nadając na USART o aktualnych warunkach jednego potencjometru. Pewnie że potrafi, ja na attiny 861 wygenerowałem 3 sinusy co 120 st z regulacją F od 20 do 250Hz...
Link nie działa. Ustawianie portów bedzie tak samo długo trwało jak ustawienie PWM więc nie widze problemu w miejscu gdzie ustawia sie porty wysłac odpowiednia informacje (ustawić jakis rejestr) dla PWM (nie 1-wire bo tutaj dopiero zaczną sie schody). Takie pytanie z ciekawości "podprogram wywoływany przerwaniem do odczytu ADC 300 razy) Jakim przerwaniem...
Witam ponownie. Zmieniłem oscylator w atmedze na zewnętrzny 14745600 Hz założyłem terminatory 120ohm na końcach lini miedzy A i B, wymieniłem max 485 na nowego i niestety wciąż nie mogę odczytać rejestru .ustawiania programu odczytowego pokazano na rysunku proszę o pomoc http://obrazki.elektroda.pl/3066697100_1... połączenie atmega max485...
Witam! Mam problem ze zrozumieniem działania zewnętrznych przerwań w mikrokontrolerach atmega (avr). Dla przykładu posłużmy się konkretnym osobnikiem - Atmega48. W specyfikacji http://www.atmel.com/dyn/products/produc... (strona 64) wyróżniają dwa przerwania INT0 i INT1 i dodatkowo 24 - PCINT23..0. Te 24 przerwania są podzielone...
Witam Chciałem zbudowac układ który liczył by 0-9 i wyświetlane to było na siedmiosegmentowym wyświetlaczu... .......... prosze o pomoc i o jakies proste wytłumaczenie moich błędów. myslalem jeszcze o robieniu tego za pomoca rozkazu INC i dodawania tylko nie wiem jak zawartośc rejestru wystawic na wyjscia z gory dziekuje za pomoc pozdrawiam Tu masz...
http://obrazki.elektroda.net/42_12648689... Na temat projektu avr-cdc z [url=http://www.recursion.jp/avrcdc/]htt... napisano już wiele i jeszcze więcej - nie będę się rozpisywał o samej idei - można zajrzeć chociażby do wątku [url=http://www.elektroda.pl/rtvforum/to... prosta niezawodna przejściówka...
Witam !! Po pierwsze to widać, że nadal nie chciało Ci się zajrzeć do dokumentacji kompilatora. Nie znam tego dziwactwa, którego używasz więc może mi je przyślij. Po drugie to nie widze w Twoim programie abyś inicjował uart'a, nie ustawiasz transmisji ani nawet prędkości. Minimalna formuła na np: ATMega 128 wygląda tak: UCSR0A=0x00;//zeruje rejestry...
Dzięki wielkie- ale to nie do mnie pisałeś. O Atomic_Block dowiedziałem się w czwartek- sprawdziłem- od czwartku jest to pierwsza wiadomość na ten temat. A wracając do tematu Fir3man- wymyśliłem taki schemat programu: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> volatile uint8_t dol;...
ok, rozumiem powiedźmy, proste. Skoro już was mecze, to może pobawię się nieco programowaniem w C :cry: Czyli tak. Chce skonfigurować Timer0 i Timer1, w ten sposób, że Timer0 liczy i po osiągnięciu np. 200, na wyjściu uP zmieni się stan 0 > 1 lub 1 > 0. I teraz po dojściu sygnału do Timer1, zapisuje on ilość swoich zliczeń po wykryciu zbocza....
Programujesz w Atmega timer 16 bitowy. Przy częstotliwości pracy 1MHz i preskalerze 1024 będziesz miał 1024 sygnały do zegara licznika na sekundę. Ustawiając wartość licznika 16 bitowego na 0fff dostaniesz przerwanie co około 1 min. Robisz sobie 2 rejestry jeden praca drugi zwłoka i sprawdzasz przy każdym przerwaniu jaki to tryb i czy liczba przerwań...
Dzięki za zainteresowanie i wskazówki. Na płytce poodłączałem wszystki co się da, ale na porcie J zostały dwa niezidentyfikowane elementy podłączone do PJ3, PJ4 i PJ5 (tak drobne, że się dzisiaj nie podejmę wylutowania). No i USB na CH340G podłączone jak w arduino MEGA. I wspomniany wcześniej licznik na PORT H. 1. Przeglądałem napięcia na pinach zasilania...
(1<<4) oznacza przesunięcie 0b00000001 o 4 bity w lewo czyli w wyniku otrzymujesz 0b00010000 Czyli jeżeli ADEN jest 7 bitem rejestru ADCSRA to wykonując (1<<ADEN) wykonujesz tak naprawdę (1<<7) czyli w wyniku otrzymujesz 0b10000000 Teraz już jasne? _BV() nie używaj bo najnowsze trendy ułatwiające rozumienie kodu wszystkim oraz przenoszenie...
Uruchom poniższy kod w CManiaku: http://mikrokontrolery.blogspot.com/p/cm... [syntax=c]#include <dondu/dd_atmega8.h> //Wymagane do symulacji definicji i rejestrów ATmega8 const char *byte_to_binary(int x){ int z; static char b[9]; b[0] = '\0'; for (z = 128; z > 0; z >>= 1){strcat(b, ((x & z) == z)...
Ustawiasz prescaler dla ADC tak, zeby dzielil przez 8, wtedy taktowanie ADC wychodzi ci 2MHz, potrzebujesz 13 taktow/pomiar, czyli mozesz samplowac nawet powyzej 100kHz. Nigdzie nie ustawiasz ile ma byc bitow pomiaru - w rejestrze ADLAR wrzucasz odpowiednie wyrownywanie i czytasz - z tym, ze odrzucasz bity, ktore sa nieznaczace - ze wzgledu na spadek...
Zacytuje Ci to co kiedyś mi powiedział użytkownik Paweł Es. , gdy sam jeszcze nie wiedziałem jak korzystać z '595 ;) Jeżeli wrzucasz pełną sekwencję 20 bitów do rejestru, to możesz sobie odpuścić jego zerowanie i dajesz MR rejestrów=1 na stałe. Wyzerować rejestr możesz wysyłając mu sekwencję 20 zer na dzień dobry. SH_CP - SHIFT CLOCK PULSE - tym taktujesz...
Witam Poniższy program mierzy długość trwania impulsu / stanu niskiego podanego na INT1. Pomiar jest wyzwalany przerwaniem, zboczem opadającym, następnie następuje włączenie timera i przestawienie przerwania na zbocze narastające. Gdy ono nastąpi jest wyzwalane kolejne przerwanie, które zeruje zatrzymuje timer. Odczyt timera (rejestr TCNT1) następuje...
Jak to dokładnie jest z przetwornikiem ADC? Przeglądam forum i datasheeta od atmegi i nie widzę odpowiedzi na moje pytanie. Chodzi mi o tryb free running. Powiedzcie mi czy dobrze rozumiem zasadę działania przetwornika w tym trybie. Zaczynam od rejestru ADMUX, gdzie ustawiam napięcie odniesienia (REFSx) i kanał (MUXx). Później w ADCSRA ustawiam preskaler...
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...
Mam diagnozę - uszkodzony procek. Jak wymieniłem , to wszystko ładnie zaczęło grać. Dla ciekawych mam hipotezę dlaczego. Na PCB mam złącze do programatora w rastrze 1.5mm. Piny żeńskie do tego złącza są tak małe że musiałem je przylutować do przewodów (nie wiem czy jakkolwiek da się to zacisnąć bez lutowania, próbowałem z marnym skutkiem). No i przewody...
Bardzo chętnie zastosuję się do wskazówek,ale nie za bardzo wiem o co Ci chodzi z tym "rejestr=konfiguracja" oraz funkcjami tasiemcami. Chodzi o takie tasiemce: [syntax=c]PORTD &=~(1<<PORTD5); //podciagani do 0 PORTC |=(1<<PORTC5); // podciąganie do + PORTD |=(1<<PORTD3); // podciaganie do+ PORTD |=(1<<PORTD2); // ustawiam...
Zapoznaj się z tym układem, on ma dodatkowo źródła prądowe na wyjściu co daje, że wszystkie diody świecą jednakowo (jednym rezystorem ustawiasz prąd płynący przez 16 diod). Układy można łączyć szeregowo dla uzyskania większej ilości wyjść. Sterujesz to o ile pamiętam 3 liniami (wejście szeregowe, taktowanie szeregowe danych, przepisanie danych z rejestru...
zdawało mi się , że już "zatrybiłeś" timery Dokładnie i dlatego pozwoliłem sobie udzielić odpowiedzi. Timer w trybie 5 bez względu na ustawienia zawsze liczy do końca (0xFF) a zmiana pinu OCRx dokonywana jest po osiągnięciu wartości ustawionej w OCR1A. Jak widać na przykładzie ustawiany jest 5 tryb pracy tego timera. ldi temp,(1<<COM1A1)|(1<...
OK. Źle był zamontowany kwarc. Poprawiłem go i działa. Prawie... Bo teraz wchodzi do przerwania ale po wyjściu z niego program jakby sie resetował i zaczyna od początku (ustawianie rejestrów, itd.). Nie wiem czemu tak jest, bo jak wpisze jakąkolwiek wartość do TCNT0 i Timer działa w trybie normalnym to działa poprawnie.
nie napisałem że program jest w bascomie To dlaczego jest w temacie "asm", czyli popularny skrót od "asembler" ? Jak ustawić watchdoga na 2 s nie korzystając z funkcji bascomowej?? Bez względu na język programowania - zgodnie z notą katalogową. Jeśli nic tobie nie mówią nazwy bitów i rejestrów, to oznacza, że jeszcze tam nie zaglądałeś. Jak to można...
W ATMega nie ma takiej opcji - włączenie USART powoduje przejęcie kontroli nad pinem IO i ustawienia rejestrów portu dotyczące tego pinu nie mają znaczenia. Ależ jest. Włączenie RXEN ustawia tylko pin na wejściowy, ale nie zmienia ustawień rezystora podciągającego (można normalnie ustawić - rejestr PORTx). Sam się na to nadziałem jakiś czas temu na...
Witam. Posiadam kilka kompletów tego nadajnika i odbiornika (433MHz) i tak jak kolega wspominał w eterze mega dużo śmieci. Ale... znalazłem rozwiązanie tego problemu śmieci! Zmierzyłem miernikiem częstotliwości wyjście odbiornika podłączonego tylko do zasilania i u mnie były takie wyniki: od około 600Hz nawet do 3kHz sygnały śmieci które zmieniały się...
Clear_Up i Clear_Down jest dla trybów PWM. Przy CTC jest SET , CLEAR i TOGGLE. Zmieniając Twój kod zająłem się najważniejszymi sprawami i pozostawiłem nawet tą literówkę "celar_up" :D Takie rzeczy się sprawdza ekspresem wciskając F1 https://obrazki.elektroda.pl/7415453400_... ..a do ustawiania wiekszej ilości bitów w jednym rejestrze/bajcie...
Chyba dostaniesz tytuł "kombinator miesiąca". Najpierw chcesz "masakrować" przerwania, teraz zaś zastanawiasz się czemu efekt inline'owania dwóch różnych funkcji jest różny... Bo jest różny? Pomyśl... W jednej funkcji ustawiasz rejestr -A, potem -B, potem porównanie i koniec. W drugiej ustawiasz najpierw -A, potem -B, potem znowu -A, potem znowu -B,...
Witam, Poniżej zamieściłem prosty kod, który nie mogę samemu przetrawić:) Proszę o pomoc . . . void configure_timers() { /* Wpisuje do rejestru GTCCR wartość 1 w bity TSM i PSRSYNC, dzięki czemu mikroprocesor przechodzi w tryb synchronizacji a ja mogę bez obaw konfigurować oba liczniki/timery na raz */ GTCCR = 1 << TSM | 1 << PSRSYNC; //Ustawiam...
To co opisał excray jest widoczne także na schemacie timera, a tutaj znajomość angielskiego nie jest potrzebna :) http://obrazki.elektroda.pl/1695037200_1... Czy teraz już widzisz jak TCNT1 jest porównywany z OCR1A i/lub OCR1B, i których pinów OCn dotyczą? No dobra ale skąd wiadomo że np. w trybie CTC procesor ma porównać TCNT1 z jakim...
Odpowiednie piny IO ustawione są właściwie? Pamiętaj, że peryferia w XMEGA nie przejmują pełnej kontroli nad pinami tak jak to było w ATMEGA. Unikaj też nieskończonych pętli przy TWI, czekających na jakieś zdarzenie. Warto implementować w takich przypadkach timeouty, bo jakikolwiek problem na magistrali będzie zwieszał program. Piny na początku jako...
Buduję sterownik 4 silników komutatorowych, każdy musi być sterowany niezależnie. W tym celu chcę wykorzystać wszystkie cztery kanały PWM dostępne w Atmedze 32. Każdy PWM steruje jednym tranzystorem mosfet (irf530). I tu zaczynają się schody, bo od trzech dni usiłuje zebrać jakieś szczątki informacji o tym jak zaimplementować tego PWM-a i jak na razie...
:arrow: dscreator Przede wszystkim koniecznie skomentuj każdą linię i wklejaj za pomocą znaczników Code , ponieważ (jak widzisz) Twój program jest zupełnie nieczytelny (forum usuwa spacje na początku linii). Program powinien zaczynać się zaraz za obszarem wektorów przerwań. Jeśli jakiegoś przerwania nie wykorzystujesz to zamiast mnemonika rjmp wstawiasz...
Zarezerwuj sobie na godziny i minuty po rejestrze w procesorze. Zrób obsługę klawiatury. Ja bum dał 3 przyciski. 1 - jak przytrzymasz dłużej to wchodzi w trym ustawiania. Jak potem na krótko to przechodzi po kolejnych rejestrach i ustawiasz 2 pozostałymi wartość godziny minuty, dnia, miesiąca, roku. 2. zmienia wartość w górę 3. zmienia wartość w dół...
Jak ustawisz w rejestrach wewnętrzne napięcie odniesienia, efekt nie będzie zadowalający(Co prawda w notce jest mowa o wysokiej impedancji tego źródła, ale nie jest dokładnie to sprecyzowane, więc nie jest to dobra praktyka). W ogóle nie ma potrzeby tego pinu podłączać gdziekolwiek, skoro ADC będzie nieużywany. W momencie, kiedy używamy napięcia referencyjnego...
Chyba można by uniknąć stosowania watchdoga jesli wcześniej wyłączone zostały by przerwania?! Ale wiesz co? unikać stosowania watchdoga to raczej nie warto. Jeśli chodzi o wszystkie inne sztuczki programowe służące do tego celu to akurat watchdog zdecydowanie się do tego lepiej nadaje. Zauważ, że prawdziwy reset watchdoga daje ci m.in czyste wszystkie...
Na początku pliku port.h masz #define __AVR_ATmega168__ i to determinuje jaka zawartość pliku jest dostępna. A tak nie powinno być. Robisz projekt, w opcjach projektu (ATMEL STUDIO lub ECLIPSE) wskazujesz docelowy uC np. Atmega16 i po tym wyborze jest dostępna zawartość dla wybranego uC. Wybierzesz inny uC to wszystko zmienia się pod ten inny. A Ty...
Przeczytałem uwagi. Zastosowałem zerowanie zmiennej "sredni" i opóźnienie w pętli do while. Gdy do kanału 0 , który jest kanałem pomiarowym podepnę masę (bez dzielnika) nie mam zera tylko 0,1 - 0,9 V stale się zmienające. Wymieniłem mikrokontroler i jest to samo. Mierzyłem napięcie akumulatorków 4*1,2 - miernik pokazał 5.02 V; atmega skaczące 4,60 -...
A może linie od SPI, powinny być podciągnięte rezystorami ? Nie. Rezystory w szereg też nie, kondensatory tym bardziej... ;) Skupiając się na kodzie : - Dlaczego w ATtiny nie jest używane USI w trybie SPI ? Przykłady w C są w nocie katalogowej... (Three-wire Mode) - Gdzie jest ustawiany bitrate dla SPI mastera ? - Ustaw tryb slave w ATmega (I tak jest...
ustawianie rejestrów banki rejestrów badanie rejestrów
alpine kostka ekspres delonghi alarmy świateł focus
Zetor Proxima 7441: Palące się kable przy włączonych światłach Krups EA81 - Kontrolka "Opróżnij pojemniki" mimo czystych pojemników