Witam, Używam przerwania zewnętrznego na INT0 w konfiguracji na zbocze opadające. Funkcja przerwania jest definiowana w ten sposób: [syntax=c] ISR( INT0_vect, ISR_BLOCK) { //ciało przerwania } [/syntax] Wszystko działa bardzo dobrze, oprócz jednej rzeczy. W przerwaniu wykonuje się kod, który powoduje powstanie zbocza opadającego na pinie, z którego...
Używając polecenia GETRC5 proponuję żeby wejściem sygnału z odbiornika IR był Pind.2 bo używasz INT0, linia konfiguracji powinna wyglądać tak Config Rc5 = Pind.2 (czyli pin 6 uC). Uruchom program najpierw w tej konfiguracji, a później wprowadź inne zmiany. Według pomocy AVR możliwa jest zmiana wejścia, zajrzyj do niej.
Witam, Przechodząc szybko do sedna tematu. Program pisany do 10 kanałowego sterownika oświetlenia DC. Timer0 służy do generowania programowego PWM. INT0 oraz TIMER1 CTC ma obsługiwać transmisje danych(tymczasowo kod usunąłem myśląc że to on jest problemem). Problemem jest to że przy kodzie jak poniżej mam na PD2 prostokąt o wypełnieniu ok 20% Co uniemożliwia...
Witam mam takie szybkie 2 pytania ( Czy dobrze rozumiem że konfiguracja przerwania INT0 "The falling edge of INTn generates asynchronously an interrupt request." (nota strona 90) mówi nam o tym że działa normalnie jak np. w atmega8 tylko że jest możliwe jego wywołanie w momencie kiedy jest procek uśpiony. Jeżeli źle to rozumiem to proszę o wytłumaczenie...
Witam Chciałem skonstruować sobie projekcik umożliwiający przećwiczenie timera i przerwań zewnętrznych. Nie chciał działać, więc ostatecznie uprościłem go do granic możliwości i dalej nic... Założenie jest proste: po wciśnięciu przycisku na pinie odpowiadającym INT0 następuje uruchomienie TIMER1, który naprzemiennie włącza i wyłącza diodę w odstępie...
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,...
Pierwszą nieścisłość jaką zauważyłem , to niezgodna z komentarzami w kodzie , konfiguracja zboczy na jakie ma reagować INT0. ldi ACC,0x02 ;zbocze narastające na INT0 będzie out MCUCR,ACC ;generowac przerwanie Powyższe , ustawia reakcję INT0 , na zbocze opadające (Falling). Co to za tajemnicze urządzenie RC - odbiornik podczerwieni :?: Po czym poznajesz...
Procek usypia i od razu się budzi, a nie powinien... coś nie widzę błędu. Inicjalizacja: [syntax=c]//Konfiguracja przerwania Int0 - POWER_OK (tryb praca -> usypianie) cbi(DDRD, 2); //POWER_OK jako wejście cbi(PORTD,2); //Pullup off EICRA |= (1 << ISC00) | (1 << ISC01); //Aktywacja Int0 zboczem rosnącym EIMSK |= (1 << INT0); //Włączenie...
Witam, z góry dzięki za pomoc otóż borykam się z następującym problemem muszę napisać program na atmegę 16 który korzystał będzie z 2 przerwań zewnętrznych INT0 oraz INT1 [syntax=cpp] void Start() { DDRD = 0b11110011; //konfiguracja pinu 2,3 jako wejście PORTD |= _BV(PORTD2); //ustawienie rezystora podciągającego PORTD |= _BV(PORTD3); MCUCR &= ~((1<<ISC11)|(1<<ISC10)|(1&l...
Podczas obsługi przerwań podczas zliczania impulsów nie dzieje się nic innego poza inkrementowaniem tych dwóch zmiennych. Wkleiłem je tu w całości tak jak są. Poniżej zamieszczam przebiegi czasowe zarejestrowane oscyloskopem. Na potrzeby sprawdzenia długości trwania obsługi przerwań dodałem do nich instrukcje ustawiające wyprowadzenie jednego z portów...
jedyne co mogę jeszcze dołożyć to definicja struktury [syntax=c] struct connections { uint8_t detect : 3; //nr. detektora uint8_t triac : 3; //nr. triaka uint8_t setFlag : 2; //znacznik ustawienia fazy }; // zmienna connections ma zapisane w sobie // kolejności występowania faz oraz przyporządkowuje // do fazy detektor i triak volatile struct connections...
Witam. Jestem w fazie pisania programu z zegarem DS3231 i atmegą16. Mam podłączone wejście INT0 atmegi z wyjściem INT/SQW DS-a. Podciągnięte rezystorem 10k do 5V. I nie wiem co robię źle ale procesor nie reaguje na sygnał przerwania z DS-a. Powiem szczerze że nigdy nie korzystałem z przerwań zewnętrznych ale znów ustawienie tego nie jest skomplikowane...
Masz rację na forum jest to tylko cześć okrojonego programu. Wklejam składowo pełny program, wyciąłem tylko poszczególne obliczenia. Może teraz będzie coś więcej wiadomo co może być przyczyną. [syntax=vb]'--------------------KONFIGUR... $regfile = "m16def.dat" 'informuje kompilator o pliku $crystal = 8000000...
Przerwania w tym wydaniu sa tak proste że nie moga nie działać. Sprawdź sobie na spokojnie każdą rzecz po kolei, czyli osobno bramkowanie timera i osobno przerwania od INT0. Bascom jest mi obcy ale wydaję mi się że jest dobrze napisane. Sprawdź wymuszenie przerwania programowo czyli podstaw /INT0 (P3.2) =1 i potem 0. To na pewno jest wina muzyka a nie...
Cześć. Przeglądałem archiwum ale nic dla siebie konkretnego nie znalazłem. Mam problem z programem (konfiguracją przerwań). Chciałem wykonać mały i prosty licznik obrotów. Wykonałem przetwornik obrót/impulsy na diodach, zakładam że nie występują w nim "drgania styków" :) Otrzymany sygnał chciałem podać na wejście INT0 i za pomocą Timera zliczać pojawiające...
Fakt, ze jest milion różnych sposobów na zrobienie tego. Ok spróbuję tym sposobem co mi podsunąłeś. W sumie nawet lepiej tak. Dzięki. Dodano po 5 Ok, coś tam skleciłem, jest to niepełny program, bo nie ma w nim np. ustawień dla Mute i trybu, oraz nie pokazuje na LCD wartości, ale to później. Póki co mam dziwny problem z wyświetlaniem, ale o tym za chwile....
Być może objaw nie jest skutkiem niewykonującego się przerwania od INT1, które w tej konfiguracji "nie ma prawa" nie wystąpić, ale "drgania styków". Być może ponieważ INT1 wykonuje się z opóźnieniem w stosunku do INT0 to do tego czasu stan na wyjściu czujnika jest już ustalony więc zlicza mniej zboczy. Do hipotezy pasuje mi np. stwierdzenie: kiedy sygnał...
Tu tez jest mały problem, ponieważ w chwil wystąpienia przerwania, na lcd musi być to zakomunikowane, wiec uznałem ze tam należy to wstawić, wait jest tam po to by mrugał napis " NOT-AUS AKTIV ! “ zobacz jak to można zrobić bez tych dziwacznych wait w procedurach przerwań: '************ konfiguracja ... ... Dim Flaga as Bit Flaga = 0 Config Int0...
Witam wszystkich, pracuję nad uruchomieniem zegara ntp pobierającego czas z serwera czasu. program na atmegę32 napisany jest w bascomie i steruje poprzez TWI modułem NM7010A-LF rev. 1.1. problem na który się natknąłem to brak informacji o odebranych danych (które komputer wysyła po odebraniu zapytania przez serwer sntp), a dokładnie informacji, że danych...
Wszyscy z jakiegoś powodu skupili się na stałych/zmiennych, a nikt nie zwrócił uwagi na niżej przedstawione "rodzynki" :D i.t.d. Tak, jeszcze wczoraj odkryłem, ze trochę źle wpisuje jedynki do rejestrów. Poprawiłem to chyba na dobrze, ale cały czas mam pewien problem. Ograniczyłem sobie kod na razie na jedno przerwanie INTO. Zmieniłem tak obsługe przerwań...
Zajrzałeś do noty katalogowej tego scalaka? [url=]Link - proszę. Strona 13, rysunek 10 (oprócz tego, że z błedem, nie wiem po co narysowali że wysyłają 0x00 - wtedy zawsze scalak zwraca błąd) - jest linia IRQ, stan wysoki oznacza, że są jakieś dane do odbioru. Tak więc procedura jest taka - wysyłamy coś, czekamy aż scalak jest gotowy i czytamy odpowiedź....
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
Możesz nieco rozwinąć temat? Na początku próbowałem w programie zliczać stany na pinach procka, ale to była zupełna klapa, bo gubił kroki niemiłosiernie. Rozumiem, że proponujesz aby licznik sprzętowo zliczał zmiany na określonym pinie. Nie bardzo rozumiem "użyj jednego, np. 800 Hz - co 80 przerwań masz odliczony odcinek 100 ms" Ja muszę dokładnie ustalić,...
Witam serdecznie. Mam pytanie dotyczące przerwań zewnetrzych procesora Int0 Int1 at90s2313. A więc przerwanie zewnetrzne moge skonfigurować na trzy sposoby. Detekcje zera, detekcje zbocza opadającego lub detekcje zbocza rosnącego. Moje pytanie jest takie czy przy konfiguracji np zbocza rosnącego przerwanie zostanie wykonane z przejścia sygnału "0" do...
Witam. Natrafiłem na pewien problem, a jestem raczej początkującym "programistą" mikrokontrolerów. Mianowicie chodzi o to, aby podczas przerwania wartość zmiennej została podniesiona o jeden, a następnie jeżeli osiągnie wartość np. 6 została wyzerowana. W dalszej części programu w pętli Do...Loop były by umieszczone instrukcje warunkowe IF warunek THEN....
Ale dałem :P wstyd sie przyznać :P ale zmieniłem kod, napierw wywaliłem config... output... i nic to nie dalo, a pozniej sprobowalem na int1 i z konfiguracja pind.3 i bez nie działa:( macie może jeszcze jakieś pomysły. Jak sprawdzić czy piny jeszcze żyją? Dotykałem tylko na chwile, to może... :)
Witam Bardzo sensowne jest to co napisał eskwadrat, bo tu mam już napisany programik który robi pomiar ale wartość tego pomiary odrazu wyrzuca na port co mozna definiować jako formę wyswietlania wartości jednak w realu to za mało wiec spróbuję sie zastosować do w/w uwag pozdrawiam !!! KOD: $MOD51 ;istotne dla kompilatora asm51 (at)(at)(at)(at)(at) ;...
Zacząłem walkę z dwoma modułami RFM12b. Oba moduły podłączone do ATMega16 w sposób opisany w PDF: nIRQ -> INT0 (PD2) nSEL <- SS (PB4) SDI <- MOSI (PB5) SDO -> MISO (PB6) SCK -> SCK (PB7) Moduły są 868MHz, uP taktowany kwarcem 16MHz. Nie bardzo rozumiem konfigurację modułów a różne (niby działające) przykłady są przeważnie albo w C (nie...
Zmieniłem konfigurację ISC00 i ISC01 na wszystkie możliwe i procesor nie wybudza się - jedynie gdy dam wyzwalanie niskim poziomem. Po włączeniu zasilania, przerwanie można raz wywołać a potem procesor usypia się na stałe. Czy coś robię źle ? Dodano po 9 Chyba już rozumiem kolegę co napisał poprzedniego posta. Ja chcę budzić przerwaniem z INT0 a jak...
Nie spotkałem w bascomie funkcji do konfiguracji Pin change innterrupt ani przerwania od watchdoga, ale oczywiście można to zrobić na rejestrach. W bascomie nie znam zawartości pliku ATtiny44.dat Czy oprócz nazw rejestrów są jeszcze bity? [syntax=basic4gl]$regfile = "ATtiny44.dat" Dim Praca as Bit Praca = 0 Config PINA.5 = Input PORTA.5 = 1 'włącz wewnętrzne...
Całkowicie zapomniałem o temacie :) Z problemem poradziłem sobie w następujący sposób, jest to wycinek z większego programu więc coś może być źle wycięte :) [syntax=c] //--------------------------------------... // Dołączone biblioteki //--------------------------------------...
Witam Czy jeżeli w programie odblokuje przerwania i wykorzystuje INT0 to czy mogę PORD.3 który jest INT1 skonfigurować w programie jako wyjście np. do sterowania włączaniem diody? Takie same pytanie mam co do przetwornika AC, czy jeżeli w programie wykorzystuje przetwornik AC np. do pomiaru napięcia i korzystam z ADC0 i ADC1 to czy resztę portów PORDC.2...
opracowałem mój program do bramy.. lecz mam jeszcze jeden problem z tym przerwaniem INT0. Gdy np brama się otwiera i po zwarciu zworki portd.2 od INT0 układ prawidłowo zatrzymuje się lecz jak teraz włączę żeby brama się zamykała na zwartej zworce i po chwile od-zewrze przejdzie na stan wysoki zamykanie bramy się zatrzymuje jakby przerwanie działało...
witam Mam pewien problem ze skonfigurowaniem przerwania w Atmega8. Program ma wysyłać dane przez UART w zależności od stanu na końcówce PD2 ( INT0 ). Jeżeli ma stan niski to sprawdza jedną zmienną i w zależności od niej wysyła dane. Jeżeli ma stan wysoki to tak samo. Ale tylko jednorazowa zmiana powinna powodować wysłanie danych. Wymyśliłem, że obsłużę...
Rozważałem też coś takiego. Ale jak rozwiązaleś zabezpieczenie przed gubieniem danych? Ten softwarowy uart jest na przerwaniu INT0 albo INT1? Jeżeli nie to jak buforujesz dane? GPS przecież wysyła dane cyklicznie i nie masz wplywu na to kiedy znowu wyśle paczke. Sprawę komplikuje jeszcze fakt, że obecnie korzystam z bootloadera więc musiałbym z tego...
Wszystko wskazuje na to, że się uda. Są dwa timery typu 5, TCC5 i TCD5, oba mają QDEC capability. TCC4 dam na przerwania wewnętrzne od przepełnienia, a dwa przerwania zewnętrzne INT0 i INT1 nie potrzebują timera, ani nawet systemu zdarzeń. Program się kompiluje, więc jest szansa, jednak wszystko okaże się w praniu za kilka dni, kiedy będę uruchamiał...
Dziękuję wszystkim za wyczerpujące odpowiedzi. Jak wspominałem dopiero się uczę i myślałem, że przerwania można zaprogramować tylko na INT0 i INT1. może prosciej jest skorzystać z przerwania odbiornika UART - jest ono generowane w chwili odebrania bajtu danych przez UART i nie ptrzeba korzystać z rozwiązania jakie wymyśliłeś. Takie rozwiązanie wydaje...
Czy ktoś może powiedzieć co jest grane gdy próbuje uśpić przerwaniem, sygnał podłączony do INT2 (19). Taki kod set_sleep_mode(SLEEP_MODE_PWR_DOWN); cli(); sleep_enable(); sei(); sleep_cpu(); sleep_disable(); sei(); Staje mi na sleep_cpu() i nie mogę obudzić, początkowo miałem podłączone pod INT5 i nie mogłem obudzić ale przeczytałem że atmega posiada...
Dodano po 2 to był program główny a teraz plik RS_232_i_INT0/rs_232_int0.c Dodano po 1 przepraszam że przez dłuższy czas nie wstawiałem kodu i schematu ale miałem przeprowadzkę i nie mogłem
Napisałem wersję "new core" dla tego projektu. Niestety zajmuje 82 procent flasha w Atmega8 Dlatego w załączniku jest skompilowane archiwum. W przyszłości planuję napisanie programu, który w łatwy sposób pozwalałby edytować dane w EEPROM, czyli zmieniać treść SMS i numery telefonów. [syntax=vb]'****************************...
Walczę i walczę z tym programem ale nie daje rady.... :cry: Wrzucam cały kod, jest on zrobiony na bazie jak wspomniałem wcześniej: Projekt powiadomienia o alarmie by Xury wersja 2.0 [syntax=basic4gl] '***************************************... 'Projekt powiadomienia o alarmie by Xury wersja 2.0 'Działanie na przerwaniach...
- przetwornik dostaje sygnał START przetwarzania - zostaje uruchomiona funkcja przerwania ( zezwolenie na przerwanie, wyzwalanie tego przerwania zboczem narastajacym, zezwolenie na obslugę przerwania), w której: - odczytywane są dane na porcie D - konwersja z bin na dec wartości - wyswietlane na wyswietlaczu LCD np. w AVRach, hm.. było coś takiego,...
Przerobiłem program na Atmega328. Teraz ma tylko odbierać dane z master na Atega1284p i wysyłać do Domoticz. [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0 = Buffered , Size = 150 ,...
Witajcie, Dziwna sprawa. Dotychczas z powodzeniem stosowałem sterowanie fazowe odbiornikiem prądu przemiennego 230V...aż do czasu. Schemat typowy z wielu dostępnych w necie, pięknie wychwycony fakt przejścia przez zero (na oscyloskopie) a żarówka miga niemiłosiernie. Nie mam pomysłu co jest nie tak... robiw Soft regulujący moc odbiornika 230V: [syntax=c]...
Mam już gotową płytkę, impulsy z obrotomierza kieruję na ICP tak jak zasugerował tmf. I teraz pytanie do Was czy pomożecie w pisaniu programu, żeby odpalić obsługę tego ICP ? Obecnie mój program wyglada tak: [syntax=vb]'--------------------KONFIGUR... $regfile = "m16def.dat" 'informuje kompilator o pliku...
Napisałem taki program, który teraz ma sterować silnikiem, sterowanie fazowe tylko coś to nie rusza. Zero reakcji na potencjometr, przerwanie. Potem doszłoby jeszcze sterowanie z tachometru. Jakby mógł ktoś zajrzeć w ten kod i pokazać co jest źle. [syntax=c]//atmega 8 - kwarc 8Mhz #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h>...
Mam prośbę o dodanie do kodu efektu murugania diody led. Dioda ma zapalić się dwa razy w odstępie 50ms i zgasnąć na 250 ms i odnowa. Polecenie ma zostać wywołane komendą 33 z pilota RC-5 [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #define pierw_spraw 90 #define spraw 139 #define odebrano 0 #define zdekodowano 1 #define error...
No tak też przypuszczałem że sam będę musiał zmierzyć się z problemem. Dziękuje wszystkim, którzy mi nie pomogli :) A oto działające prawidłowo rozwiązanie. [syntax=asm] $MOD52 CZERWONA bit P3.7; ZIELONA bit P3.6; PRZYCISK bit P3.2 CZAS_MAX equ 30h; FLAGA_TIMER equ 31h; FLAGA_PRZYCISK equ 32h; CZAS_CZERWONEJ equ 33h WARTOSC_CZAS_MAX equ 20; INIT: sjmp...
Oj kolego, poważny błąd - zasilaj prawidłowo mikrokontroler: Dzięki za upomnienie, faktycznie gdzieś to przeoczyłem, na schemacie ideowym nawet masa wisi :) Poniżej zamieszczam poprawiony schemat ideowy i płytkę w EAGLE. Widząc duże zainteresowanie kodem wrzucam wsad w BASCOM. Załączam również program współpracujący z urządzeniem. Program może działać...
Zobacz jak ja to zrobiłem na Mega8 Program jaki zastosowałem korzysta z przerwania INT0 które po naciśnięciu klawisza wyprowadza procesor ze "śpiączki" , wysyła dane na IR i usypia go ponownie.Dla mnie takie rozwiązanie jest lepsze niż chwilowe zasilanie procesora poprzez diody. Poniżej wklejam kod jaki użyłem. Nie mogę znaleźć kodu finalnego i wklejam...
Mam silnik z przekładnią który daje 5 impulsów na jeden obrót przekładni, obrotów jest 139 to liczyłem na piechotę ale chcę wykorzystać Atmege 8 do sterowania tym silnikiem i nie mogę dojść do ładu z liczeniem tych impulsów. Próbowałem liczyć impulsy funkcja DEBOUNCE i szło dobrze dopóki nie zwiększyłem prędkości obrotowej, zaczęło gubić impulsy Następnie...
Witam! Udało mi się napisać obsługę pilotów NEC w Bascomie i postanowiłem się tym podzielić. Byłbym również bardzo wdzięczny za wszelkie uwagi, co do implementacji. Poniżej zamieszczam kod, jeśli ktoś ma jakies pytania - śmiało pisać. [syntax=basic4gl] $regfile = "m644pdef.dat" $crystal = 16000000 'KONFIGURACJA LCD Config Lcd = 16 * 2 Config Lcdpin...
Witam wszystkich. Od pewnego czasu próbuję, z wykorzystaniem Bascoma, napisać program, który będzie obsługiwał dwa mikroprzełączniki i wyświeltacz LCD. Ideą programu ma być wprowadzenie do tablicy danych, czyli jeden przycisk zmienia pole na LCD, a drugi zwiększa wartość znajdującej się tak cyfry. Skorzystałem z obsługi przerwań zewnętrznych. Problem...
Mam problem z przerwaniami, a raczej z pewną różnicą w budowie Atmega8 i Atmega32, a mianowicie mam program, który działa prawidłowo na Atmega8 poniżej fragment Jakaś sugestia/pomoc?
Rozumiem. Napisalem program w C na mastera i slave. Kod wyglada tak: MASTER: #include <avr/io.h> void SPI_MasterInit(void) { PORTB|=1<<PB4; //podciagam /SS do plusa przez pull-upa DDRB|=(1<<PB4)|(1<&... dla SCK i MOSI SPCR|=(1<<SPE)|(1<&...
Hej. Od jakiegos czasu mecze sie z SPI. Napisalem program dla Mastera i dziala. Problem tkwi w Slave. Gdy puszczam symulacje w AVR Studio nie chce mi sie ustawic bitu USISIF w rejestrze USISR. Robie to tak: USISR|=(1<<USISIF); Master - Atmega8515 Slave - Attiny26 Attiny26 nie ma SlaveSelect wiec musialem je zrealizowac programowo. Zastosowalem...
Jakiej precyzji oczekujesz? Bo .... w sumie najprostszym rozwiązaniem jest zliczenie ile razy wystąpi int0 (możesz zmienić konfiguracje aby reagować na każda zmianę stanu) a licznik można skonfigurować aby dawał przerwanie co 1/32 sekundy i w przerwaniu konwertować ilość impulsów na RPM: ilosc_impulsow/czas_akwizycji/ilosc_impu... co przy...
Witam, Ostatnio próbuję do swojej pracy magisterskiej zrobić komunikację bezprzewodową za pomocą 2 modułów nRF24L01+. Korzystam z tego kursu: Sprawdziłem działanie komunikacji uC z modułem nRF za pomocą SPI przy użyciu AVR Dragona. Działa bez problemu, wpisuje testową wartość do rejestru za pomocą funkcji WriteToNrf a następnie odczytuję wartość tego...
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...
Pomoozcie prosze z tym kodem: #include "defines.h" #include <ctype.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <avr/eeprom.h> #include <avr/interrupt.h> #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/wdt.h> #include <util/delay.h> #include...
Kiedyś umieściłem na obecnie niedostępnej stronie and.elektroda.eu materiał o dekodowaniu sygnału DCF. Urządzenie potrzebne było w urządzeniu, które wymagało synchronizacji czasu w pomieszczeniu gdzie wyprowadzenie anteny zewnętrznej do GPS było utrudnione. Poniżej umieszczam treść oryginalnego materiału, który może być pomocny przy budowaniu urządzeń...
Witam wszystkich, mam problem z obsługą przetwornika MAX1301 przez Atmege 32. Mianowicie przetwornik ten posiada 3 tryby pracy. W dwóch sygnał zegarowy podawany jest z zewnątrz, dokładniej przez linię SCLK interfejsu SPI. W trzecim trybie sygnał zegarowy podawany jest na przetwornik tylko podczas przesyłania do niego bitu startowego i odczytu zmierzonych...
Po raz kolejny zwracam się z prośbą do kolegów forumowiczów. Od pewnego czasu pracuję nad regulatorem fazowym zwykłe sterowanie triaka, wykrywanie 0 sieci nastawiane opóźnienie załączenia nic odkrywczego. Postanowiłem napisać taki program aby rozpocząć przygodę z uC. Pierwsza wersja powstała w C dodałem do tego coś a'la soft start i nawet to pracowało...
Dzień dobry. Zbudowałem miernik odległości w oparciu o ATtiny2313, czujnik HC-SR04 i wyświetlacz LED 7 segmentowy 4 cyfrowy, wspólna katoda. Program napisany w języku C w Atmel Studio. Problem polega na tym, że układ działa poprawnie tylko do odległości 70 cm. Powyżej zaczynają migać segmenty, na cyfrze jedności i dziesiątek, które nie powinny się zapalać....
Witam W programie wykorzystuję dwa timery: Timer0 i Timer2. 0 służy do zliczania zmiennej powstającej w czasie programu i do jego działania (narazie) nie mam zastrzeżeń. Problem jest z Timerem2. Służy on do zapalania diody na określony przez użytkownika czas (wartość czasu ustawiana przyciskami +-). Po wciśnięciu przycisku zapalającego diodę, świeci...
Witam wszystkich, chciałbym zasięgnąć rady w sprawie transmisji sygnału w kodzie Manchester. Usiłuję napisać program dla układu z RFID i kartami typu UNIQUE. Do nawiązania transmisji używam układu EM4095, którego wyjście taktujące (RDY/CLK) podłączyłem do pinu PD5(T1), jako zewnętrzne źródło sygnału taktującego dla timera/countera1. Wyjście DMOD_OUT...
Robię wielofunkcyjne urządzenie, które ma rezlizować kilka programów, przełączanych przy pomocy przerwani INT0. Tzn, program pierwszy wykonuje się w pętli while(1) tak długo, aż nie pojawi się przerwanie, które zakończy program pierwszy i rozpocznie drugi. Mój pomysł wygląda tak: uint8_t numerprogramu = 1; void program1(void) { while(1)...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka z Arduino. Temat oczywiście nie zastąpi w pełni czytania noty...
Bity w MCUCR określają na co będzie reagować przerwanie zewnętrzne... Zmiana stanu, opadające lub narastające zbocze więc jest to jak najbardziej potrzebne... SIGNAL (INT0_vect) - obsługa zewnętrznego przerwania INT0... SIGNAL (TIMER0_OVF_vect) - obsługa przerwania od przepełnienia timer0... Co do portu... Jak na mój gust powinno być PORTC = !PORTC;...
Bawię się ostatnio wspomnianym w tytule mikrokontrolerem i natknąłem się na problem z zewnętrznymi przerwaniami, którego nie potrafię obejść. Zaczynając od tego co działa: układ jest sprawny na pewno, jest podłączony, cały czas hula dioda sterowana przez timer z ustawionym przerwaniem na przepełnienie; podłączony jest również PICkit 3 przez icsp. Korzystam...
Witam ponownie. Przeprowadziłem wczoraj kilka prób i doszedłem do wniosku że problem z działaniem klawiatury nie wynika z błednego oprogramowania. Co zauważyłem: w czasie gdy żaden przycisk nie jest wciśnięty napięcie pomiędzy wejściami a wyjściami jest około +5V Gdy wgram program który ma za zadanie jedynie wykryć przerwanie i wyświetlić na wyświetlaczu...
Konkretne pytanko. W książce Marcina Wiązani podano przykład kodu na odbieranie RC5 w przerwaniu dla Atmega8. Bazuje on na przerwaniu Int0. Ja w swoim hardware mam odbiornik podłączony do Int1, przy czym timer1 mam zajęty przez inną funkcję softu. Oto listing z książki: 'Program odbierający sygnały nadawane w standardzie RC5 'w przerwaniu Int0 'Na LCD...
Witam, próbuję zaprogramować xmege aby mierzyła prędkość obrotową enkodera. Niestety mój pomiar to ciągle 0. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "hd44780.h" uint16_t lastrecord=0; //ostatni pomiar uint8_t ovf0handler=0; //pomocnicza do odliczania 1 sekundy uint8_t tovf=0; //flaga...
Witam wszystkich, pewnie juz nie raz czytaliscie takie tematy...A tu kolejny ;) Przegladalem wiele tematow o komunikacji z pcf8583, wiele kodow z nich przetestowalem i nic. A tradycyjnie problem jest taki, ze przy odczycie godziny dostaje krzaki. Przypuszczam ze nie dziala komunikacja po i2c, bo nie ma znaczenia czy pcf jest zasilany czy nie, otrzymuje...
Witam Mam mały problem z zakresem ważności zmiennych w przerwaniach. Nie mogę zmienić wartości OCR0A za pomocą zmiennej a; Załączam kod, zawiera się w kilku plikach. Błędów nie zgłasza. Przerwanie reaguje na przycisk w praktyce, jednak nie zmienia wartości 'freq' ISR(INT0_vect) { _delay_ms(100); freq=30; } ale nie dokonuje zmiany częstotliwości za pomocą...
Ok, sprawdziłem. W trybie z korekcją czegość takiego nie ma. Używam teraz tego trybu, bo nie wiedziałem jak wyłączyć te COMy, zeby bylo automatycznie... Teraz druga sprawa: mam dwa przyciski na przerwaniach INT0 i INT1, ale mi one w ogóle nie działają. Celem głównym jest osiągnięcie przechodzenia w tryb uśpienia i jego budzenie, ale jak już wspomniałem,...
Dodano po 54 Wszystko co napisałeś po 54 minucie myślę, że dałoby się obalić jednym zdaniem (Uwaga! Długie i zawiłe): Procesor AVR ATmega32L taktowany 8MHz, gdzie przerwanie z Timer0 odpowiada za podawanie kolejnych próbek do OCR1A i OCR1B w równych odstępach czasu; gdzie Timer1 jest podwójnym synchronicznym generatorem PWM o f=31250Hz, w którym to...
Witam, ostatnio zająłem się pisaniem stosunkowo prostej aplikacji na AVR ATmega8, potrzebnej mi na studia. Na celu miałem też trochę lepsze poznanie AVR. W czym problem : W moim programie chciałem przetestować typowe zachowanie uC, napisałem kilka prostych funkcji, włączyłem przerwania, zrobiłem pętle nieskończoną w której na moim wyświetlaczu 7 segmentowym...
Witam, od wczoraj zmagam się z problemem odbioru kodu RC5 w urządzeniu, w którym mam multipleks dużej ilości wyświetlaczy 7-segmentowych LED. Przerwania na multipleks przychodzą co około 4ms. Multipleksowanych cyfr jest łącznie 48, ale pogrupowane są one, tak jakby były tylko 4 cyfry. W każdym przerwaniu kody segmentów wysyłane są szeregowo na 3 rejestry...
Ok, nikt więcej nic nie podpowiedział, więc pomyślałem jeszcze trochę. Wydaje mi się, że sniffowanie transmisji będzie łatwiejsze. Wyświetlacz obsługuje sprzęt audio, więc nie ma tutaj szybkich zmian na wyświetlaczu. Po przeczytaniu datasheetów, doszedłem do wniosku, że w momencie opadania zbocza E wszystkie sygnały muszą być stabilne. Wydaje mi się,...
Zastosowałem się do tych wskazówek i pobór prądu wynosi około 1mikro Amper. Zapewniłem odpowiednią filtrację zasilania, AVCC i AGND zostały też podłączone do zasilania. Wszystkie końcówki skonfigurowałem jako wyjścia podczepione do masy z wyjątkiem pinów portu C. Tam przy jakiejkolwiek konfiguracji innej niż piny wejściowe wiszące w powietrzu, pobór...
Witajcie! W sieci znalazłem projekt lampki RGB sterowanej z pilota, projekt pochodzi z tej strony. Postanowiłem jednak z budować do tego swój pilot, a wybór padł na SAA3010: (na schemacie zamiast rezonatora jest kondensator, proszę się tym nie sugerować.) Pilot jest raczej sprawny i działa poprawnie, ponieważ w odbiorniku dioda led sygnalizuje, że sygnał...
Witam, Mam taki problem: napisałem program do obsługi odbiornika na ATTiny85. W skrócie po wykryciu zbocza narastającego ma wyzwolić diodę na określony czas. Tymczasem dioda zapala się z niewielkim opóźnieniem i pali się cały czas. Gdzie tkwi problem? Będę wdzięczny za pomoc. Dopiero się uczę więc proszę o wyrozumiałość. [syntax=c]#include <avr/io.h>...
Usiłuję napisać program takiego miernika i podczas analizy konfiguracji timer-ów w różnych tego typu projektach a szczególnie w jednym (ale o tym później) pogubiłem się trochę i pojawiły się wątpliwości. Do testów używam platformy arduino nano (atmega328p, 16MHz, 5V) i na chwilę obecną napisałem coś takiego: [syntax=c]#include <Wire.h> #include...
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...
Po przeczytanie manuala od atmegi8 mam już ustawione przerwanie od int0 aby wykrywało logiczną zmianę (nie jestem pewny czy powinno być tak czy na zbocze opadające lub rosnące). Do układu mam podłączony LCD ale mam także komunikację po rs232 z komputerem więc wysyłam sobie przez uart. w tym momencie mam w przerwaniu od int0 ustawione żeby wysyłało mi...
O takiej funkcji zapomniałem :D. Dzięki. Może jeszcze będę pytał jak będą problemy :P. Edit: Czy ten kod jest poprawny? Zakładając, że podłączam wspólne anody/katody do pinu 0 i 1, diodę do 4 pinu (portu D), a poszczególne segmenty do całego portu C... // Licznik amunicji // Konfiguracja #include <avr/io.h> #include <avr/interrupt.h> #include...
Podłączę się do tematu. Konstruuję sterownik silnika prądu stałego - serwonapęd. W tym momencie mam gotowe podprogramy: - odczyt pozycji z enkodera - regulator PID (nie działa tak jakbym chciał, albo potrzebny jest tuning parametrów albo mam gdzieś błąd w kodzie) W tym momencie silnik lubi oscylować wokół pozycji zadanej. W tym momencie stanąłem na...
Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt w którym wykorzystałem mikrokontroler, proszę o wyrozumiałość...
Witam! Procesor ziała z wewnętrznym oscylatorem 8MHz. Cały mój problem zawarłem w temacie, więc po prostu zaprezentuję kod, ew. wyjaśnienia pod kodem. Struktura danych dla RC5: [syntax=c]volatile struct rc5_state_t { uint16_t ref_time; char code[14]; uint8_t code_count; char stan; //Poniżej zmienne wyjściowe po zdekodowaniu RC5 uint8_t address :5; uint8_t...
Witam, jestem w trakcie pisania programu dla line follow'era i chciałbym za pomocą switcha włączać i wyłączać robota (konkretnie serwa), coś na zasadzie przycisku on/off. Do tego celu chcę użyć przerwań zewnętrznych w ATmedze8 i switcha, za pomocą którego będę zmieniał stan na pinie PD2 (INT0). Program niestety nie działa jak należy. Raz na kilka przypadków...
Witam Kolegów, Od jakiegoś czasu próbuję uruchomić prosty odtwarzacz MP3 oparty o dekoder STA013 oraz kartę SD. Dekoder ten skonfigurowany został tak by na swoim wyprowadzeniu DATA_REQ wystawiał stan niski, gdy jego bufor wewnętrzny jest w stanie przyjmować dane. AVR odczytuje dane z karty SD do potrójnego bufora (z uwagi na brak DMA) i w procedurze...
adrian_krc Czy Ty rozumiesz co chcesz zmierzyć i jak to zrobić? 0. Licznik T0 i licznik T1 pracują ciągle. Przerwanie od INT0 też jest stale włączone. W pętli głównej wykonujesz obliczenia w oparciu o wartość zmierzoną w T0, a wyniki wyświetlasz w obsłudze T1. To na początek. 1. Licznik T0 pracuje w konfiguracji zliczania impulsów bramkowanych przez...
Witam. Co do zasięgu. Jak nadajnik i odbiornik leżą na stole obok siebie też mogą się nie widzieć z powodu zbyt silnego sygnału. Odsuń je od siebie chociaż na 1-1.5mb. przerwane przerwaniem. W ostatnim przykładzie zakomentowałem zbędne wyłączanie przerwań INT0 i ich ponowne włączenie) przynajmniej dopóki autor nie wytłumaczy jaki ma to uzasadniony cel....
Witam jestem początkujący w programowaniu mikrokontrolerów więc proszę o wyrozumiałość. Zadanie muszę zrobić na zajęcia. Szukałem w sieci i na forum rozwiązania lecz nie mogłem znaleść wątku który pomógł by mi zrozumieć obsługę jednowierszowej klawiatury. Nie rozumiem algorytmu. "Linia wiersza dołączona do wejścia portu. Linie portu do wyjść portu....
Napisałem krótki i prosty program do tego aby podczas debbugowania krokowego sprawdzić jak zachowuje się uC. Przerwanie pochodzi z zewnątrz (INT0). I teraz jest tak : przerwanie jest wykryte, ale zamiast skoczyć do funkcji obsługującej to przerwanie program skacze na początek funkcji main (). Co jest nie tak ?? Próbowałem już przy pomocy SIGNAL(), INTERRUPT(),...
Witam ponownie Nie wiem nawet jak to się stało, że na schemacie jest MOC3031 - to pewnie z pośpiechu. Świadomie stosuje w takich układach MOC3021 a nie np MOC3041. Procesor działa na wewnętrznym kwarcu 8 MHz. Wartości zasilacza mam nieco zaniżone. Zwykle stosuje np 820nF, do niego równolegle bez większego znaczenia można dać np 470kΩ, a w szereg...
Witam, mam problem z obsługą RC5, chce zrobić obsługę przekaźników poprzez RC5. Może ktoś sprawdzić co jest nie tak??. Dopiero zaczynam programowanie więc proszę o wyrozumiałość. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #define pierw_spraw 90 #define spraw 149 #define odebrano 0 #define zdekodowano 1 #define error 2 volatile...
Witam, Mam taki problem: Chciałbym wywoływać przerwanie za każdym razem kiedy nastąpi zmiana TCNT1 (timer 1 skonfigurowany na zliczanie impulsów zewnętrznych z wejścia T1 Mikrokontrolera). Timer działa poprawnie gdyz w konsoli z rsa widze jak wzrasta TCNT1 (tylko jezeli jest to printowane do konsoli z pętli głównej, a chciałbym to zrobić przerwaniem...
Oto reszta kodu. Jak policzyłeś dokładność? Tzn. jak uzasadnić to, że dla 4 impulsów mam 25% dokładności? Rozumiem, że 4 impulsy to w sumie 100%, ale nie rozumiem źródła tej niepewności. Gwoli wyjaśnienia - kilku zmiennych nie używam, to pozostałości po starych kodach (wiem, że powinienem je skasować :) ) a przetwornik ADC jest po to, że uruchamiam...