ad 1. Odpowiedzią jest bit FOC1A, którego ustawienie wymusza zajście zdarzenia compare, a więc jedna dioda jest o jedno zdarzenie do przodu. ad 2. Jeśli dioda przez 1s jest włączona, a przez 1 s wyłączona, to okres wynosi 2s, a więc częstotliwość jest równa 0,5 Hz.
Np. po to, żeby można było wyzwalać konwersję w jakiś czas od zbocza przebiegu PWM. Do tego służą timery wielokanałowe.
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...
Jakiej wersji kompilatora używasz? Get RC5 domyślnie używa timera0 a Atmega8 to nie to samo co Atmega88 i timery są inne, inne rejestry sterujace. Zobacz do noty np. Timer/Counter Control Register TCCR0 w ATMega8 steruje preskalerem a w ATMega88 TCCR0B Timer/Counter Control Register B, dwa różne rejestry inne adresy, różne też są flagi zdarzeń timerów...
Sprawdzając stan tego pinu w przerwaniu, niestety z wykorzystaniem timera.
Chyba coś masz jakiś dziwny datasheet. Tutaj masz link do tego, którego ja używam - [url=www.atmel.com/Images/doc2545.pdf]Li... Od strony 156 masz pełny opis rejestrów dla tego timera. A program spróbuj zmienić tak: [syntax=c]TCCR2A=(1<<COM2A1)|(1<... TCCR2B=(1<<CS20);[/syntax] Po tych zmianach...
Trzeba to zrobić na którymś przerwaniu. Pokaż kod. Dodano po 42 Może da się wcisnąć to do trzeciego timera.
Ale BlueDarco, IMHO można dać między procesor mały układ FPGA (np. LATTICE MachXO2-256) i zrobić tam wielokanałową sprzętową eliminację drgań styków ;) Mimo to czasem niestety programowa eliminacja nie ma sensu - np. jeśli enkoder podpinamy bezpośrednio do odpowiednio skonfigurowanego timera ;)
Blokuj przerwania w pętli głównej na czas modyfikacji portu (LED2_TOG). Twój timer nie odlicza równo 1/125 s, tylko nie co dłuższe i nierówne odcinki czasu. Do równego odliczania czasu trzeba wykorzystać tryb CTC innego timera.
Nie pokazales czy ustawiasz prawidlowo taktowanie TWI, jaki adres urzadzenia ma twoj PCF, a jaki ty nadajesz, no i co znaczy, ze uklad nie reaguje. W dodatku umieszczanie tego w przerwaniu jest pomyslem takim sobie w tej formie - nadanie start condition, adresu i ew. danych + stop condition trwa wieki w porownaniu z tempem dzialania procesora. Takze...
Witam. Można np. tak :) 6 x Pwm Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm...
Jeżeli nie używasz przerwań to ich nie włączasz. Wprawdzie nie włączasz głównego, ale włączasz od timera (TIMSK1), dlaczego? Wzór z dokumentacji dla CTC: F = Fclk / (2 * N * (1+OCR1A)) = 16000 / ( 2 * 8 * 2000 ) = 16000 / 32000 = 0.5Hz Sterowanie pinem OC1A dla CTC: [syntax=c]TCCR1A = 1<<COM1A0[/syntax] .
... Dlaczego tak się dzieje? :/ Dlatego, że przerwanie ISR(TIMER1_COMPA_vect) jest wywoływane co 128 taktów zegara, a wykonanie procedury przerwania timera1 zajmuje ~200 taktów. Po zakończeniu wykonywania przerwania od timera, gdy uC wraca do programu głównego, ma już ustawioną flagę od OCR1 i ewentualnie flagę RXC. Ponieważ timer "stoi wyżej" w hierarchii...
POWERSAVE (ATMEGA88) This mode is identical to Power-down, with one exception: If Timer/Counter2 is enabled, it will keep running during sleep. The device can wake up from either Timer Overflow or Output Compare event from Timer/Counter2 if the corresponding Timer/Counter2 interrupt enable bits are set in TIMSK2, and the Global Interrupt Enable bit...
Witam. Tak na szybko analizując kod: Dla Timer0 włączasz dwa przerwania od porównania: http://obrazki.elektroda.pl/6165324400_1...
1. Test sprzętu. Odłącz RS485, i zrób echo w µC do terminala pokazujące co odbiera. Możesz zamiennie podpiąć drugi RS485 ustawiony na nadawanie (w sumie to już będzie RS-422). 2. Zauważone potencjalne problemy programistyczne. Powinieneś także podjąć wstępne załażenie, że transmisja nie jest idealna - odbiór do bufora w przerwaniu i dopiero po...
Zakres PWM zależy od wybranego timera i trybu. Moze być nawet do 65535. Zerknij w dokumentacji mikrokontrolera do opisu timera, który chcesz używać. Na przykład: http://mikrokontrolery.blogspot.com/2011... http://obrazki.elektroda.pl/1325588900_1...
Możesz użyć timera aby odliczyć sobie konkretny odcinek czasu.
Zobacz tu: http://mikrokontrolery.blogspot.com/2011... jeszcze świeże :) Może coś ci to pomoże. Użyj wektora TIMER0_OVF_vect.
U mnie w BASCOMie Timery w ATTiny2313 działają. Ale w ATMega88 nie działają. To zależy od wersji BASCOMa po prostu.
A czy timery, przerwania, komparatory i inne dodatki w procesorze były powyłączane?
Zobacz to i wyciągnij wnioski [syntax=vbnet]$regfile = "m88pdef.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '$sim Cursor Off Cls Config Portd.0 = Output Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1 , Compare A = Disconnect , Compare B = Disconnect Compare1a = 62500 On Compare1a Beep Enable Compare1a Enable Interrupts...
No i mamy całą serię błędów. Po pierwsze - nigdy nie robi się odświeżania inaczej niż w przerwaniu timera. Po drugie - podejrzewam, że pod nazwą "segment" występuje u Ciebie cyfra. Ciekawe, jak nazywasz segmenty. Nie przepisuj kodu na brudno - pokaż, jaki jest naprawdę. W każdym przerwaniu timera należy kolejno: - wyłączyć poprzednią cyfrę (lub wszystkie...
Generalnie w takich przypadkach nota układu twoim przyjacielem. Poczytaj to co napisałem w komentarzach. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { uint8_t i = 0; DDRD = 0xff; //TCCR2A |= (1<<WGM21)|(1<<WGM22); // źle ten tryb jest zarezerwowany TCCR2A |= (1<<WGM21) // CTC //TCCR2A |= (1<<CS20)|(1<<CS21)|(1<&l...
Czekaj chwilę, bo ja się już pogubiłem. Ty mówisz o pinach fizycznych czy cyfrowych? Chyba o cyfrowych (tych z komentarzy w kodzie) - wtedy wszystko pasuje. Piny cyfrowe 9 i 11 są wyjściami timerów odpowiednio pierwszego i drugiego. Z tym, że timera drugiego Atmega8 nie posiada... Tak czy inaczej, w tym wypadku nie możesz zamienić pinów jak Ci się podoba....
Funkcja wait w Bascom nie jest dokładna i na dobra sprawę nie należy jej stosować do odmierznia czasu. Aby dokładnie odmierzać czs należy posłuzyć się timerami. Jakie dałeś kondensatory do kwarca?
A nie możesz napisać własnej procedury "Getrc5" w bascomie? Uruchamiasz PWMy, więc znasz częstotliwość przepełnienia dowolnego timera. W getrc5 sprawdzasz odstępy pomiędzy zdarzeniami na pinie odbiornika IR - trzeba wziąć poprawkę na przepełnienie timera, ale oprócz tego nic się nie zmienia. Pozdrawiam, Dr.Vee
No to zrób mi "dobrze" i weź zainicjalizuj ten timer na piechotkę ustawiając tam gdzie logika nakazuje *na początku* cs jakiś... I zobacz czy działa
ATMEGA88 jak i ATMEGA168 ma wewnętrzy preskaler sygnału zegarowego który jest domyślnie włączony. ATMEGA 8 go nie ma.
Tak, wybrałem Low Frequency, da sie jakoś ruszyć uC bez tak wolnego kwarcu ? Co masz na myśli 'ruszyc' ? Prawdopodobnie chcesz skorygowac błędnie ustawione fusebity (powrócic do default settings). W zasadzie datasheet mówi o optymalizacji oscylatora processora do 32kHz jako 'Low Freq.' , ale do komunikacji podczas programowania mozesz tu zastosowac...
Jak w temacie, zlecę napisanie programu w c dla AVR Atmega88. Ma to być prosty timer z dwoma wejściami które wyłączają przekaźnik po określonym czasie. Więcej info na PW.
Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: http://obrazki.elektroda.net/9_123515576... A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla...
Źle zainicjowane wejście INT0. To jak zainicjoweać wejście INT0 dla atmegi 88?
to jeszcze może napisz jak należy, bo jest przerwanie timera, sprawdziłem w przykładzie tmf avrppr.zip\Przyklady\LED\7segLED\7segLED... - i też jest podobnie i co chodzi Tobie z tym przecinkiem?
Metoda z tablicami jest całkiem dobra, cała reszta jest błędna. Po pierwsze - nie da się wiarygodnie zliczać osi przy użyciu transoptora. Po drugie, czegokolwiek byś nie użył w zamian (np. rezystory na osiach i czujniki prądowe) - trzeba filtrować odczyty z czujników, a to robi się na bazie przerwania timera, a nie w pętli kręcącej się z nieznaną i...
Albo ustawić 16 bitowy timer i w przerwaniu od jego przepełnienia zmieniać stan diody. Do tego super urządzenie pomiarowe jakim jest stoper w telefonie i już kontrola na wysokim poziomie :)
Oczywiście że się da. Za pomocą ATMegi genetujesz kilkumilisekundowy impuls o częstotliwości ze 40kHz. Uruchamiasz jakiś Timer czy coś, i czekasz na echo. Potem juz tylko skalowanie i masz wynik. Jest dużo o tym na elektrodzie.
Czy rozwiązanie z kilkoma procesorami jest bezsensowne- na tym etapie nie wiem. To że program zatrzymywał się przy zerowych- albo lepiej powiedzieć wolnych obrotach- to wada programu. Co prawda trudno powiedzieć kiedy wał się nie obraca z punku widzenia programu a nie człowieka. Jeden obrót na miesiąc- to wał sie obraca dla programu a dla człowieka...
Nie trzeba przełączać preskalera. Wystarczy wpisywać wypełnienie PWMa = 0 w momentach gdy ma być przerwa. Czyli kilka cykli PWMa pójdzie na wypełnieniu 0 a tylko co któryś z takim jaki da impuls do serwa. Mam do tego nawet gotowy kod na ATMega88. Procek chodzi na 10MHz. Zmienne globalne: [syntax=vbnet]volatile uint8_t PWM2; volatile uint8_t PWM3;[/syntax]...
brakuje instrukcji sei(); włącza ona globalną obsługę przerwań. Umieść ją zaraz przed pętlą while(true) Dodano po 5 a poprawnie jest TIMSK1 = _BV(TOIE1);
Witam Mam problem ze znalezieniem potrzebnego dla moich celów mikrokontrolera. Potrzebuję dużo MIPS i przystępną cenę. Mianowicie: rdzeń 8 lub 16 bit (najlepiej RISC) minimum 40MIPS wymagany komparator analogowy (ADC zbędny) min 8k max 16kB FLASH port szeregowy timer mile widziane instrukcje mnożenia Wcześniej stosowałem atmega8-16MHz atmega88-20MHz...
Cześć. Praktycznie każdy spełni Twoje wymagania, zarówno w prędkości obliczania jak i ilości miejsc po przecinku. Zrobi to spokojnie nawet ATmega8. Przykład możliwości ATmega88 (odpowiednik ATmega8 z minimalną różnicą dot. timerów): http://obrazki.elektroda.pl/8770689300_1... Przy czym jednocześnie zajmuje się generowaniem sygnału wideo,...
Masz błąd w procedurze wyświetlania - na wyświetlaczu będzie widać "duchy" sąsiednich cyfr. Gdybyś zamiast zmiennych s1, s1, s10 zrobił tablicę, mógłbyś wywalić switch, tak, jak Ci to pokazałem wyżej: PORTD = c[cyfra[i]]; Twoja pętla główna ciągle zamienia liczbę na cyfry, a wystarczy zrobić to jeden raz po zmianie wartości. Tablicy c nie ma sensu deklarować...
(at)donduuuuu... ;) Hard & soft Wyjścia z generatorów wysyłane są bezpośrednio na oddzielne piny mikrokontrolera, miksowane analogowo i buforowane. Zastosowano mikrokontroler ATMEGA8L (zasilanie 5V), taktowany wewnętrznym zegarem 8MHz. Docelowo znajdzie się tu ATMEGA88 (zasilanie 3V bateryjne). Ruch enkoderów wykrywany jest w przerwaniach INT0 i 1,...
W datasheecie procesorów ATMega48/88/168 znalazłem informację że procesor ATMega48 jest podobny do procesora ATMega88. Procesor ATMega88 jest "potomkiem" procesora ATMega8 i jest z nim zgodny pod względem wszystkiego. Rożni się tylko tym że jest w stanie chodzic na 24MHz i że ciagnie mniej prądu. A procesor ATMega48 jako że nie ma swojego przodka w...
Piny zwykłych I/O pracują z połową częstotliwości systemowej z powodu bufora, a pin licznika na pewno bedzie pracować poprawnie z f mniejszym około 2krotnie od f timera czyli powiedzmy 20Msamples/sPozdrawiam W pdf do atmega88 strona 137 napisano: External Clock Source An external clock source applied to the T1/T0 pin can be used as Timer/Counter clock....
Ech, pośpieszyłem się, właśnie czytam notę katalogową... W Atmega8 możesz tylko na tym timerze korzystać z trybu Overflow (Wartość (0xFF-<Wartość dla OCR0>) należy wpisywać co przerwanie na jego początku). Dopiero nowsza wersja (Atmega88) ma tryb CTC. Na szybkiego to możesz przejść na Timer2 w trybie synchronicznym, ma zbliżone rejestry. Timer1...
Kondensator tantalowy pasuje jak najbardziej i jest znacznie mniejszy. Soldermaska lepiej zabezpiecza; lakier uniemożliwi serwis zegarka STK200 i tak trzeba zasilać; programujesz bez baterii Wybudzanie poprzez SW1 to głównie jak jest napisany program. Po cynowane ścieżki - utlenia się cyna - powinna być soldetmaska 2k2 to zbyt duża wartość, to ok 600uA...
Note that for newer devices (ATmega88 and newer, effectively any AVR that has the option to also generate interrupts), the watchdog timer remains active even after a system reset (except a power-on condition), using the fastest prescaler value (approximately 15 ms). It is therefore required to turn off the watchdog early during program startup... Jednym...
No niby to nie błąd rzeczywiście, ale stanowczo odradzam tego typu zabiegi, tak tworzy sie kiepski i nie czytelny kod, do pełni szczęścia brakuje jeszcze tylko "GOTO". Ja z kolei stanowczo zachęcam do zapoznania się z tym plikiem nagłówkowym i przemyślenia, kiedy takie zabiegi są konieczne. W pokazanym akurat przypadku taka potrzeba nie zachodzi, bo...
Witam, Mam problem z timerem1 - timer pracuje w trybie CTC (4), wartość wpisywana do rejestru OCR1A jest wcześniej odczytywana z przetwornika ADC (potencjometr). Problem występuje podczas zmiany tej wartości - timer tak jakby się przycinał (ale tylko czasami) - nie zgłasza przerwania przez pewną chwile, żeby zaraz zacząć normalnie pracować. Np. po takiej...
Hmm. Niektóre zagadnienia można rozwiązać na wiele sposobów. W przypadku mojego przykładu pin INT układu PCF można podłączyć do dowolnego pinu uC. W przypadku Twojego rozwiązania trzeba się podłączyć do INT0 albo INT1 i z samego opisu wynika że takich punktów w tym uC jest tylko dwa. Co jeśli komuś komplikuje to układ? Można by rozważyć ocję zmiany...
Witam. Podepnę się do wątku gdyż także buduję obrotomierz.Jednak moja metoda pomiaru opiera się troszkę na innej metodzie . U mnie atmega88 z zegarem 20MHz mierzy okres pomiędzy impulsami z układu wejściowego a następnie wylicza prędkość obrotową . I tak np:przy 30 tyś obr/min timer zliczy 40000 impulsów wzorcowych , następnie wartość odpowiadającą...
Oprócz rozmiaru pamięci, procesory te niestety trochę się różnią Panowie xanio i waldek63 ---> zastanawiam się skąd wy czerpiecie informacje o różnicach między tymi prockami???? hmm chyba troszkę z kosmosu - tak mi się coś wydaje. A nie łaska otworzyć sobie notę aplikacyjną PDF jednego i drugiego gdzie jak byk na pierwszej stronie już można dostrzec...
Nie napisałeś. Porównaj np. DS od ATMega88 i ATmega8. Możesz budzić timerem co powiedzmy 20ms i sprawdzać, czy klawisz naciśnięty Albert
https://obrazki.elektroda.pl/6021352700_... https://obrazki.elektroda.pl/6921159500_... https://obrazki.elektroda.pl/3416870700_... https://obrazki.elektroda.pl/7961253800_... https://obrazki.elektroda.pl/7601893100_... Dzisiaj przedstawię państwu dwa sejfy dla dzieciaków,...
Atmega88 nie ma takich w ogole rejestrow: TIMSK, TCCR0! Ten kod jest poprawny. #include <avr/io.h> #include <avr/interrupt.h> #define TIMER0_INIT 175 char i; // procedura obsługi przerwania od timera TC0 SIGNAL (SIG_OVERFLOW0) { TCNT0 = TIMER0_INIT; // załadowanie do licznika wartosci poczštkowej PORTB ^= (1<<PB1);...
Jednak dla Atmegi328 z 16MHz wychodzi, że Timer2 może pracować najwyżej na 61Hz co może być za duże dla serw które lubią 50Hz. Gdyby 61Hz było "najwyżej", to mógł by pracować niżej a więc na 50Hz. Poza tym serwa nie wymagają konkretnie 50Hz. Zdecydowana większość pracuje dobrze od 10Hz do kilkuset Hz. Objaw który opisujesz pasuje raczej do serwa które...
Witam. Potrzebuję pomocy z dostosowaniem kodu napisanego na atmegę8 na attiny13. Domyślam się że największym problemem będą tutaj timery, ale jestem w ich temacie puki co zielony, a potrzebuję koniecznie(i niestety pilnie) odbiornika IR który zmieści się i będzie działał na attiny13. Jak całość kodu działa rozumiem(jest świetnie opisana komentarzami)...
Dzięki za pomysły. A motylem, co to? Ot takie bździewka oferuje TVMango, Allegro i straganowi sprzedawcy. W kształcie to właśnie przypomina motylka. Po bokach elektrody samoprzylepne - przewodzące a pośrodku elektronika sterująca i zasilanie. One są jednokanałowe. To stare co mam z niego transformatory jest 2 kanałowe - 4 elektrody na przewodach. A...
W skopanym "flow' programu. Na pierwszy rzut oka widać, że dwa wystąpienia uart_getc (i to z różnymi zmiennymi) oraz pętla while w ostatnim else są podejrzane. Generalnie program ma odebrać jedną zmienną, i czekać aż przyjdzie druga (w głównym programie wpisuje potem wartość drugiej zmiennej w rejestr ocr, a w który określa pierwsza zmienna, tak realizuje...
A po co włączasz przerwania skoro nie napisałeś procedur ich obsługi? I dlaczego najpierw ładujesz część młodszą do OCR a potem starszą, a nie na odwrót jak to zalecają? I dlaczego dziwisz się, że kod potem nie działa?
Witam, pracuje nad małym systemem modułowym do sterowania w domu. Na ten moment mam : -klawiaturę Matrix do wpisywania kodu do drzwi (atmega88pa) -manipulator do temperatury (atmega164pa) -czujnik temperatury (attiny84a) Zamówiłem wszsystkie części i własny projekt płytek pcb. Klawiatura działa bez żadnego problemu, program wgrywa się i działa w 100%...
... mówiąc ogólnie - musisz liczyć czas w pętli ... ... a najlepiej odmierzać czas timerami i używać przerwań ... to jest wielowątkowość (choć to nadużycie tego terminu). Mam wrażenie, że jest to kilka wątków jednocześnie, których on nie jest w stanie 'pojąć' :) Nie On tylko programista, bo to od niego zależy jak napisany jest program :) A to efekt...
Ustawiałem atmegę na 1MHz (8MHz wewnętrzny i dzielnik na 8), ale to było za mało by I2C działało mi na częstotliwości 100khz. Pytanie, czy potrzebujesz takiej szybkości. 100kHz to prędkość graniczna. Jeśli to typowy interfejs I2C (a nie np. pokrewny SMBus), to nie ma ograniczenia w dół. Powinno działać też prawidłowo np. przy 1kHz. Chyba że to wymagająca...
Podczas debugowania atmegi88pa natknąłem się na dziwny problem, program działa normalnie i nagle wraca do pierwszej linii w funkcji main() To chyba jednak się resetuje. Ustaw sobie breakpointa w kodzie przed maim, będziesz wiedział czy procek przez niego przechodzi. Z jaką optymalizacją debugujesz? Przejdź na O1 i sprawdź czy problem się powtarza....
Witam. Chciałbym zrobić sterownik oświetlenia (a właściwie to budzik, stopniowo rozjaśniający światło(regulacja fazowa), sterowany na pilota RC5) w pokoju. Koncepcja jest następująca - układ dzielę na trzy części: -część zasilająca (trafo,mostek gretza,7805 + detektor zera na transoptorze LTV814) -część wykonawcza (wkładana do puszki elektrycznej, dostaje...
z tym wpisaniem wartości stosu najpierw do SPH a potem do SPL to koledze Nawigator może troszeczkę pomyliło się z taką koniecznością ładowania 16bitowych liczników do timera w czasie działania - gdzie jest rzeczywiście potrzeba zachowania odpowiedniej kolejności, ale przy stosie nie ma takiej potrzeby cli jest teoretycznie nie potrzebne przed inicjalizacją...
Podłączałem dwa różne serwa, już bez tranzystora (bo w sumie to tylko sygnał i coś mi się powaliło z tym tranzystorem ;) ), bezpośrednio na pinie PB0. Na oscyloskopie sygnał wygląda poprawnie, a serwa nie są w żaden sposób blokowane mechanicznie, więc nie wiem gdzie może leżeć przyczyna problemu. Tu jeszcze dorzucam kod na mikro: [code[syntax=c] #define...
Witam. Jestem obecnie na etapie budowy stacji pogodowej. Po pokonaniu problemów ze stacją bazową, nadszedł czas na budowę czujnika zewnętrznego. Będzie się on składał z mikrokontrolera AtMega88PA, czujnika SHT11, nadajnika RTFQ2 i czujnika mierzącego prędkość wiatru (kontaktron lub dioda + fototranzystor, jeszcze nie zdecydowałem). Czujnik będzie zasilany...
No to pomyśl Sherlocku :) Nie wiem jak będziesz odczytywał te przyciski. W każdym bądź razie, możesz zrobić tak, że po naciśnięciu pierwszego przycisku przypisujesz do zmiennej program wartość 1, po naciśnięciu drugiego, wpisujesz tam 2 itd... Rozbije to kod na wyodrębnioną funkcję czytania co wg mnie będzie czytelniejsze niż czytanie osobno klawiszy...
Dziękuję uprzejmie za zainteresowanie i sugestie. :-D O RS485 mogę napisać tyle, że działa poprawnie. Bez oporników (terminatorów - linia wymaga dwóch!) rzeczywiście był niezły śmietnik (kiedyś oglądałem pod oscyloskopem). Dałem trochę większe (220 omów) niż przewiduje standard, gdyż transceiver RS232/RS485 wymagał takich (w specyfikacji - nie chciałem...
Używam poniższego kodu do inicjalizacji połączenia z komputerem samochodu (według protokołu kw2000). Używam tam komunikacji USART 10400baud 8n1. Chciałem zwiększyć taktowanie do 8MHz i usunąłem programowo dzielnik fusebita CLKDIV8 zmieniając na początku funkcji main() rejestr CLKPR w ten sposób: CLKPR|= _BV(CLKPCE); CLKPR&=~ _BV(CLKPS1); CLKPR&=~...
Czemu nie działa jakieś błedy kompilatora, jak nie tak to może źle napisany kod i się przy większej optymalizacji wysypuje. Jak coś to wrzuć kod nie działający. Heh, no ok, wrzucam więc kod. Od razu jednak uprzedzam, że to jest mój pierwszy program w C i mogą występować rażące programistów błędy. Poza tym kod jest nieco rozlazły - dla mnie bardziej...
#define TIMER_ON_64() TCCR0A|=(1<<CS00)|(1<<CS01); Bity CS00, 01, 02 są w TCCR0B. WGM02 też jest w TCCR0B a WGM00 i 01 w TCCR0A. P.S. W ATmedze88
Witam. Schemat całego układu: http://obrazki.elektroda.net/75_12533785... Przed położeniem uC do snu ustawiam stany wysokie na bazach tranzystorów (zmierzyłem prąd samych tranzystorów, poniżej 0.00uA bo miernik nie chwyta). Ustawiam wszystkie pozostałe piny w stan wysoki oprócz: pinów przycisków S1-S4 które mają być masą dla pinu przerwania...
Witajcie. Zawsze mam kłopoty z konfiguracją Timerów i dopalenie PWM. Aktualnie mam problem z Atmeg128 ale pytanie dotyczy ogólnie uC. Otóż mam kilka pytań. 1) Zauważyłem, że na jednym timerze można skonfigurować max 2xPWM sprzętowy. Czy mam rację? 2) Przeglądając datasheet Atmega128 widzę wyjścia PB5(OC1A), PB6(OC1B),PB7(OC1C). Czy ta jedynka OC 1 A,B,C...
Dzięki, co do tego co on ma robić, to nie tylko przód tył po piachu ;) Generalnie ma to być platforma mobilna do której będzie można dołączać inne moduły realizujące różne zadania, między innymi czujniki itp. do planowania trajektorii, mapowania itp. Dlatego pierwszy etap to sama platforma i elektronika konieczna tylko do wykonywania poleceń związanych...
Witam! Mam problem (a właściwie 2) z moją lampą. Zmontowałem lampę led wg. własnego schematu. Komunikuje się ona z tabletem/komputerem za pośrednictwem Bluetooth HC-06. Układ działa poprawnie lecz pojawił się problem z zawieszaniem. Mianowicie po ok 30-60min główny program zawiesza się (żadne dane po USART nie są wymieniane). Niestety nie udało mi się...
Witam Potrzebuję zrobić zegar na ATMEGA8535 i nie mogę uruchomić pracy asynchronicznej. Kwarc zegarkowy podłączony do XTAL1/2. Program wstępny poniżej. Analogiczny program (ze zmianą ASSR.5 = 1) dla ATMEGA88 działa poprawnie. Proszę o pomoc. Pozdrawiam Jacek Program napisany w "BASCOM AVR" [syntax=basic4gl][/syntax] $regfile = "m8535.dat" $crystal =...
W takim razie: w jak sposób i w którym miejscu następuje podłączenie głównego pliku irmp.c z poziomu irmp.h? W źródłach IRMP są przykłady jak używać z konkretną rodziną procków. irmp_get_data Powyższy plik mógłby być po prostu bazą dla twoich funkcji. Najważniejsze oczywiście jest to, że irmp.c musi być poddane kompilacji a potem linkowaniu. W tej...
Witam Czy ktoś podpowie jak ustawić rejestry ? Jeśli konfiguruje PWM w Bascomie za pomocą Config Timer1... to działa OK Taktowanie 8Mhz, preskaler 1, tryb 8 bitowy PWM ale częstotliwość mam około 16kHz a przy trybie 9 bitowym około 8Khz co jest normalne. Ale jak ustawić PWM tak by częstotliwość była około 12kHz (oczywiście bez zmiany taktowania procka)?...
Witam, bardzo proszę o pomoc. Zrobiłem układ na Atmega32 z podłączonymi diodami do całego PortuA, oraz do PortuB Pin2 (PB2) dekoder podczerwieni TSOP31236 (testowałem też na TSOP31238). Wykorzystać chciałem bibliotekę IRMP https://obrazki.elektroda.pl/6945425800_... a w załączniku spakowany cały projekt z plikami biblioteki irmp.
Ta sekwencja którą podałeś nazywa się bodaj sterowanie falowe- jużdokładnie nie pamiętam. To co podał piotrva to jest sterowanie pełno- lub półkrokowe. Każde ma oczywiście swoje wady i zalety. Na początek proponuję uruchamiać w trybie pełnokrokowym- tak jak podał piotrva. Bo najprościej. A potem dopiero w innych trybach. Co do diod LED- anoda- dłuższa...
Próbowałeś nietradycyjnej, bo coś mnie się zdaje, że nie. Pewnie, że próbowałem i to już dawno. Jak na razie nie miałem potrzeby skorzystania z niej co nie oznacza, że tak jak ty uważam, że tylko jedna jest dobra albo najlepsza. Ja jak zwykle uważam, że trzeba umieć rozsądnie wybrać w zależności od warunków. A bajanie o delayach trwających wieki można...
If Flaga_1s = 1then To tak ma być? Trzeba zacząć oszczędzać- może Timer jednak w innym trybie? Load Timer0 , 250 W trybie przechwytywania czy porównania oszczędzamy instrukcję podstawienia. No i LCD- w bascomie jest jakaś biblioteka obsługi LCD sprawdzająca flagę zajętości LCD- pozwala to trochę oszczędzić czasu. No i może w przerwaniu tylko inkrementować...
Żadnym znanym mi sposobem nie da się wykonać na AVR pętli odczytu z portu i zapisu do pamięci tak, aby zmieścić się w 4 cyklach. Najszybciej można zrobić to w 5 cyklach: IN, ST +inkrementacja, RJMP i użyć np. timera do przerwania pętli. Nie ma różnicy czy użyje się ST czy PUSH, bo każda z tych instrukcji wykonuje się 2 cykle zegara. Można natomiast...
Wszystko (no prawie wszystko) jest opisane w datasheet'ie. Założenia jak rozumiem są takie: - procesor ATmega88 taktowany kwarcem zegarkowym 32kHz Tutaj masz datasheet do tego procesora: [url=http://www.google.pl/url?sa=t&rct=j...
Sorry za OT ale chyba nie wszyscy z was umieja czytac ale gdy po pierwszym resecie nie zadziała to się wiesza na dobre i nawet ręczny reset nie działa tylko odpięcie zasilania pomaga. Jak to sie ma do waszych wszystkich dywagacji ? Z drugiej strony sam przeszukalem manual do Atmega8 i nie potrafie odpowiedziec na to pytanie takze chetnie sie dowiem...
Witajcie moi drodzy, zgodnie za radą forumowiczów postanowiłem nauczyć się obsługi przerwań, ale coś nie chce działać. W przerwaniu chcę po prostu zapalić diodę. Wygląda na to, że wcale nie jest ono wywoływane. Tak na samym początku main włączam przerwania: [syntax=c] TCCR0A = (1<<CS02) | (1<<CS00);; TIMSK0 = (1<<TOIE0); sei(); [/syntax]...
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! Mam problem z czujnikiem do mierzenia odległości(BPU-1640IOAH12). Mianowicie nie potrafię spowodować jego uruchomienia. Sygnały które wysyła funkcja uruchom_sonar nie powodują żadnych efektów. Czy mógłby ktoś wytłumaczyć co jest nie tak w programie? Czujnik jest podczepiony pod nożkę PC3. [syntax=c]#include <avr/io.h> #include <math.h>...
Dioda jest podłączona w porządku, bo jak przyłożę do PB0 VCC i do PB1 GND to świeci. Problem jest taki, że po zaprogramowaniu i podłączeniu zasilania do układu na żadnym wyjściu nie ma stanu wysokiego. Próbowałem też z innym programem, żeby dać stan wysoki na innych wyjściach układu (PB0..5), ale po zbadaniu miernikiem wynika, że ciągle jest tam 0....
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
Przeczytaj dokładnie sobie rozdział "Watchdog System Reset" z PDF'a np od ATmega88/168/328 No tak, ja to czytałem. The Watchdog always on (WDTON) fuse, if programmed, will force the Watchdog Timer to System Reset mode. With the fuse programmed the System Reset mode bit (WDE) and Interrupt mode bit (WDIE) are locked to 1 and 0 respectively. To further...
https://obrazki.elektroda.pl/7228525200_... Witam wszystkich:) W szczególności miłośników światełek, iluminofonii, itp. Prezentowane urządzenie wyświetla widmo akustyczne w postaci 20 słupków po 16 punktów każdy. Trudno je nazwać analizatorem widma. Analizator kojarzy mi się bardziej z przyrządem pomiarowym, chociaż wyświetlanie częstotliwości...
Witam, po przeczytaniu książki o programowaniu zabrałem się z próbę adaptacji popularnych stacji lutowniczych RL1 z Elektroniki praktycznej do własnych potrzeb. Dodałem przyciski z profilami temperaturowymi i obsługę enkodera do zmieniania temperatury, pomiar temperatury otoczenia na DS18B20 i obsługę kolby Weller WSP80 z wbudowanym czujnikiem temperatury...
Pokazuje pliki: KPD.h #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> unsigned char KPD_KeyPressed; unsigned char KPD_LastKey; unsigned char KPD_ScanRow; unsigned char KPD_KeyDown; #define CODE_MAX_LENGTH 8 #define CODE_ACCESS_LENGTH 4 #define CODE_ADMIN_LENGTH 8 #define BUFSIZE 20 void KPD_Init(void);...
Jeden. :) I koniecznie coś trzeba dopisać, bo inaczej nie da się wysłać odpowiedzi.
Tutaj ci już nie pomogę gdyż nie korzystam z rtc. Ja do odmierzania tylko czasu jako godzin stosuje ctc timer'a 2 i to w Atmega8 ale 88 też to powinna posiadać. Odsyłam do not katalogowych. Pozdrawiam :) Ps: tranzystory to tak jak piszesz. Masz maksymalnie 4 diody każda o maksymalnym prądzie 20mA więc w sumie daje to maks 80 mA więc 100mA wystarczy....
atmega88 pomiar atmega88 eeprom atmega88 portd
bateria tablet parametr dziać bojler ariston głowica neptun
Traktorek Husqvarna przerywa i szarpie po załączeniu kosiska Światła stopu w Citroenie C3 świecą cały czas po włączeniu zapłonu