Najdłużej tam pewnie trwa oczekiwanie na wynik pomiaru ADC który jest dodatkowo podwójny. Bascom robi dwa odczyty jeden za drugim. Można to wyłączyć, ale pomyśl o samym oczekiwaniu na konwersję. Gdyby to było poza przerwaniem to inne przerwanie spokojnie mogłoby to oczekiwanie przerwać tak jak można przerwać każde Waitms. Spróbowałbym w przerwaniu ustawić...
Witam. ........... nie wiem jak zrobić aby te wyzwalanie było tylko od narastającego zbocza. Ściągnij pin 'Start' (PIND.5) rezystorem 10k do GND i odwróc jego logikę na przykład: If Pind.5 = 1 And B = 0 Then Druga sytuacja nie wiem dlaczego ale silnik mi przerywa tak co około sekundę gdy PWM jest włączony. Prawdopodobnie w tym czasie następuje zmiana...
Ta wstawka asm nie jest prawidłowo napisana, działa tylko dlatego, że kompilator nie wykorzystał jak dotychczas rejestrów R14 i R15. Jeśli program rozrośnie się na tyle, że kompilator będzie wykorzystywał te rejestry to program przestanie działać. Jak wspomniałeś poza eterem, masz możliwość skorzystania z ATmega32 i podpięcia wszystkich sygnałów do...
Przedstawię Ci kolego przykład zastosowania Pulsein żebyś miał jaśniej. Myślę że będzie "rzeczowiej". To przykład dla dekodowania transmisji pilotów podczerwieni. Sygnał podłaczony jest do zewnetrznego przerwania INTx i w momencie zmiany na pinie program skacze do tej procedury. Mierzy impuls i poddaje rozwadze jego długość. [syntax=basic4gl]Int_1isr:...
Użyłeś MOC3041. Takie nie mogą być bo mają wyzwalanie z zerze napięcia sieci.
Oczywiście, że mają wyzwalanie zboczem. Opadającym, narastającym i dowolnym. Tylko nie pamiętam czy Bascom pozwala przez swoje funkcje skonfigurować wyzwalanie zboczem. Ale wystarczy odwołać się bezpośrednio do rejestru MCUCR.
ja tez mialem ten sam problem. porostu jest to chyba jakis blad samego procka bo program pisalem w asmie i nie moglem za cholere doprowadzic do wyszwalania zboczem. jak ustawilem wyzwalnie zboczem to wlasnie reagowal tak samo jak u ciebie w koncu zmienilem troche program i zrobilem wyzwalanie poziomem.
Proszę postępuj zgodnie ze schematem użytkowym, który załączyłem (post #4 21 Lip 2015 21:39). Tam jest przedstawione gotowe rozwiazanie. Zacisk 21 podłączasz do masy, zaś zacisk 20 do GPIO. Stanem aktywnym jest zwarcie pinu GPIO do masy. Następuje to w momencie pojawienia się impulsu (dokładnie w momencie kiedy na ORNO mrugnie dioda). Dalsza procedura...
Zdecyduj się o co Ci chodzi: Power down, Pull-down, Wyzwalanie przerwania zboczem narastającym/stanem wysokim, Obsługę watchdog, Bo nie wiem o co w końcu pytasz...
Witam. Mam problem z kodem w bascomie. W skrócie opiszę co ma robić. W pętli głównej bada jaka liczba przychodzi przez RS232 (A = Inkey() ). Jeżeli jest to 87 to wtedy ma wyskoczyć do procedury/podprogramu o nazwie "Lowandslow". Tam na chwilę ustawia piny od B.4 do B.7 na "1" i załączane zostają przekaźniki spuszczania powietrza z czterech poduszek....
Jeśli masz piki w momencie przejścia przez zero to nie ma żadnej regulacji bo triak/tyrystor jak dostanie taki impuls to przewodzi do końca połówki sinusoidy. Musisz wysyłać impulsy wyzwalanie opóźnione względem przejścia przez zero.
W(at)itam! Mam prośbę , proszę o skompliowanie pliku , wsad do komp. samochodowego na atmedze 32. Moj Bascom ma ograniczenie do 4kb wersja demo. Proszę o pomoc. Dziękuję.
Witam Program kod1. Wysypuje się po przesłaniu kilkuset ekranów domyślam się że chodzi o przepełnienie stosu ilość przesłanych ekranów uzależnione jest od zadeklarowanej ilości pamięci. Jeżeli zamiast wywoływania podprogramu Czytaj_port wpiszę go z ręki kod2 wszystko działa perfekcyjnie mam zatem pytanie co robię nie tak czy BASCOM nie może samodzielnie...
Witam! Mam Bascom FULL 1.11.9.8 i programuje przez USBASP. Mam prosbe do was poniewaz wyskakuje mi blad podczas programowania mikrokontrolera a mianowicie !<sciezka>. EEP not found i dalej sie juz nie programuje Znalazlem tutaj odpowiedz na moje pytanie Ale gdzie sie to wylacza??? Gdzie jest takie ustawienie?? Przejrzalem juz chyba wszystkie fora...
programowe rozwiazanie nie bardzo mnie zadowala. Moze jednak mozna podlaczyc do INT4 ? Tylko od czego to jest uzaleznione ? Jest taki projekt ktory ma wlasciwie wszystko co ja bym chcial miec tylko niestety kosztuje 200$ i z tego co sie doczytalem to wlasnie jest wyzwalanie przez INT4. http://www.avrsprint.com/ProductBriefs/A...
Witam Napisałem program który zlicza impulsy z przycisku ale nie chce mi wyświetlać wyniku, wyskakuje taki komunikat: Error : 35 Line :30 3 parameters expected a to jest ten program: Dim J As Byte , D As Byte , S As Byte , T As Byte Dim Wynik As Byte Config Portb = 255 : Portb = &B11111111 Config Portd = &B1111100 : Portd = &B1111111 Cls Do...
No dobra ale to nie tylko przełączniki ale adresowanie pamięci RAM, wprowadzanie danych poprzez klawisze sequencera do pamięci, wyzwalanie generatorów. Nie wiadomo co określa "jest posputy" - jak jest uszkodzone wprowadzanie danych do oryginalnego procesora to AVR nie naprawi TR808.
Witam wiem schemat nie jest najlepiej dopracowany ale już działa poprawnie. Nogi "niczym" nie zakończone stawały nie antenami , np przyciski. Dodałem po 100nF na przyciski i problem ustąpił. Wyzwalanie przerwania tez było podciągnięte pod styk przekaznika i było w powietrzu 100nF do masy i jest OK. Dziękuje za sugestie zamykam
Tak miałeś rację, zmiana na wyzwalanie zboczem pomogła. Dziś dorobiłem też termometr na LM56, moim zdaniem lepszy od DS-a. Zastanawiam się jeszcze nad miernikiem ciśnienia na SCP1000 bo mam kilka wolnych pinów na procku. Jutro dam znać co wyszło.
...nóżkę int0 pcf8583 (7) trzeba podłączyć do PD.2 w uC przez układ RC, ponieważ pcf8583 daje przebieg o częstotliwości 1Hz, wypełnienie 50%... a nie chcemy, żeby przerwanie było wywoływane co chwile przez te pół sekundy... :P W takim przypadku , ustawiamy wyzwalanie zewnętrznego przerwania na jedno ze zboczy (opadające lub narastające) , a układem...
Moim zdaniem przyczyna leży w obsłudze przerwania. Przerwanie INT0 jest uruchamiane opadającym zboczem (Falling) CHA zmiana sie 1 -> 0. Dodatkowo w przerwaniu są instrukcje sprawdzające czy kanały są w stanie 00. Stan 11 jest pomijany. By móc rejestrować zmiany 0 -> 1 można ustawić przerwanie INT1 na wyzwalanie zboczem narastającym (Rising) i sprawdzać...
czesc Jaki procesor programujesz? AVR-y nie maja resestru tcon, w 2313 dla int1 wyzwalanie ustawaisz w MCUCR a dokladnie bity ISC11 i ISC10. Ale jak piszesz w bascomie to wystarczy napisac config int1 rising/faling rising - narastajace, faling opadajace, stan niski low lewel zreszta zajzyj do helpa, bo moglem sie w pisowni walnac A jak chcesz recznie...
ustawiasz licznik tak by generował przerwanie co 50ms w tym przerwaniu sprawdzasz swoje sygnały (przyjmijmy ze wyzwalanie jest zerem) w przerwaniu sprawdzasz czy sygnał jest = 0 jeśli tak ustawiasz sobie jakaś zmienna bitową flagę (znak ze sygnał jest). w następnym przerwaniu (flaga ustawiona) sprawdzasz znów sygnał jeśli jest 0 np włącz silnik. dodatkowym...
Szkoda że na '51, bo na AVR było by łatwiej. Można to zrobić tak: Procki '51 mają wejścia zewnętrznego przerwania wyzwalanego stanem niskim, lub zboczem opadającym. Ciebie interesuje to drugie (bo zboczemn narastającym się nie da jak w AVR). Nie wiem jak wygląda konfiguracja przerwań w BASCOMie, zobacz w dokumentacji, ale podejrzewam że coś w rodzaju:...
Po pierwsze musisz ustawić piny INT0 oraz INT1 jako wejscia (nie masz tego zrobionego) a samo aktywowanie przerwań nie ustawi tych pinów jako wejść czyli PIND.2 = Input PIND.3 = Input druga sprawa - po co włączasz aktywowanie przerwań poziomem niskim (Low level) ??? - wystarczy w zupełności. w takim przypadku, jeśli wyzwalanie przerwań będzie robione...
Doszedłem do takiego stanu. '****KONFIGURACJA PROCESORA**** $crystal = 4000000 $regfile "attiny2313.dat" $lib "mcsbyte.lbx" '****KONFIGURACJA PORTÓW**** Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111000 Portd = &B1111111 Config Rc5 = Pind.2 '****KONFIGURACJA ZMIENNYCH**** Dim I As Byte Declare Sub Wprawo Declare...
Ten drugi pomysł jest moim zdaniem lepszy. Do tego możesz użyć końcówki przerwania INT - ma konfigurację zbocza, którym jest wyzwalane przerwanie.
Witam. Napisałem kawałek kodu do multipleksacji wyświetlaczy LED. Zrobiłem układ z wyświetlaczem LED TOF - 5462. Wspólna anoda 4 cyfry + 2 kropki pośrodku. Jestem początkującym programistą C dla AVR i sam nie mogę rozgryźć problemu. Wyświetlacz jest podłączony do atmegi następująco: PORTB to wszystkie 8 segmentów wyświetlacza (A do G i DP). PORTD 0b11110000...
Witam.Osobiście nie piszę w bascomie ale przerwanie (przerwania) PCINT wyzwalane są zmianą stanu na pinie a ty natomiast próbujesz konfigurować aby wyzwalane było niskim poziomem.
Int0 ma najwyższy więc trop z priorytetem nie był dobry. Na próbę ustaw sztywno czas i wywal wszystkie wait. Może na czas oczekiwania w wait nie działają przerwania? I sprawdź czy wyzwala z przycisku.
No ale może wystarczy wykorzystać tylko tą część od wyzwalania generacji przez uniwibrator??
Oba są tak samo zaawansowane. W syntetyzowanej trzeba puścić próbkę sinusa i go nieco obrobić: zmiana częstotliwości, ADSR, generator szumu. Potem wszystko zmiksować i puścić na DAC. W odtwarzanej trzeba odpowiednio wyzwalać, pobierać z dość ogromnej pamięci ROM próbki, miksować i puszczać na DAC. Jest jeszcze jeden sposób: AY-3-8912, YM-2149 i inne...
Tak. Tylko mniej świadomość że procek będzie odrywany od pracy wieloma nieprzydatnymi impulsami. Ewentualnie po pierwszym impulsie na INT, wyłącz przerwania na czas drgań. Jak teraz masz podłączony kontrakton ? INT podciągnięty pod +5V ? Jak INT wyzwalasz ? W docelowym projekcie koniecznie czujnik kontraktonowy zamień na jakiś halotron albo transoptor...
Jak masz klawiaturę podłączoną do portu C to nie będzie działać. Powodem jest standardowo uruchomiony J-TAG. Spróbuj z inną końcówką wyzwalającą przerwanie.
Przerwanie wyzwalasz poziomem czy zboczem? Kolejna sprawa. Gdzieś czytałem, że AVR po wyjściu z przerwania wykonuje JEDNĄ INSTRUKCJĘ i przechodzi znów do obsługi przerwania (jeśli jest nowe). Jeśli chcesz blokować wskoczenie do nowego przerwania , to musisz w OBSŁUDZE POPRZEDNIEGO PRZERWANIA na samym końcu sprawdzać bit zgłoszenia ponownego przerwania....
jak chcesz takie duze czestotliwości mieżyć to musisz użyć timera żeby liczył zewnętrzne impulsy, wtedy drógim timerem wyzwalasz przerwanie co określony czas (im dłuższy tym lepszy bo pomiar dokładniejszy) liczysz ile było ilmpusów z zewnątrz w okreslonym czasie. wydaje mi się że tą metodą dało by sie mieżyć nawet do 100Mhz ale jest jedno zalożenie...
olo_3 -> to jest cały kod? ten który tu pokazałeś????? jeśli tak - to po pierwsze - gdzie masz pętlę główną po części inicjalizacyjnej programu ??? DO ... LOOP - chyba że ślepy jestem czy jak? (jeśli rzeczywiście jej nie masz to nie dziw się, że twój program wariuje bo po z tego co widać po inicjalizacji odrazu program leci do obsługi przrwania i się...
Uzyj kolego bramek TTL oraz liczników a procka do odczytu ich stanu i ew. wyzwalania nie będziesz mieć takich dylematów.
Wielkie dzięki za szybką odpowiedź. Zrozumiałem już ideę tych przerwań. Mam jedno pytanie jeszcze wg. tego co zrozumiałem i co napisałeś jako przykład. Programik się kompiluje ale przerwanie nie odpala się (na ten port wchodzi mi sygnał 1Hz z zegarka PCF8583). Nie powinienem jeszcze skonfigurować jakie jest wyzwalanie? Czy zboczem czy stanem czy zmianą?
Na szczęsci podczas projektowania całego układu wyjście nIRQ odbiornika podłączyłem do wejścia INT1 procesora. Ustawiłem aby przerwanie było wyzwalana przy opadającym zboczu ale dalej nic sie nie dzieje.
Masz w kodzie taką linię ... Reset Tcon.0 'wyzwalanie narastającym zboczem ... i nie podoba mi się komentarz ;) Powinien brzmieć wyzwalanie niskim poziomem . Więc po pierwsze , ustaw INT0 na zbocze opadające (Set Tcon.0) , a po wtóre , Twój proc nie ma możliwości wyzwalania przerwań zewnętrznych zboczem narastającym :( Piotrek
Podłącz diodę optotriaka pod wyjście OCx procesora, dzięki temu impuls wyzwalający będziesz mógł generować sprzętowo za pomocą timera.
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
Nie jestem pewien, ale wybudzanie da się chyba tylko stanem nie zboczem... doczytaj w dokumetacji:> Przed uśpieniem(procek wykonuje kod) , INT0 może być ustawione na falling , ale przed wykonaniem instrukcji SLEEP , należy zmienić sposób wyzwalania na LOW LEVEL i ... włączyć przerwania , jeśli usypiamy proca w przerwaniu. Poza tym , bit ISC01 może...
Jeżeli ustawił być INT1 na zbocze to ciągły stan niski nie zamulał by Ci programu. Jeszcze raz dla pewności: masz ustawić INT1 na zbocze, a nie implementować w programie programową obsługę reakcji na zbocze podczas gdy INT1 będzie ustawione na wyzwalanie poziomem.. Bo tak do tej pory miałeś.
Ciekawe jest to widać w twoim profilu (Pomógł: 79927) :P ale do rzeczy. Według mnie coś takiego można zrealizować w następujący sposób: - konfigurujesz przerwanie zewnętrzne żeby było wyzwalane przerwanie zboczem opadającym, rosnącym etc. - w tym przerwaniu uruchamiasz timer który zlicza sobie impulsy - jeżeli zliczy określoną ilość impulsów to wykonujesz...
A myślisz że przy operacji kablami nie powodujesz drgań styków i setek zbocz wyzwalających int? Chyba o tym nie czytałeś zbyt dokładnie...
Zaproponowane zmiany nic nie zmieniły. Jak była obsługa 12bitów to procesor i tak rozpoznawał jaka to ramka za pomocą długości bitu startowego i dalej już "nie obsługiwał" części odpowiedzialnej za tą ramkę 12bit. Sprawdziłem i odbiera normalnie zawsze pierwszą ramkę, załączam ekrany oscyloskopu, drugi kanał jest wyzwalany flagą po odebranej ramce...
Witam. Procek tak się zachowuje bo nie określiłeś czy przerwanie ma być generowane przez zbocze opadające, rosnące czy przez stan niski na końcówce INT. Domyślnie wyzwalane jest stanem niskim więc wykonuje się raz za razem. Instrukcja Config INTx. Przeznaczenie: Konfiguruje sposób wyzwalania przerwania INTx. Składnia: CONFIG INTx = LOW LEVEL | RISING...
1. Powinienes za transoptorem (przed INT0) wbudować przerzutnik schmitta. 2. Jak masz wyzwalane przerwanie? Nie znam BASCOMa, powinno być wyzwalane zboczem. 3. To cały Twój program? Tak jakoś trochę mało tej konfiguracji uC... No chyba że robi to BASCOM jakimś sprytnym rozbujnickim sposobem.
witam INT0przerwanie zewnętrzne końcówka INT0 INT1przerwanie zewnętrzne końcówka INT1 TIMER0przerwanie przepełnienia licznika TIMER0 TIMER1przerwanie przepełnienia licznika TIMER1 Gdy używane są przerwania INT0 lub INT1, można określić warunek zgłoszenia tego przerwania. Należy w tym celu użyć instrukcji SET / RESET i ustawić odpowiednie bity w rejestrze...
jak chcesz liczyc impulsy to ustaw timer jako counter z wyzwalaniem wewnetrznym (internal) i impulsy podaj na p3.4 jesli bys chcial korzystac z drugiego programu musisz ustawic przerwanie jako wyszwalane zboczem.
PCINT są wyzwalane tylko zmianą poziomu (Pin Change Interrupt) i nie da się go skonfigurować jako "falling"
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
Dostosuj ten przykład do Twojego programu czyli nie mierz w przerwaniu tylko ustaw flagę by dokonano pomiaru. Możliwa wtedy będzie obsługa innych przerwań itd.. To klasyczny przykład jak nie należy obsługiwać przerwań. Ustawianie flagi nie ma żadnego sensu, bo wtedy nie trzeba przerwania. W przerwaniu jak najbardziej można obsługiwać pomiary ADC. Ale...
trigger wyzwalanie wyzwalanie impulsem wyzwalanie przekaźnika
łączyć szeregowy równoległa podłączenie wzmacniacza smartfona napęd faac740
zg40c zwrotnica zg40c zwrotnica
Schemat płyty Y do telewizora LG 50T5 Błąd czujnika sygnału hamowania DAF XF 105 - diagnostyka i naprawa