Witam Jestem początkujący jeśli chodzi o mikrokontrolery. Jakiś czas temu zaczął mnie nurtować jeden problem. Robię projekt, który robi za termometr i zegarek oraz ma klawiaturkę 4 przyciskową do obsługi interfejsu. Później ma być jeszcze dodany czytnik kart microSD. Czujnik temperatury/wilgoci ma obsługę w postaci 1wire i wykonuje pomiar co 10sek jak...
Zrób sobie najpierw obsługę jednego wyświetlacza, czyli napisz funkcje switch() {case} lub lepiej o tablicę znaków (zdaje się tak próbowałeś) Pamiętaj żeby skofigurować użyte piny jako wyjścia. Potem zrób przycisk. Na początek prosta pętla która przepisze stan przycisku na jakiś bezpośredni LED. Wciskasz, trzymasz, led się zmienia....
OK, rozumiem. Napisałem coś takiego, prosta sekwencja na liczniku do sterowania silnikiem krokowym. Przyciski zwiększają lub zmniejszają prędkość sekwencji, tylko mam taki problem. Muszę zrobić tak, aby jedno wciśnięcie przycisku powodowało przyspieszenie, potem drugie wciśnięcie przycisku kolejne przyspieszenie itd. Z tego co wyczytałem, to najlepiej...
Przy wejściu w przerwanie nie reaguje na kolejne zbocza narastające lub opadające musi zakończyć obsługę przerwania i dopiero jak z niego wychodzie podejmie reakcję na kolejne zbocze. Przypuszczalnie w tym czasie zanikają drgania styków. Procesor ma w tym czasie sporo warunków do sprawdzenia. No właśnie (dobrze kombinujesz :) ) - jeśli tak jest (dużo...
Witam! Moj problem przedstawia sie nastepujaco: Posiadam 4 czujniki cyfrowe. Zalozeniem jest wstrzymanie aktualnie wykonywanego kodu, gdy uC otrzyma sygnal z ktoregos z przyciskow i skok do petli powiazanej z tym czujnikiem. Przykladowy kod: $regfile = "M32Def.dat" $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 Config Pinb.0...
DEX - no cóż dlatego, bo taki układ już jest i nic nie da się teraz zrobić. Kolumny i wiersze są podpięte bezpośredni pod wymienione porty.. Więc bezpośrednie wykorzystanie zewnętrznego przerwania nie wchodzi w rachubę. mariuszlorenc - no wlasnie może o to mi chodzi, ale jak to się robi, bo to moje naprawdę pierwsze doświadczenie z Timerami, flagami...
Jeśli urządzenie działa tak jak chce autor, to każdy sposób wykorzystania przerwania zewnętrznego jest prawidłowy. W niektórych przypadkach podłączenie przycisku pod pin przerwania zewnętrznego jest niezbędne np. by wybudzić mikrokontroler z trybu Power Down lub Standby. Czasami nie ma po prostu innego wyjścia, ze względu specyficzne wykorzystanie...
Sciślej rzecz biorąc, likwidacja drżenia styków zazwyczaj jest realizowana na przerwaniach, jeśli nie, to korzysta ze zmiennych modyfikowanych w przerwaniu. Z tego powodu w przerwaniu (np od wejścia INT) nie można takiej funkcji użyć. Na ARM jest na to proste lekarstwo zwane priorytetami przerwań, na AVR (poza najnowszymi) prostego rozwiązania nie ma....
AT Mega32L zasilany z baterii litowej 3,6V. Taktowany zegarem z zewnętrznego rezonatora kwarcowego 2,4MHz. Wejście przycisku i przerwania podciągnięte zewnętrznym rezystorem 100k. Podłączony wyświetlacz LCD od Nokii. Nie chcę stosować wyłącznika zasilania tylko wprowadzać procesor w tryb powerdown i budzić go przerwaniem INT0. Niestety działa prawidłowo...
Witam Od kilku dni bawię się (jak narazie) w programowanie ATMEGA32 i trafiłem na problem z przerwaniem zewnętrznym Interrupt 0. Dopiero zaczynam, więc mój problem może okazać się lamerski, więc z góry przepraszam. Napisałem coś takiego: #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> //#include <avr/signal.h>...
chcialem zrobic budzenie procesora za pomoca ktoregos z 4 przyciskow. schemat jest podobny do tego (tylko tutaj jest wykorzystany attiny2313 ja chce atmega32): Przed wejsciem w tryb powerdown chcialem wystawic na przyciski stan niski, wtedy bym mial mozliwosc wychodzenia z powerdown za pomoca przerwania wykonywanego po wykryciu stanu niskiego na int0....
witam mam problem z wybudzeniem tego proca. przycisk jest podłączony pod int0 proca w programie głównym przycisk robi za enter ale jak się go dłużej trzyma to program skacze do powerdown i teraz nie mam pojęcia jak go wybudzać tym samym przyciskiem używając przerwania ? Do If Fun = 6 Then Fun = 5 If Fun = 255 Then Fun = 0 If Flaga = 1 Then Select Case...
Schemat pod piny sa podlaczone przyciski, które przed normalnie dzialaly
delayX to procedury opóźniające w przerwaniu akurat ma służyć odczekaniu do wygaśnięcia drgań styków przycisku. Według sugestii zamieszczam program bez definicji rejestrów i trybu SPECIAL, żeby nie zaciemniać, a to akurat nie ma wpływu na działanie. .CSEG ; początek segmentu programu .ORG 0x00 ; wektor przerwania od resetu rjmp Reset .ORG 0x04 ; wektor...
A na koniec pamiętaj jeszcze o drganiach styków, które wywołają przerwanie kilka razy: Choć dla zgaszenia diod nie będzie to miało znaczenia, ale zapewne to dopiero początek Twojego projektu :) No i jeszcze pull-up włącz bo na schemacie nie widzę rezystorów podciągających. EDIT. pull-up już masz tylko komentarz nieco mylący.
Najrozsądniej jest zwykle badać stan przycisków w przerwaniu timera, np. tym samym, którego używasz do obsługi wyświetlacza. Popatrz np. tu:
Witam forumowiczów, Natknąłem się na pewien problem, z którym nie wiem jak sobie poradzić. Sprawa dotyczy nieprawidłowej obsługi przerwania INT0 podczas wykonywania komend sterujących wyświetlaczem LCD. Do Atmega32 podłączone są: - standardowy wyświetlacz LCD, - źródło impulsów (dokładniej jest to liniał cyfrowy), - przyciski. Impulsy wprowadzone na...
Może faktycznie szum nałożony na zbocze jest tu przyczyną wielokrotnego wywołania przerwania przy jednym impulsie. W poniedziałek przyjrzę się dokładniej temu zboczu i spróbuje coś zaradzić. Ale z drugiej strony gdyby tak było, to dlaczego impulsy zliczane są prawidłowo wtedy gdy program okrojony jest do minimum? Jaka jest szerokość impulsu? Maksymalna...
Jeśli przyciski zwierać będziesz do masy, to nie trzeba. ATmega ma wewnętrzne rezystory podciągające. Trzeba pamiętać by je jeszcze włączyć. Z przerwaniem też można te przyciski ożenić, za pomocą prostej drabinki diodowej. Zajrzyj do dokumentacji zestawu ZL3AVR.
Testuj przycisk w przerwaniu timera i np. ustawiaj znacznik zmiany czujnika. W pętli głównej testuj znacznik i po ustawieniu wyświetl następny czujnik i wyzeruj znacznik.
Akurat do tego kompilator się nie przyczepił. Poprawiłem kilka szczegółów związanych ze zmianą typów zmiennych i warninga nie ma żadnego (poza jedną nieużywaną zmienną) [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <string.h> #include <avr/eeprom.h> #include <stdlib.h>...
Witam wszystkich, Na wstępie od razu napiszę ,że czytałem już wiele na ten temat na avrfreaks i tutaj też ,jednak nie znalazłem odpowiedzi na swoje pytanie .Jeśli dubluję jakiś temat przepraszam ,ale uwierzcie że zadałem sobie troche trudu by poszukać w necie i samemu to rozwiązać. Piszę w C ,na darmowy kompilatorze winAVR ,mam zestawik z BTC .Testuje...
Tak negatory to IC2. Służą one do sterowania silnikami DC poprzez mostki STA434A. Jeśli zabraknie prądu to silniki przestaną pracować i w zasadzie obojętne jest jaki będzie wówczas stan na wyjściach negatorów. Nie wiem też czy mostek pobierałby wtedy prąd czy nie, ale z tego co zrozumiałem to sam negator by pobierał dla utrzymania takiego stanu? Jeśli...
Autor zastanawiał się, jak zaimplementować w projekcie interfejs bardziej elegancki, niż zwykle stosowane przyciski. Częściowo zainspirowany materiałami wideo umieszczonymi przez D. Jones'a na stronie EEVBlog, postanowił zainteresować się pojemnościowymi przyciskami dotykowymi. Zwykle jednak wadą tego typu rozwiązań jest konieczność wykorzystania dedykowanych...
Trzeba zacząć od tego że ustawione przez Ciebie przerwanie co 16ms jest niepraktyczne. Wygodniej liczyłoby się 5ms i przydałby sie do enkodera, albo nawet 10ms w ostateczności do przycisków. Przypuśćmy, że ustawiasz przerwanie na 5ms. W nim ustawiasz tylko flagę i wracasz. W pętli głównej widząc ustawioną flage możesz sobie spokojnie dodawać po 5ms...
Panowie, Panie potrzebuję pomocy bo siedzę i siedzę i nie mogę sobie dać rady z kodem BASCOM. Jestem początkujący, a raczej raczkujący w AVR, programowaniu itd. :( Próbuję zbudować sterownik do pokoju który ma wykonywać: -sterowanie światłem (8x) -sterowanie piecem/kotłem gazowym (temperatura noc i dzień-dwie różne temperatury) -każdy przycisk ma dwie...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Buduję pewien układ zawierający dwa mikrokontrolery ATMega328. Nazwijmy je A i B. Mikrokontroler A ma kwarc 16MHz, a mikrokontroler B ma kwarc 8MHz. Mikrokontrolery są połączone przewodem 4-żyłowym o długości ok. 30cm, z których dwie żyły to zasilanie i masa, trzecia żyła łączy B0 mikrokontrolera A z C4 mikrokontrolera B, czwarta żyła łączy B1 mikrokontrolera...
Tak, przycisk mam tak podłączony, aby nie zrobić zwarcia podłączając przycisk pod przerwanie INT0 . Nie rozumiem, dlaczego miałabyś zrobić zwarcie. Po załączeniu zasilania wszystkie piny mikrokontrolera są ustawione jako wejścia, a Ty nie zmieniasz konfiguracji pinu 2 portu D na wyjście, więc tam zwarcia żadnego być nie może. Dlatego podpinam przerwanie...
Witam, Wiem, że RC5 ten wątek był poruszany wiele razy na forum, ale chcę sie nauczyć programować w C, wiec chciałem wykorzystać odbiornik podczerwieni z mojego zestawu(ZL3AVR) i napisać protokół do RC5 Pracuje na kwarcu 16MHz i ATmega32. Odbiornik podczerwieni podłaczylem do PD3 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h>...
Rozwiązanie układowe wygląda w taki sposób, że pod porty PORTA, PORTB i PORTC mam podłączone drabinki rezystorowe r2r. Do pinu PD2 doprowadzany jest sygnał synchronizujący z detektora zera sieci. Do pozostałych PIND mam podłączone przyciski. Na podstawie zliczonych przerwań uC powinien generować trzy przebiegi prostokątne pierwszy w fazie z sygnałem...
Sporo tego ( obsługa SD, PCF8563 + menu do ustawiania daty, obsługa PCF8574 w przerwaniu INT1 )- ale nie ma problemu - zmieniła się tylko zawartość podprogramu Pomiar była taka, jak w pierwszym poście oraz wyłączyłem w wyświetlanie na LCD tych wartości wskazań z DS18B20, oczywiście dostosowałem pozycje wyświetlania do LCD 4*20 - załączniku spakowany...
Przesądy... ;) Nie "jak najszybciej" a "odpowiednio szybko"; np. jedyne w systemie przerwanie zgłaszane co 100 us może być obsługiwane przez 99 us i wszystko będzie ok. Toć napisałem: Dlatego z reguły przerwania powinny wykonywać się możliwie jak najszybciej ... Wiem, że mikrokontroler (w moim przypadku Atmega328) nie może wykonywać dwóch fragmentów...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Witam, odgrzebałem swój projekt odbiornika podczerwieni, który działa świetnie, rozpoznaje adres i komendy pilota. Wszystko obsłużone jak należy. Problemem jest wykrycie przytrzymania przycisku. Nie zrobiłem tego odrazu a teraz zaczęły się schody. Napisałem fragment odpowiedzialny za obsługę przytrzymania jednak nie działa :( Projekt na Atmega328p,...
korzystając z rozpoczetego ważkiego tematu , spytam czy można uśpić mikrokotroler 'powerdown'-em i wybudzić go jednym i tym samym przyciskiem pisząc w bascomie avr ? Za wszelkie informacje , może nawet przykłady serdecznie dziękuję. Tak jak już to wcześniej napisano z trybu POWERDOWN można budzić zewnętrznym przerwaniem a to przerwanie odpowiednio...
Co do procedury opozniajacej w przerwaniu: dałem ją tam aby układ obudził się po wcisnieciu przycisku ale nie zdarzył wylapac drugi raz, ze przycisk wcisniety i wykonac drugiej funkcji danego klawisza. Każdy klawisz w moim układzie ma miec dwie funkcje: budzenie układu oraz drugą różną dla każdego przycisku.
Witam forumowiczów. Siedzę od jakiegoś czasu przy zegarze PCF8583 i VFD CU20029SCPB-25A. Napisałem do niego obsługę 2 termometrów na DS18B20 i pilota RC5. Wszystko działa poza, wybudzeniem procesora z POWERSAVE. Nie mogę sobie z tym poradzić. Nie mogę znaleźć konkretnego przykładu. Po naciśnięciu przycisku na pilocie ma się uśpić Atmega, i tak robi....
Witam, chciałbym przedstawić moją konstrukcję która powstała w zeszłym roku i teraz publikuję ją Wam. Jest to uniwersalna płytka bazowa posiadająca następujące włąściwości: Procesor ATMEGA32A z kwarcem 8 MHz Rozmiar pcb identyczny jak wyświetlacza 2x16 znaków HD44780 (można je ze sobą skręcić. Wyprowadzenie złącza do wyświetlacza. Wbudowany zegar RTC...
Witam, jest to mój pierwszy post więc proszę o wyrozumiałość :) Problem jest następujący - chciałem napisać sobie programik mierzący napięcie(potem bedę mierzył poziom napięcia na akumulatorze) więc zaczełem od napisania programu z ADC w trybie FREE RUN, czyli jak raz go uruchomilem to calyc czas wysyłał wyniki konwersji przez rs232, następnie postanowilem,...
Witam. Napisałem program jak w załączniku (progx.txt). Do portuD1-2, 4-7 przyłączone są przyciski. Mają one za zadanie zmianę napięcia na drabince r2r, zmianę liczby okresów oraz przesunięcia fazowego względem detektora zera. Poniżej przedstawiam rysunek ilustrujący działanie programu: Problem polega na tym, że te przebiegi nie są przesunięte względem...
Mam problem z przełączaniem bitów Założenia programu są następujące Program przez określony czas ma włączyć 2 diody oznaczone Pompka1 i Pompka2 oraz wyłączyć Napowietrzacz po upływie czasu ma przełączyć tz: wyłączyć Pompka1 i Pompka2 oraz włączyć Napowietrzacz po upływie drugiego czasu znowu ma przełączyć. Niestety program nie działa dobrze Diody działają...
Rezystora nie ma na schemacie ale fizycznie go wlutowalem i dalej nic. Najczesciej wyzwalaja sie przyciski klawiatury lub zewnetrzne przerwanie. W programie wlaczone pull-up.
To teraz do pełni szczęścia brakuje delay'a, którego znajdziesz w wielu programach :] A tak poważnie, to musisz eliminować drgania styków trochę inną metodą: [url=]Informacje A tutaj jest praktyczna i bardzo sprytnie zrobiona aplikacja BlueDraco: [url=]Link Nie zrażaj się tym, że to dla ARMa. Użyj T0 z preskalerem w trybie CTC i przerwaniem od porównania....
Witam! znalazłem wreszcie chwile czasu,żeby pobawić się serwami modelarskimi i Atmegą 32. Napisałem program który powinien realizować następujące funkcji: -ustawić serwo w pozycji zadanej -po zwarciu pinu PB0 do masy,wykonać obrót do odpowiedniej wartości(w stopniach) - po zwarciu pinu PB1 do masy,wykonać obrót w drugą stronę do odpowiedniej wartości...
Witam Procesor ATmega328 Napisałem krotki programik ukazujący na wyświetlaczu liczbę zmian stanów po naciśnięciu przycisku, w którym nie został zaimplementowany debouncing. [syntax=c] typedef enum {wyzwalanie_zboczem,wyzwalanie_poziomem} TRYB; inline void ustaw_wyzwalanie_zboczem(void) { EICRA |= _BV(ISC10); } inline void ustaw_wyzwalanie_poziomem(void)...
napisałem program zmieniłem taktowanie uc na 8MHz wgrałem program jedyne, co działa to obsługa przycisków Dodano po 24 Problem najpewniej występuje w tej części programu: Dodano po 3 66 osoby widziały ten post, ale tylko jedna odpowiedziała. Wiesz dlaczego? Ponieważ Twój kod i schemat są nieczytelne. Nadal to jest problem? Jakie mosfety włączają zasilanie?...
To nie jest takie proste... Wez sobie wyjscie INT z tego PCFa, podłącz do inta w procku. Procek bedzie sobie odczytywal stany z wejsc PCFa, i ustawiał np. odpowiednie flagi wcisnietych przycisków...Reszte juz łatwo dopisać do programu, bo zamiast debounce itp itd piszesz sobie IFa ktory sprawdza flage. Sposób szybki i skuteczny. Poza tym zastosowanie...
AVR Studio 4 + WinAVR-20100110, hex ładowany przez usb: avrdude Według mojego bardzo skromnego doświadczenia poniższy kawałek kodu powinien po wymuszeniu niskiego stanu na PD2 spowodować mrugnięcie drugiej diody: (GND-10kohm-przycisk-PD2) - przycisk (GND-1kohm-LED1-PC5) - przycisk (GND-1kohm-LED2-PD6) - przycisk #define F_CPU 16000000UL #include <util/delay.h>...
Chodzi o to że ta procedura ciągle wywołuje samą siebie (rekurencja) I właśnie o to mi chodziło żeby od nowa się zaczęła otwierając kolejno inne utwory. Program troszkę zmieniłem(przerwanie i podprogram odtwarzacz) i wygląda tak: [syntax=basic4gl]'---PROCESOR-----------... $regfile = "M32Def.dat"...
Witam Zrobiłem sobie układ, który ma na wyświetlaczu wyświetlać godzinę oraz temperaturę wody. Samą obsługę wyświetlacza jakoś udało mi się ogarnąć, natomiast mam problem przy odczycie temperatury z czujników oraz czasu z ds1302. Na początku ustawiam sobie godzinę 10:40 i to wyświetla się poprawnie, ale jak idzie odczyt z ds1302 to wyświetla mi się...
Chciałbym zrobić symulację naciśnięć klawiszy na klawiaturze PS/2 wykorzystując ATMega328 z rezonatorem kwarcowym 16MHz i interfejs PS/2 na USB. Posiłkowałem się tym opisem PS/2. Z opisu wynika, że urządzenie PS/2 (wspomniana klawiatura) musi być w każdej chwili przygotowane do odbioru danych z komputera, nawet, jak jest w trakcie transmisji do komputera....
Atmega 32, program obsługujący klawiaturę - 4 przyciski, odczytywane co 20 ms ( co któreś przerwanie timera 1), przyciski podpięte pod PC), PC0,PC1,PC2,PC3. jeżeli w programie wykorzystuję PC0 i PC1 to jest ok , ale jeśli w pętli obsługi przerwania odczytującego klawiaturę sprawdzam stan przycisków PC2 i PC3 to zgłoszenia przerwania są w każdym odczycie...
Witam Jestem początkujący w technice mikroprocesorków i w programowaniu w c. Aktualnie męczę się z wpisaniem czasu do PCF. Przy próbie zapisu w momencie kiedy sekundy równe są 5 wyświetlanie czasu zamiera. Reszta układu działa, ale czas na wyświetlaczu pozostaje w formacie 00:00:05 Wzorowałem się na : Proszę o podpowiedź co robię nie tak ? Poniżej zamieszczam...
Wymyśliłem sobie, że będę obsługiwał klawiaturę matrycową 4x4 na płytce ZL3AVR w przerwaniu generowanym podczas naciśnięcia któregokolwiek klawisza (wyprowadzenie JP13 połączone mam z INT0), siedzę nad tym bardzo długo i nie mogę doszukać się swego myślowego błędu. Pierwszy wiersz (kolumna) działa poprawnie natomiast wszystkie pozostałe działają tak,...
Witajcie, mam problem nad którym siedzę juz kilka dni i zatrzymałem się nie wiedząc gdzie tkwi problem. Otóż chcę obsługiwać zegar RTC PCF8563 po I2C - czytać i zapisywać z niego dane (datę i czas). Projekt mam podzielony na kilka plików, całość pisana w Code Blocks 10.5 i kompilowana w AVR GCC. Mam zdefiniowaną strukturę do zapisu danych z zegara do...
Witam, dołączę się do tematu aby nie zaśmiecać forum. Moim problemem jest drganie styków przycisku aby wywołać przerwanie int2. Przyciskiem włączam i wyłączam optotriak MOC3041 który z kolei załącza sterownik lampy sodowej 70W przez triak. Problem jest taki: mimo, że zrobiłem programową obsługę drgań styków to działa ono jedynie bez obciążenia - czyli...
Koncepcję mam taką: - ustawiam jeden timer żeby generował przerwanie co 20ms i w tym przerwaniu zwiekszam zmienną typu unsigned int o 1. Czyli przy wykonaniu 50 takich przerwaniń mam okres 1 sekundu. Zmienna niech będzie c. - w momencie wykrycia zamiany stanu przycisku np. B0 ustawiam zmienną określająca timer dla tego portu na wartość c+TIMEOUT, gdzie...
Dziękuje za opis ale chyba mnie to przerosło :) Zrobiłem programowy PWM, oto kod: [syntax=basic4gl] '************** Petla glowna ****************** '***************************************... Do '(at)(at)(at)(at)(at)(at) Obsługa klawiszy (at)(at)(at)(at)(at)(at) If Przycisk > 0 Then Przycisk = 0 If L1 = 0 Then L1 = 20 If Wybor = 0 Then If K_wybor...
Źle bufor masz zorganizowany, źle wystawiasz dane z tego bufora do PWM. Nie napiszę tego w C bo nie będę dawał gotowca,ale mogę napisać jak logicznie to powinno być, resztę sam musisz zrobić. W przerwaniu timera masz tylko ładować do PWMa bajt z bufora wskazywany przez wskaźnik, nic więcej nie robisz w przerwaniu, a juz na pewno nie przeładowanie bufora...
Aby to zlikwidować skorzystaj i innej metody eliminacji drgań styków a najlepiej umieść obsługę przycisków w przerwaniu... ...timera, tu jest przystępnie wytłumaczone jak obchodzić się z timerami Timery działają asynchronicznie w stosunku do głównej pętli programu, więc timer licząc czas potrzebny na przeczekanie drgań styków nie przeszkadza w pracy...
Witam Mam płytkę Loggera GPS + SD + PCF8563. Jeśli chodzi o GPS i zapis na SD wszytko jest OK. Problemem jest ( i to pierwszy raz się z czymś takim stykam ) odczyt danych z z układu PCF8563. Otóż dla pewnych wartości sekund, odczytana wartość czasu - godziny jest większa o 40 ( czterdzieści ). Czyli jeśli czas jest 22:40:02 to jest wyświetlany poprawnie,...
A na czym polegałaby realizacja w main? Bo o przerwaniach nie wiem wiele. Tutaj mam mniej więcej algorytm jak to mogłoby wyglądać. Na początku był pomysł wybierania opcji po konkretnej ilości wciśnięcia przycisku. A teraz myślę, że łatwiej byłoby zrobić coś takiego: Tylko gdy zagnieżdżę pętle if, w pętli if to już mi nie łapie. Jest jakaś opcja, żeby...
Zastosowałem powyższa poprawkę, działa poprawne z tym, że prędkość silnika zależy od tego ile razy wcisnę przycisk... A ja bym chciał zrobić funkcję, która rozpędzi silnik tzw. soft start. Rozpędzasz silnik a zaczynasz od PWM 255? Pewnie źle skonfigurowałeś timer do sprzętu, zmień ustawiania i przebieg PWM bedzie zanegowany. Zero to stop (nie do końca...
czy ktoś byłby mi w stanie pomóc w ustawieniu przerwania na int1 urzywająć timera1 ? ponieważ nie radzę sobie z ustawieniem tego 16 bitowego timera. ogolnie przerwanie miało by wyłączać silnik jesli zostanie wciśniety przycisk bądź krancówka
Uzupełniłem bibliotekę do sterowania silnikiem o komentarze, mam nadzieję, że teraz będzie dokładnie wiadomo, o co mi chodzi. [syntax=c]#ifndef STEPPER_H_ #define STEPPER_H_ #define TURN 400 //ilosc krokow na obrot silnika #define MAX_DELAY 255 //maksymalna wartosc opoznienia miedzy krokami #define MIN_DELAY 5 //minimalna wartosc opoznienia miedzy krokami...
Witam, potrzebuję wykonać urządzenie, które będzie załączane przyciskiem a odłączane przez Atmegę. Założenia są takie: po naciśnięciu przycisku - atmega włącza się, wykonuje program i rozłącza układ od zasilania. Ważne jest aby atmega nie była uśpiona ale wyłączona. Urządzenie będzie robić jeszcze parę innych rzeczy, będzie miało też podłączone moduły....
Witam, zbudowałem klasyczny zegar, tak jak w temacie napisałem na ATmega32, Chińskim module z układem DS1307 i z jakąś pamięcią na I2C której nie używam, czas pokazywany jest na wyświetlaczu LED. Wcześniej testowałem sobie to wszystko z wyświetlaczem LCD 2x16 HD44780 wszystko śmigało mi super. Po dodaniu LCD i multipleksowania zegar po kilku, kilkunastu...
Witam Mam problem z zegarem na lcd. Wyświetlacz mi działa. Działa nawet zegar, lecz jest on napisany bardzo łopatologicznie i używa, delaya, a to nie jest wg mnie najlepszym pomysłem. Chciałbym,żeby zegar wyliczał sekunde z zewn kwarca 32.768 kHz. Tak podobno najlepiej. Poniżej przedstawiam program, który aktualnie używam. Próbowałem wklejać proste...
Witam Mam problem z obsługą przerwań w moim programiku. Niby wszystko jest ok a jednak coś nie działa. Nie wiem czy coś, źle deklaruje czy jak, już nie mam żadnego pomysłu. Umieszczam kod (trochę rozbudowany :/) i drugi kod na którym wszystko mi działa. Dołączam także schemat #include <avr/io.h> //dostęp do rejestrów #include <inttypes.h>...
atmega32 tyle co sie juz zorientowalem to: ISR(INT0_vect) { } wówczas zmieniam pind2 posiedzialem poczytalem i zadzialalo
skorzystam jednak z wejścia analogowego ATmega32 i czujnika pt100, ale wciąż mam problem z przerwaniami :/ nie mam zielonego pojęcia, jak w C rozwiązać problem odświeżania wyświetlacza. Znalazłem gdzieś podobny przykład, który przerobiłem, ale mimo wszystko nie działa. // Pliki naglowkowe #include <avr/io.h> #include <avr/interrupt.h> #include...
Podaj typ obudowy procka oraz nr pinu (z płytki, nie ze schematu), do którego podłączyłeś W4 ATMEGA32A TQFP, nóżka 31 (PA6) Jeśli robisz coś w tym stylu Kod: portB=0b11111110; if (portb = 0b01111110) { } Jak już coś to sprawdza się raczej PINB a nie PORTB. Proponuję spróbować zmienić kolejność, np.: Kod: ... W4_PORT &= ~W4; W1_PORT |= W1; W2_PORT |=...
Kolego na początek sobie zobacz mój kod, który tam do testów sobie nabazgrałem. Jeden TIMER1 chodzi jako PWM, częstotliwość ponad 30 kHz. Drugi Timer0 generuje przerwania(tryb CTC) co 125 us, czyli z f 8kHz, i w nim odczytuje próbke i wrzucam na wypełnienie PWMa z timera1. Wyzwalam sobie przyciskiem, i zaświecam diodkę na czas odtwarzania. Oczywiście...
Problem ze zmianą nazwy pliku rozwiązałem - oczywiście należy pamiętać, że nazwa pliku może być ośmio znakowa. W kodzie dodałem: Plik = "temDD_MM" + ".txt" Mid(plik , 4 , 5 ) = Data_plik oraz w odczycie czasu Data_plik = Bcd(dday) + "_" + Bcd(mmonth) oraz zmieniłem wpis zapisu Open Plik For Append...
Najprawdopodobniej zapisujesz kilka razy kazdy wynik. Jaka jest częstotliwość badanego sygnału? Ile danych uzyskujesz w ciagu jakiegoś czasu np. 1ms? Zgadza się wszędzie teoria z praktyką? Jest to przebieg z LM555 z kondensatorkiem na wyjściu (nie jest trójkąt ale nie o to chodzi). Pokazałem fragmenty kodu, program obsługuje po pierwsze odległości...
Witam. Już mnie krew zalewa. Nie potrafię sobie poradzić z problemem. Prawdopodobnie ktoś szybko znajdzie błąd, ale ja już nie mam siły do tego. Problemem jest wybudzenie mikrokontrolera z power_down przez przerwanie zewnętrzne INT1. INT0 działa bez problemu, natomiast nie potrafię zmusić do tej czynności INT1. Celem jest wybudzanie mikrokontrolera...
[syntax=basic4gl] $regfile = "M32def.dat" $crystal = 16000000 '************************* WYSWIETLANIE-porty ********************************** Lcd_port_ddr0 Alias Ddrb Lcd_port1 Alias Portb Lcd_port_ddr1 Alias Ddrb Lcd_rs Alias Portb.lcd_rs_number Lcd_reset Alias Portb.lcd_reset_number Lcd_cs Alias Portb.lcd_cs_number Lcd_sck Alias Portb.lcd_sck_number...
Nie chce mi się analizować zbytnio tego kodu, z powodu rażąco rażących błędów... Na pierwszy rzut oka delay-e zamiast wszystko oprzeć o przerwanie jakiegoś timera... Po drugie, jakoś tak dziwnie napisany switch?... W książkach każą używać klamer o ładnych kształtach "}" "{" wokół kodu w case o ile jest w nim więcej niż jedna instrukcja... Po trzecie,...
Witam wszystkich. Postawiłem sobie za cel, stworzenie projektu sterownika silnika krokowego za pomocą mega32. Założenia są takie odczytując przyciski z klawiatury generujemy odpowiedni efekt. Jak wiadomo układ L298-7 działa na zasadzie podania 3 sygnałów Lewo/Prawo, półkrok, krokowo oraz CLK. I tu powstaje problem :) Otóż przyjmijmy że za pomocą przycisku:...
Napisałem kod dla zegara cyfrowego w Bascom. Ogólnie działa jak należy. Mam tylko problem przede wszystkim z budzikiem. Chcę aby podczas alarmu naciśnięcie przycisku 1(PORTD.0) wyłączało alarm(chodzi o sam dźwięk). Program nie reaguje. Nie mam pojęcia czy jest to wina tego, że nie nadąża z wykonaniem polecenia (za długie przerwania?) 2) Aktywowanie...
Dzień dobry! Mam taki o to problem, przerzuciłem notę ale nie mogę jakoś ogarnąć jak uruchomić drugi timer 8 bitowy, przykładowo: Proszę pamiętać o używaniu znaczników syntax . Opcja Listing kodu . - arnoldziq
A, to jednak niezupełnie zrozumiałem. Sterowanie polega na tym że przyciskiem na przerwaniu 2 zmieniasz sekwencję (i kierunek?) a na przerwanie 1 i 3 przychodzi ?( DIR) i STEP. To jeśli tak to po wciśnięciu przycisku zmieniającego kierunek (krok, półkrok?)musisz stopniowo zmieniać szybkość impulsów podawanych na uzwojenia prawie aż do zera. Zmieniając...
Witam ponownie, Dziękuję za odpowiedzi, bardzo mi pomogły - zmniejszyłem rozmiar zmiennych, przez co zmniejszyłem czas przerwania (przynajmniej taką mam nadzieję), rozbudowałem trochę program. _delay_ms(40) stosowałem żeby przycisk po zmianie stanu nie "iskrzył" Niestety problem znów się pojawił: Program nie wchodzi do pętli while, gdzie warunek jest...
Podepnę się do tematu. Wykonałem projekt trackloggera rejestrującego dane gps i zapisującego je na karcie SD. Całość wykonałem na atmedze644 i śmiga bardzo dobrze. Pragnąłem dalej rozwinąć ten projekt i podłączyć wszystko do atmegi32, dodając jeszcze wyświetlacz. Podczas testów zmienionego pod atmegę32 kodu zaczęły się dziać dziwne rzeczy. Z gpsem komunikuję...
Witam ponownie po krótkiej przerwie. Ukończyłem wstępny schemat, projekt płytki również już powstał jednak opublikuję go dopiero po sprawdzeniu działania wszystkich bloków funkcyjnych, co powinno nastąpić w ten weekend (taki plan, ale nic pewnego). Założenia co do płytek i rozmieszczenia elementów: - dwie dwustronne płytki drukowane; - jedna płytka...
No do Twego robocika oczywiście chylę czoła;) Parę rozwiązań na pewno się przyda;) Wracając do sprawy, znalazłem myszkę i wymontowałem kółko wraz z napędem. Czy transoptor, który zastosowałeś w prezentowanym robocie jest szczelinowy? Myślałem, że jego nazwa pochodzi z wyglądu: Z tego co widzę to masz go skierowanego po prostu ku paskom. W takim razie...
Co do procka to LordBlick ma racje. W LV wywal tą strukturę sekwencyjną i te "prymitywną synchronizację". Daj lepiej w zwykłej pętli while odczyt i zapis. Jak wejdziesz w przerwanie ustaw flagę informującą procke o wysłaniu danych po wyjściu z przerwania. Procek wychodzi z przerwania i wysyła info do LV. Jak coś wpiszesz do rejestru to wyślesz, LV odbierze...
Tak więc przerobiłem kod tak jak mówiliście i wygląda teraz tak: [syntax=c] #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> struct keyboard { int lastKey; int isPressingNow; int numberOfKey; } k; volatile int interrupt; void init() { DDRA = 0xFF; // set Port A as output DDRB = 0xF0; //...
Witam Od pewnego czasu zmagam się z problemem odbioru danych przez procesor ATmega32 w kodzie Menchester. Opisze w skrócie jak działa poniższy układ. W przerwaniu (tryb CTC) timera 0 znajduje się funkcja obsługująca trzy wyświetlacze LED (wspólna Anoda) oraz funkcja skanująca klawiaturę. Katody wyświetlaczy podłączone są pod PORTB, anody pod piny PD5,...
A czy ktoś byłby w stanie zamieścić kod jak rozwiązać na timerze problem płynnego wyświetlania czasu przy jednoczesnej obsłudze zegara i czujnika temp. ?? Proszę bardzo, oto przykładowy kod namazany przeze mnie kilka lat temu, z użyciem przerwania INT1:
Witam, Mam mały problem. Pewnie za bardzo kombinuje ale może pomożecie. Mianowicie chce mierzyć czas przejazdu pomiędzy bramkami. Wykorzystuje Atmega32 (bo taką mam na płytce testowej) a docelowo ma być Atmega8. Czas startu i mety wykonuje za pomocą przycisku na przerwaniach INT. Niestety program nie liczy mi czasu tylko "coś" sam sobie liczy max do...
W kodzie jest sporo błędów. Nie do końca jestem pewien, czy rozumiem, o co chodzi, ale jeśli przerwanie INT0 jest od przycisku, to nie ma prawa działać poprawnie, a przyczyna efektu, który obserwujesz, leży w operacjach na zmiennej b. Takie przerwanie po wystąpieniu musiałoby być blokowane przy pomocy timera na jakieś 30 ms, co jest znacznie bardziej...
Koledzy, poniżej kod. Zauważyłem poważny problem. Timer1 mi się sypie zanim dojdzie do 0. Tzn, nagle, zanim upłynie zadany czas, uC zwiesi się i przestanie wykonywać pętlę Do ... Loop until. Nie wejdzie w stan Powerdown i nadal będę mógł wywołać przerwanie Int0 - czyli zawiesza się w pętli Do...loop. Zdaje się, że nieszczęsne Wait 1 wewnątrz tej pętli...
Witam serdecznie mam mały kłopot z obsługa przycisku KEY3 jeśli nacisnę klawisz sw3 to zmienna powinna zmienić wartość na 1,a warunek do obsługi klawiszy KEY2 i KEY1 powinien być spełniony, niestety nie działa :([syntax=c]/* * main.c * * * */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define KEY1 (1<<PB0)...
Pierwsza część programu Dodano po 8 no i druga się nie mieści, więc wrzuciłem do pliku tekstowego.
Witam Po raz pierwszy ( lepiej późno niż wcale ) wykorzystałem wyjście CLKOUT układu PCF8563. Oczywiście podciągnąłem przez 10K do VCC. Dzisiaj po pierwszym kilkugodzinnym braku prądu, rano zegar był wyzerowany. Podejrzewam, że to przez podciągnięcie CLKOUT do Vcc. Jeśli to jest to, to może wystarczy włożyć diodę np. Schottky pomiędzy wyjście CLKOUT,...
Koledzy chyba nie przeczytali artykułu zaproponowanego przez kolegę BlueDraco. Tam nie ma żadnego czekania na to czy klawisz jest stabilny a co za tym idzie zwrot informacji o wduszeniu przycisku jest błyskawiczny. Przyznaje się- nie przeczytałem-ale zerknąłem na kod tak pierwszy jak i drugi. W pierwszym przypadku -trudno się nie zgodzić. Z tym, że...
Witam Do istniejącego i działającego "urządzenie" chciałem dodać możliwość odbioru, parsowania i odesłania SMS'a zwrotnego z danymi. Cały kod: Linia1 - to wyświetla Uart_numer - Linia1 Linia2 - to wyświetla Komanda - Linia2 czyli działa OK Ale jak podepnę modem GSM ( SIM900D ) to Uart_numer jest puste, a Komanda pokazuje ( czasem ) jakieś teksty z pierwszej...
Znasz przecież operacje bitowe: skoro piny ustawiasz i zerujesz. Po prostu zdefiniuj sobie makra za pomocą #define określając, który bit, to który przycisk np. tak: przyciski za pomocą funkcji z biblioteki lub przerwań: