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żę...
Witam, Mam pewien problem z częścią mojego programu dotyczącą obsługi klawiatury. Chciałbym żeby mikrokontroler reagował na zbocze opadające lub wznoszące. Niestety póki co nie znalazłem przydatnych informacji u wujka Googla. Teraz jest tak" [syntax=c] if(!timer_klawisza_1) { if(bit_is_clear(PINA, 0)) { jakieś funkcje się wykonują timer_klawisza_1=50;...
dzięki maciek :) Dodano po 51 Teraz zmieniamy procka na ATmega8535. Obydwa procki będą ze soba współpracowały przez modemy radiowe Radiometrix'a BiM2-433-64-5V. Zamierzam użyć poleceń printbin #, inputbin # ale wcześniej oczywiscie otworzyckanały procedurą open. Ale pytanie jest o kwarc. Otóż do tego ATmega8535 też mam podpięty kwarc 7,273800Mhz z dwoma...
Timer- np. Timer1- jako licznik zlicza impulsy zewnętrzne. Podane na odpowiednią końcówkę- T1 w wypadku ATmega8. Nie potrzebuje żadnego preskalera- bo preskaler dzieli impulsy z zegara- a tu nie ma co dzielić. Ustawiamy bity CS10-CS12 na external clock source- falling lub rising. Czy ustawiamy końcówkę T1 jako wejście- nie pamietam. Można ustawić. Ilość...
Witam. Jeżeli nie ten dział to przepraszam i proszę o przeniesienie do odpowiedniego działu. Napisałem program do pomiaru czasu trwania stanu niskiego. $regfile = "m8def.dat" $crystal = 16000000 Config Lcd = 16 * 2 Enable Interrupts Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5...
Witam to mój pierwszy post na tym forum, stąd możecie mi wierzyć jak bardzo jestem zrozpaczony:) jeśli temat jest w złym miejscu to prosiłym moderatora o przeniesiegnie i z góry przepraszam:) zwykle staram się rozwiazywać wszystkie problemy sam ale tym razem mam coś czego nie jestem w stanie zrozumieć. Pracuję chwilę nad programem którego działanie...
Chciałem sobie przestawić na zewnętrzny oscylator i tym sposobem chyba się pozbyłem atmega8535. Weszłem do FUSEBIT i w A987 ustawiałem 1010: crystal oscillator, slowly rising power. I po tej operacji uC umarł, komp go nie wykrywa. Wszystko sprawdziłem ze 100 razy i wszystkie połączenia i jest ok. Dało by się jakoś to przestawić żeby ożył.
Witam. Kombinuję już od jakiegoś czasu nad włącznikiem RC ale nie typu on/off tylko w zależności od zapotrzebowań, tyle ma być stanów. Na chwilę obecną docelowo mają to być 3 stany off/1/2. Wygrzebałem w googlu kawałek kodu, który jest odpowiedzialny właśnie za pomiar długości trwania stanu wysokiego na wejściu ICP1 (input capture). Jednak za żadne...
Jeśli to możliwe (mogłem przekombinować), żeby drugi kanał mierzyć w ten sam sposób, jak ten od ICP, tylko na innym pinie, to mógłbym prosić, aby ktoś przerobił mój kod na tę drugą wersję? Strasznie się gubię w tych rejestrach. [syntax=c]//licznik przepelnienia volatile uint16_t ov_counter; //zbocza rosnace, opadajace volatile uint16_t rising, falling;...
Witam, mam problem z poprawną obsługą trybu CTC timera 0 w Atmega16. Taktowanie z wewnętrznego RC 8 MHz. Na wejście INT0 (aktywne zboczem narastającym) podaję prostokątny sygnał kluczujący o f=50 Hz i wypełnieniu 25%. W każdym okresie tego sygnału chcę go próbkować cztery razy - 20 ms okres dzielę na cztery, uzyskując 4 'bity', każdy o szerokości 5...
Mam w projekcie Atmegę128 + PCF8583 + kilka układów I2C (3xADS1110, AT24c1024), dodatkowo dołaczam dwa moduły z Atmega64 każdy. Chcę, aby każdy z mikrokontrolerów odczytywał czas bezpośrednio z PCF8583. Teoretycznie arbitraż jest możliwy, ale u mnie to nie chce prawidłowo działać - zawiesza się komunikacja i programy "stoją". Do testów zostawiłem w...
Witam wszystkich, robię mały projekt do którego używałem Atmegę8. Zaczyna mi brakować pamięci więc stwierdziłem, że wymienię ją na Atmegę328. Niestety jest trochę zabawy z przerobieniem kodu, po pierwsze w Atmega328 nie można używać PD0 itp, tylko PORTD0. Po drugie timery ustawia się innymi rejestrami. Ogólnie program sobie przerobiłem, niestety został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...
Pierwsze wynik = wynik/10 trzeba usunąć, to stąd brał się ten błąd w wyświetlaniu, musi się zaczynać od Dziesiatki = .... Trzeba by dodać Start Timer1 no i pokombinować może dodaj jeszcze "edge = rising" obok "capture edge = rising"
uC zasilany z 5V. Po dłuższej przerwie (pauza na zaliczenie sesji) wziąłem się znowu za ten projekt. I tak... przegooglowałem neta i ze strony zapożyczyłem kod obsługujący timer input capture. Przerobiłem go pod potrzeby ATmega32, ale też do końca nie wiem czy poprawnie. [syntax=c]#include <avr\io.h> #include <avr\interrupt.h> #include <util\delay.h>...
Witam, męczę się z tym drugi dzień i dalej nic - może któryś z bardziej doświadczonych Kolegów będzie w stanie pomóc. Program ma mierzyć czas przelotu pocisku między 2 bramkami (z fototranzystorami), a następnie wyliczyć z tego prędkość (znana odległość 10 cm między nimi). Korzystam z przerwań INT0 (start) i INT1 (stop) oraz licznika Timer1. Uc jak...
Dziękuję, faktycznie coś się zmieniło :) Dodano po 1 Zwykle jak ktoś rozwiąże swój problem to nie pokazuje sposobu. Tutaj nic wielkiego nie odkryłem, szczywronek dzięki za wskazówkę :) Oto kod obsługi przerwań z przycisku na mojej płytce AND-TECH evb5.1 z AtMega644P: [syntax=c] /* * interrupts_test.c * * Created on: 15-07-2014 * Author: cwanish */ #include...
Mam termometr na Ds1820 i Atmega8.Pracuje na wewnętrznym oscylatorze(przestawiłem na 4Mhz) bez zarzutu.Należy pamiętać o $crystal (np.4000000). Pozdrawiam! Poprawcie mnie jak sie myle, ale tym poleceniem to raczej wewnetrznego oscylatora nie przestawimy bo takiej opcji po prostu nie ma !! wiec kolega W.K chyba cos namieszal... "Oscillator is voltage...
WITAM ja ustawiam w ten sposób m8 niewiele się różni (chyba) KONFIGURACJA BITÓW ZABEZPIECZAJĄCYCH ATMEGA32 Chip Name MEGA32 Calibration B1 Lockbits Lockbit 65 11:No rectrictions for SPM or LPM accesing the boot loader section Lockbit 43 11:No restrictions for SPM or LPM accesing the boot loader section Lockbit 21 11: No memory lock features enabled...
Na AT90S8535 zrobiłem sobie licznik impulsów i elegancko zlicza. Zrbiłem to na dwa sposoby (poniższy kod) z wykorzystaniem jednego timera i bardziej dokładny z wykorzystaniem 2 Timerów. Najgorsze jest to że gdy wsadziłem ATmega8535 na lcd pojawia mi się zero tak jakby counter w ogóle nie zliczał impulsów. Zegar procków (7.372.800 Hz) ten sam. Co jest...
Witam serdecznie. Piszę program, w którym muszę zliczać przychodzące impulsy z licznika energetycznego do procka. Aby nie zliczać impulsów pochodzących od drgań styków wymyśliłam takie rozwiązanie. Jeśli na INT0 przyjedzie zbocze opadające, włącz licznik T0. Gdy licznik przepełni się- minie 32ms i w tym miejscu będzie poziom niski na pinie, to atmega...
W bascomie nie mam aż tak wielkiej wprawy. Chce by działało tak: część Timer0_int: Counter0 = Counter0 + 6 Incr Licznik If Licznik = 50 Then '100ms Toggle Portb.1 Toggle Portb.2 disable timer0 Licznik = 0 End If Return odpowiada za opóźnienie czyli wartość 50 będzie się zmieniała od 1 do 1000 powiedzmy co da nam czas opóźnienia. Natomiast chce by...
Ok, to postaram się krótko i na temat ;-) Moduł RFM12B podłączony jest do ATMega8 następująco: MEGA8 - RFM12B (16) SS - NSEL (17) MOSI - SDI (18) MISO - SDO (19) SCK - SCK (5) INT1 - DCLK/CFIL/FFIT oraz FSK/DATA/nFFS przez rezystor 10k do Vcc Makro, którego używam dla klarowności kodu: #define cbi(sfr, bit)...
Witam. Chciałbym zmierzyć czas jaki występuje pomiedzy dwoma stanami tzn. Jeżeli zasłaniam transoptor to chciałbym żeby układ zaczął liczyć czas a kończy liczyć kiedy go odsłaniam. Napisałem kod ale nie chce coś działać. Oto ten kod: $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Portb.1 , E = Portd.0...
Witam, Prosty program odbierający kod pilota sony i włączający urządzenie. Na ATMEGA32 przy wewnętrznym kwarcu 8000000hz działa (ZL3AVR). Po zmianie na Mega8 przy wewnętrznym kwarcu 8000000Hz nie działa. Mega8 jest na oddzielnej płytce testowej, zasilanie idzie z ZL3AVR, czujnik IR jest na ZL3AVR (IR IN) podłączone jest do PB1 mega8 Przekaźnik włącza...
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
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?
Ja nie widzę problemu. :D Timer1: CONFIG TIMER1 = COUNTER | TIMER | PWM , EDGE=RISING | FALLING , PRESCALE= 1|8|64|256|1024 , NOISE CANCEL=0 |1, CAPTURE EDGE = RISING | FALLING , CLEAR TIMER = 1|0, COMPARE A = CLEAR | SET | TOGGLE I DISCONNECT , COMPARE B = CLEAR | SET | TOGGLE I DISCONNECT , PWM = 8 | 9 10 , COMPARE A PWM = CLEAR UP| CLEAR DOWN | DISCONNECT...
Kondensator chyba jest po to żeby szumy "przepuścić" do masy. Montowane urządzenie będzie zasilane bateryjnie więc przez 1k ucieknie mi za dużo prądu. Jutro będę mógł zaprogramować sobie mój procesor więc zapytam o ustawienie fuse bitów. 0-bit zaprogramowany 1-bit niezaprogramowany RSTDISBL 1 - PIN RESET jako RESET (zamiast standardowy pin I/O) WDTON...
Witajcie Mam problemik, przeszperałem już forum ale nic nie znalazłem. konfig jak w temacie i ... niedziała :). Istotne fuse bity ustawione (wydaje mi się poprawnie) SUT1..0 - 10 -- Crystal Oscillator, fast rising power; CKOPT - 1; SKSEL3..1 - 111 -- bo kwarc 8MHz; Fusebit F - 1 -- Disable JTAG; Fusebit P - 1 -- ATMega128 mode. Na innym porcie np. B...
Witam Powinnieneś ustawić w programie ISP-PROG według mnie tak: Pamiętaj, że 1 oznacza unprogrammed, a 0 programmed CKSEL3...1 = 111 CSKOPT = 1 dzięki temu możesz korzystac z rezonatora kwarcowego w przedziale od 3 do 8 MHz ( pdf od Atmegi32 str. 26) CKSEL0 = 1 SUT1..0 = 11 (pdf str. 27) Crystal osillator, slowly rising power albo 10 fast rising power...
Witam Napisalem sobie program w Bascomie ktory liczy czas stanu niskiego na pinie INT0. Powiedzmy ze wszystko dziala wporzadku ale zastanawia mnie jedna rzecz. Ponizej przedstawiam kod programu. Atmege48 idzie na 8 MHz, czyli jeden takt zegara=125ns ?? Czas licze poprzez Timer1(16 bitowy), W przerwaniu od przepełnienia licznika Timer1 napisalem procedurke...
Witam. Robię sobie komputerek spalania do samochodu. Wszystko ładnie wychodzi poza czasem wtrysku a co za tym idzie - spalaniem. Występują jakieś zakłócenia i nie wiem dlaczego. Może ktoś pomoże....:) Kod: $regfile = "m168def.dat" $crystal = 16000000 ''''''''''''''''''''''''''konfiguracja portów'''''''''''''''''''''''''''''''''' Config Portd...
Witam. Właśnie jestem w trakcie konstruowania zegara opartego na w/w uC i mam z nim same problemy zastanawiam się czy ten procesor jest jakiś lewy czy ja mam z nim problemy? (wątpię aby atmel wypuścił bubla) Pierwsza rzecz przerwania zewnętrzne działają niestabilnie - raz wyskakuje kilka razy nie :/ Po drugie nie udało mi się odebrać poprawnie danych...
Do Pawelj Nie będę wnikał co jest lepsze pomiar prądu czy też inne rozwiązania ale odpowiem Ci wprost na twoje pytanie dotyczące zliczania impulsów. Sygnały z impulsatorów podłącz pod 1 i 2 nogę Atmegi16 są to wejścia zliczające liczników Timer0 i Timer1 Skonfiguruj timery Config TimerX = Counter , Edge = Rising lub Config TimerX = Counter , Edge =...
pomyślałem że wykorzystam 2 przerwania, złączyłęm razem int0 i int1. jedno bedzie wykrywac opadajace zbocze a drugie rosnące. efektem miał być ciąg licz np "345,12,345,32,463,12" gdzie kazda liczba oznaczałą by długość kolejnego impulsu otrzymywanego z czujnika. napisałem kod: $regfile = "m16def.dat" $crystal = 16000000 Config Lcdpin = Pin...
kwesoly - po pierwsze dzięki za ten program. Teraz wszystko powinno być dużo łatwiejsze. Nie rozumiem tylko na jakiej zasadzie program wie czy występuje zbocze narastające czy opadające?? Definicje z programu: #define INT0PIN PORTD #define INT0NUM PD2 #define GetINT0Pin() (INT0PIN & (1<<INT0NUM)) volatile bool lowState1500msDetected=false;...
Preskaler znaczy taki mnożnik (ze max rozdzielczość to us(mikrosekundy) ale stosując ten preskaler można ją zmniejszyć np do sekund)? Jeśli tak to moj problem został rozwiązany. Poniżej zamieszczam kod który znalazłem na stronie #include <avr/io.h> #include <avr/interrupt.h> //Counts overflovs volatile uint16_t T1Ovs1, T1Ovs2; //Variables...
Witam. Założenie jest takie. po uruchomieniu programu powinien zacząć odliczać czas (0-300sekund) do czasu wykrycia stanu 0 na porcie C.0 ......... Aby nie podawać gotowego listingu, dam ci tylko drugą część programu, którą już w wyjątkowo prosty sposób możesz zmodyfikować dla całości wymogu. Zauważ, że po włączeniu układu Timer1 jest zatrzymany. Możesz...
No właśnie tylko u mnie dość cienko z programowaniem i obawiam się, że może mnie to przerosnąć. Do tej pory udało mi się odpalić wiele rzeczy, ale nie wiedziałem ze z tym będą takie problemy. Dobrze by było jakbyście rzucili też okiem na całość programu, czy jest jakoś w miarę poskładany. Edit: Znalazłem coś takiego: [syntax=vb] //Timer1 Capture //Timer1...
Witam Mój problem wygląda następująco: -układ na jakim pracuje to atmega 8 a srodowisko programowania Bascom Po zalaczeniu i skonfigurowaniu countera w sposob następujący Config Timer1 = Counter , Edge = Rising , Noise_cancel = 1 Enable Interrupts Enable Timer1 Podczas odczytu wartości countera licznik szaleje (sam nalicza jakies nie stałe wartości)...
Nie posiadam takowego, ale myślę, że nie powinno to sprawić problemu, trzeba jedynie przepiąć piny CLK i DATA na piny SPI i skonfigurować odpowiednio SPI. Oto kod, który sobie stworzyłem w celu ułatwienia konfiguracji. Musisz jedynie sprawdzić czy konfiguracja pinów jest zgodna z Twoim AVRem. Dorzucam też funkcje wymieniające dane bez użycia przerwań....
Witam skonfigurowałem wstępnie adxl345, jednak wyniki są błędne. Czy ruszam akcelerometrem czy ie pokazuje jakieś wartości na wyświetlaczu lcd. Mój sprzęt to: Atmega16A 1Mhz (testowane również na 8Mhz). Wyświetlacz LCD, ADXL345. W programie część na pewno jest dobrze napisana, gdyż jak zmienię szybkość SPI to na wyświetlaczu szybciej wyświetlają się...
Witam Posiadam silnik z dołączonym enkoderem i tarczą (z drukarki), steruję prędkością obrotową za pomocą PWM, natomiast przerwanie INT wykorzystuje do zliczania obrotów silnika. Problem polega na tym że zliczanie obrotów silnika bez uruchomionego PWM działa poprawnie, gdy go włączę szaleje (nawet gdy obracam tarczkę palcem). Sygnały od enkodera są...
Witam wszystkich, W celu zmniejszenia poboru prądu postanowiłem zamienić w moim projekcie ATmege 16 na ATmege 328. W projekcie korzystam z przycisków, wyświetlacza LCD i slotu kart SD. Wszystkie peryferia zachowują się dobrze oprócz slotu kart SD. Korzystam w kodzie z biblioteki Petit FatFS. Szukałem w jej plikach miejsca, w którym zdefiniowane są porty...
e marcus to jest tak jest cała linia 8-bitowa na której lecą non stop jakieś dane do różnych układów, są też dodatkowe 4 linie sterujące na której lecą tylko impulsy "0" i wtedy właśnie lecą właściwe dane które chcę odczytać AVR'em. W sumie z tych 4-linii sterujących na jednej lecą impulsy "0" 128-raz y które wywołują Czy masz jakiś powód aby tą 8-bitową...
Witam Do atmegi 328p, do int0 mam podpięty jedną nogą pc814, drugą do masy, czyli ten pc814 zwiera do masy int0. LCD podłączony do portu D. Wejscie int0 podciagnięte wewnętrznym pullupem. W przewaniu próbuję zliczać te impulsy, ale otrzymuję dziwne rzeczy. [syntax=c]#include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h>...
Witam, moja prośba tyczy ATMegi 8515 i kwarcu 4Mhz Chcę ustawić fusbity dla ATmegi8515 aby obsługiwała zewnętrzny kwarc 4MHz. Korzystam z Bascom-a i programatora Sample Electronics - uC podpięty pod LPT. Moje pytanie sprowadza się do tego jak się mają poszczególne bity rejestrów wymienionych w dokumentacji, które dla ułatwienia zebrałem w poniższym...
Cześć wszystkim :) Pracuję nad przeniesieniem kodu pewnej biblioteki do nrf24l01 z atmegi na xmegę (atmega32 -> xmega 128a3). Czytając bibliotekę wybrałem fragmenty z elementami charakterystycznymi dla danego typu procesora, czyli pozmieniałem części kodu związane z rejestrami i przerwaniami. "Zakomentarzowałem" nietknięty oryginał. To, co wstawiłem...
Coś takiego znalazłem. Co prawda na Atiny ale można przerobić. [syntax=c]// // Talking to ultrasonic sensor HC-SR04 with an ATtiny84, and // sending distance data using serial communications. // // electronut.in // #include <avr/io.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU 8000000...
W nocie wyraźnie napisali, że zapis bitu do EIFR kasuje flagę. Kasowane jest także w chwili wejścia w przerwanie. Kasowania EIFR przez zapis jedynki używałem gdy stan tej linii zmieniał się w czasie obsługi przerwania a nie chciałem aby było wywoływane ponownie. Zmusiłeś mnie do wysiłku i w nocie znalazłem to: " When an INT2:0 bit is written to one...
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....
Cześć, mam problem, z którym od dwóch dni nie mogę sobie poradzić. Posiadam moduł od Riverdi RVT70UQFNWC00 oparty o FT813, podłączam go taśmą do swojej płytki (dwa różne egzemplarze, w obu jest to samo), pomiędzy procesorem a wyświetlaczem nie ma żadnych dodatkowych elementów (kondensatory i rezystory na liniach SPI, PD, CS, INT są wbudowane na płycie...
Nie wiem jak Ci działało w poprzednim projekcie ale karta katalogowa wyraźnie mówi: A conversion will be triggered by the rising edge of the selected Interrupt Flag. Skasuj ten znacznik w przerwaniu od ADC.
bawiłem sie komparatorem atmega8 i mam mały problem, w helpie bascoma pisało że moge w komparatorze ustawić trzy opcje: TRIGGER = OUTPUT | RISING | FALLING no i ta pierwsza mi nie działa wogóle sie nie kompiluje, a zależy mi na tej opcji gdyż daje ona przewnaie przy narastającym i opadającym zboczu dleczego tak jest?? w helpie pisało też że można za...
Witam! Mam pytanie: w jaki sposób obudzić uP Atmega8 ze stanu powersave? Poniższy program nie działa: Config Int0 = Rising On Int0 Przerwanie Enable Int0 Enable Interrupts print "reset" powerdown do loop przerwanie: print "aaaa" return Bez polecenia 'powerdown' program działa i wykonuje przerwanie. Czy jeszcze coś trzeba ustawić?
No to tak, problem tak jak w temacie, ustawilem fuse bits na Ext RC/oscilator fast rising power po czym prock przestal odpowiadac. Programuje w bacsomie, programator to STK 200 ISP. Procek wczesniej z wewnetrznym rezonatorem pracowal normalnie, po podlaczeniu zewnetrznego kwarcu 14.740MHz i przestawieniu fuse bitow przestal odpowiadac. Nadal moge zczytac...
Przecież to proste: Config INTx = FALLING - wyzwalanie opadającym zboczem Config INTx = RISING - wyzwalanie rosnącym zboczem Config INTx = LOW LEVEL - wyzwalanie stanem niskim
korzystam z kodu ze strony a konkretniej z jego czesci: $crystal = 7372800 $regfile = "M32def.dat" $baud = 9600 Declare Sub Write_rtl8019as(byval Regaddr As Byte , Byval Regdata As Byte) Declare Sub Read_rtl8019as(byval Regaddr As Byte) Declare Sub Init_rtl8019as Declare Sub Showregs Declare Sub Getpacket Dim Regaddr As Byte...
Czy wie ktoś jak uruchomić Timer1 na ATmega8535 aby zliczał impulsy? Wpisałem ten sam program jaki miałem na AT90S8535 i nic. Cały czas pokazuje mi zero. Pomocy ! $regfile = "m8535.DAT" $crystal = 7372800 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.0 , Rs = Portd.7 Config Timer1...
Witam!! pisze sobie program do alarmu samochodowego sterowanego z fabrycznego zamka centralnego. w emulatorze wszystko cacy w rzeczywistosci niestety nie :( klopot poleg na tym, ze uklad nie reaguje na zadne impulsy wejsciowe. podawalem nawet bezposrednio zwierajac piny procka i nic - brak reakcji... za przyklad podam programik ponizej uklad wyswietla...
Można np tak: $crystal = 1000000 $regfile = "m32def.dat" Config Int0 = Rising Config Int1 = Falling Config Timer1 = Timer , Prescale = 64 Stop Timer1 On Int0 Irq_int0 On Int1 Irq_int1 Enable Int0 Enable Int1 Enable Interrupts Do Waitms 100 Loop End Irq_int0: Start Timer1 Return Irq_int1: Stop Timer1 return Pozdrawiam...
proponuje zebys stacyjke podpial pod jedno z przerwan i zrobil sobie petle if stacyjka =0 then powersave end if obudzisz go gdy pojawi sie jakies zewnetrzne przerwanie, dlatego mozna uswic zeby wchodzic w przerwanie zboczem narastajacym config int0 = rising w przerwaniu nic nie musisz robic :) teraz bedzie ci to dzilac tak ze 0 na stacyjce bedzie ci...
Taki mikro to on nie jest (przycisk). Taki jak często stosuje się w samochodach przy alarmach, instalacjach gazowych itp. (wycina się dziurkę w plastikowej zaślepce ....), - z czerwonym łepkiem. 1. Rzeczywiście, przy wyzwalaniu niskim poziomem działa już naprawdę dobrze. Dzięki. 2. Rzeczywiście, musiałem wpisać zewnętrzne taktowanie do poprzedniego...
Witam. Dokładnie tak, jak mówi kolega Prodig. Ponieważ nigdy nie używałem Powerdown, więc postanowiłem sprawdzić to wybudzanie. W pętli Do ... Loop było Powerdown i mruganie Ledem, aby sprawdzić, czy układ żyje, a przerwania na Int0 było podawane co 1 sek przez PCF8583. Jeśli w programie (Attiny2313) było: Config Int0 = Rising to program umierał, a...
Trzeba mierzyć czas impulsu i jeśli wynik = ileśtam to wtedy dzieje sie cośtam Może : $regfile = "twój uP" $crystal = twój crystal Config Timer1 = Counter , Edge = Rising Config Portc = Input Do If Portc.1 = 1 Then Start Timer1 If Portc.1 = 0 Then Stop Timer1 End If End If For Timer1 = 100 To 200 Reset Porta.1 Next For Timer1 = 300 To 600...
-------------serdecznie dziekuje za pomoc,podpowiedzi! i prosze o wyrozumialosć ----------- wklejam caly kod (napisany w Bascomie) i bylbym wdzieczny za pomoc w przeanalizowaniu jego dzialania, czesc kodu odpowiedzialna za dzialanie przetwornikow AC i sterowanie wyswietlaczem LCD nie istotna dla mnie w tym momencie ----------------------------------------...
Siemka! Od kilku dni spędza mi sen z powiek pewien problem. Mam ATmega8 połączoną z układem DS1307, połączenie na pewno jest poprawne, DS1307 podłączony jest też do bateryjki, a taktowany jest kwarcem zegarkowym. Układ działa poprawnie bo można do niego wpisać dane i da się też je odczytać, po wyłączeniu zasilania RTC pracuje i poprawnie liczy czas....
OK to jeszcze dopytam tak, rozumiem że na początku przerwania zmieniam stan Edge_ na 0, liczy timer i config int0=rising ale co dalej załóżmy że nadejdzie zbocze narastające i co wtedy się dzieje? No tak, zabrakło jeszcze jednej linijki... sory... Powinno być: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End...
Witam, mam problem ze współdziałaniem PWM i przerwań z transoptorów. Objawy: Bez uruchamiania PWM'a transoptor szczelinowy ładnie liczy obroty silnika (podłączonego np na stałe do osobnego zasilania) . Z PWM'em działa jak wariat. Zlicza chyba też sygnały PWM. Myślałem, że jest to zakłócenie z silników. Ale odłączyłem wogóle silniki i zostawiłem PWM'y...
jak ustawic timer by odliczal sekundy lub czas?? obecnie mam w programie uruchomione trzy - czy ktorys z nich sie nada?? Config Timer0 = Counter , Edge = Rising Config Timer1 = Timer , Prescale = 64 Config Timer2 = Timer , Prescale = 1 uklad ma tez zegar czasu pcf8583 - moze sie jakos do tego przyda?? moze jeszcze napisze do czego mi to jest wogole...
Siemka! Mam tego typu problem do rozwiązania: Do kontrolera ATmega8 mam podpięty impulsator(encoder) z przełącznikiem w ośce: podpięty jest tak: encoder: ATmega8: A PORTD.6 B PORTD.5 E PORTD.4 C,D do masy porty kontrolera podciągnięte są do zasilania przez wewnętrzny pull-up. Oprócz tego każde z wyprowadzeń (A,B,E) encodera podłączone są poprzez diodę...
W układach AVR Mega wyzwalanie przerwania linii INT0-INT3 odbywa się na skutek stwierdzenia niskiego poziomu (LOW Piotr A gdzie takich bzdur się naczytałeś ? Zerknij na stronę 64,65 do "External Interrups" dla ATMega32. INT0 i INT1 są na pewno w pełni konfigurowane. Wyczytałem w Helpie BASCOMa Uwaga! W układach AVR Mega wyzwalanie przerwania linii...
Witam! Zbudowałem sobie obrotomierz. Jest on poskładany z kilku części. Z tego schematu trochę korzystałem ale zrobiłem to trochę inaczej, zenerkę mam zamiast 8v2 to 7v5, opornik 10K mam w obwodzie emitera tak samo kondensator 220nF, dodatkowo do bazy mam podpięty jeszcze jeden rezystor 100K który z drugiej strony jest podpięty do Vcc. Oryginalne rozwiązanie...
witam, próbuję skomunikować 2 procesory: 1) wystawia na złączke 1 i 0 z określonymi przeze mnie przerwami np. 1s 2)próbuję atmegą 32 odczytać przez przerwanie wysłany stan i zapalić diodę Niestety z marnym skutkiem. Program pisany w Bascomie. Poniżej jego treść: //konfiguracja portu D z którego maja byc sczytane wartości Portd = 255 Lcd_io_ind Alias...
Witam Mam następujący problem. Używam timer0 jako licznika impulsów 12V które po przejściu przez układ dopasowywujący dają wartość 5,6 V na końcówce. Podobnie zliczam czas takiego impulsu za pomocą tego samego typu układu dopasowywującego. Problem tkwi w tym że timer0 nie zlicza mi impulsów przez podanie napięcia tylko wtedy gdy np: dotkne palcem albo...
Można pokusić się o spięcie razem pinów INT0 i INT1 jako wejście próbkujące i ustawić ich wyzwalanie odwrotnym zboczem. Np: INT0 rising, zaś INT1 falling. Zmiany stanów nie umkną w trakcie zapisu do pamięci - no chyba, że używasz przerwań do czegoś innego. Aby uniknąć głupich zmian przy przykładaniu i odłączaniu sondy można zastosować switch, którego...
Do Config Timer0 = Counter dopisz jeszcze EDGE = RISING | FALLING w zależności czy ma być zliczane zbocze rosnące czy opadające. Trzeba dopisać też Enable Timer0 i Enable Interrupts [...] Config Timer0 = Counter, Edge = Falling Enable Timer0 Enable Interrupts [...]
1. Pierwsza moja płytka. W eaglu nie mogłem się odnaleźć (elementy). Załączam schemat. Pijopic, jak możesz, to zrób mi wzór płytki. Jakbyś się już bawił, to dorzuć jeszcze kwarc, ok? 2. Jabel J-91 wygląda dość ciekawie. Ten układ dostosowujący myślę, że będzie dobry. Dobrze myślę? Znalazłem taki kod: $crystal = 4000000 $regfile "m8def.dat"...
Czy może ktoś pomóc?? (przepraszam za post pod postem) Zmodyfikowałem kod tak jak niżej podam, układ działa i mierzy mi dobrze obroty, ale tylko na pinie 11, na pinie nr 6 również mierzy ale pomiar jest niedokładny waha sie często w zakresie (1400-1900rpm) podczas gdy na pinie 11 jest około 1800rpm stałe. Dlaczego tak sie dzieje? Mozna cos na to poradzić?...
No właśnie Atmega8 ma dwa timery, na nóżce 6 i 11mozna zliczac impulsy, a w dokumentacji czytamy: Two 8bit counters One 16bit counter Czyli ten trzeci na której nóżce moze zliczać? Normalnie sie go używa jak innych? Config Timer0 = Counter , Edge = Rising Config Timer1 = Counter , Edge = Falling Wystarczy wpisac? Config Timer2 = Counter , Edge = Rising...
Niestety nadal nie znalazlem sposobu na obsluzenie tego przetwornika ADS w bascomie. Znalazlem natomiast kod w C, w ktorym obsluzona jest komunikacja. Niestety nie wiem jak zaimplementowac sterowanie DCKL --> z kodu w c, na kod w bascomie. Czy ktos ktos bylby w stanie, prosze o pomoc /* * Filename : ads7841.h * Hardware : Controller ->...
Czytaj dokumentację i do boju. Z tego co widzę to zegar ten ma interfejs równoległy. D0-D7 – Data Bus A0-A5 – Address Bus (input) Do tego jeszcze dwa piny: RD - Read Strobe (input): Data is read from the selected register and driven onto the data bus by the device when this line is low and either RTC or XRAM is asserted. WR - Write Strobe...
A wiec po paru bojach - udalo sie ..mniejwiecej : _ shiftout na piechote z zwenetrznym generatorem zegarowym _ crystal = 16000000 $regfile = "m8def.dat" $noramclear Dim Wartosc(10) As Byte ' ilosc wysylanych bajtow Dim Databyte As Byte ' bajt wysylany Dim Dana As Byte ' licznik Dim Bitpointer As Byte ' wskaznik aktualnie wysylanego...
To jest fragment kodu, którego używałem , żęby zrobić obsługę licznik, ale nie działa w symulacji $sim $regfile = "m8def.dat" 'Informacja dla kompilatora. $crystal = 8000000 'Też dla kompilatora,zastosujemy kwarc zewnętrzny 10MHz. Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E =...
program ma wysyłać bity. I wysyła, tylko nie takie jak bym chciał. w tym przypadku na linii wyjściowej dostaje coś takiego: 1, około 3ms przerwy, 1010101010101011, przerwa 6ms, 101. czas trwania stanu wysokiego się zgadza, tylko czemu dostaje taką sieczkę?? sygnał zegarowy ma okres około 400us. $regfile = "m16def.dat" $crystal = 16000000 Dim...
Witam, Mam pytanie odnośnie przerwań w Atmedze16. Pisze program alarmu domowego i ten alarm musi wykorzystywac czujke ruchu ( taka jaka jest w tych wlacznikach do lamp halogenowych ). Na wysjciu czujnika w momencie gdy ktos sie poruszy jest napiecie 9V, a w trybie Sygnal od tego czujnika jest polaczony z INT0. Enable Interrupts Enable Int0 Config Int0...
Witaj Twoje obliczenia wyglądają na poprawne jednak wydaje mi się, że to cli() jest w złym miejscu. Z ustawień timera widze, że mierzysz "powolne" sygnały. Zatem twój program może nie zdążyć złapać przerwania od INT lub złapie tylko zbocze opadające, ale narastającego już nie, bo zostanie wyłączone globalne przerwanie. Poniżej przedstawiam mój kod który...
Zacznę od zamieszczenia kodu źródłowego i schematu: ' ########################################... ' # Control Programm for Trolling Motor Driver # ' # (C)2008 by Tomasz Orczyk # ' ########################################... $regfile = "m8def.dat" $crystal = 8000000 'CKSEL3..0=0100 - 8MHz Internal (PWM ~30kHz) 'SUT1..0=01...
Jestem początkującym w programowaniu mikrokontrolerów , próbuje zrobic licznik obrotów/min wynik ma być wyświetlany na dwóch wyświetlaczach led7 seg. wyjście z portów steruje cd4543 a ten układ na darlingtony uln2003 z nich lcd. Dlaczego tak ? Ponieważ docelowo maja być duże wyświetlacze led. Problem polega na tym że w Bascomie nie wiem jak wyswietlić...
Witam kupiłem ostatnio nadajnik i odbiornik ultradźwiękowy, dziś się męczyłem próbowałem to uruchomić no ale niestety nic z tego nie wyszło, najprawdopodobniej to wina programu. To chyba coś nie tak z ustawieniem komparatora. Proszę o pomoc. Config Portc = &B0000000 Portc = &B0000000 Config Portb = &B00000000 Portb = &B00000000 Config Portd = &B00111111...
Widziales kiedys sinusoidę? ma dwa zboCza: narastająCe (rising) i opadająCe (falling) Przerwanie może byC wyzwolone jednym z tyCh dwóCh zboCz. w powyższym kodzie masz na zboCze opadająCe, będzie działaC.
Witam, Mam taki problem. Chcę wysyłać do PC informację w formie takiego temp1;temp2;f1;temp3 i coś jeszcze. Jak wysyłam informację to chcę żeby ona była raz wyświetlana powiedzmy co ok 1-2s a nie tak jak na screenach pod kodem. (to jest losowe). Co może być nie tak. Timera2 używam jako odmierzacz czasu a timer0 do pomiaru częstotliwości (na 555) $regfile...
Witam, Szukałem po forum jakiejś pomocy, ale w archiwum nic nie znalazłem... Ze strony producenta atmel ściągnełem skrypt do obsługi rc5. Chce poprzez pilota sterować pracą mojego urządzenia, ale na chwile obecną chce zapalac/gasic diode na pinie PB1. Do uC podłączony jest odbiornik pod pin PD2 tak jak w programie podano. Producent pisze o częstotliwości...
Wgrałem coś takiego: $crystal = 8000000 $regfile = "M32def.dat" $baud = 57600 Declare Sub Write_rtl8019as(byval Regaddr As Byte , Byval Regdata As Byte) Declare Sub Read_rtl8019as(byval Regaddr As Byte) Declare Sub Init_rtl8019as Declare Sub Showregs Dim Regaddr As Byte Dim Regdata As Byte Dim Byte_read As Byte Dim Hulp1 As Byte Dim Mymac(6) As Byte...
regfile = "m8def.dat" $crystal = 8000000 Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Input Config Pinb.3 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Aci = On , Compare = Off , Trigger = Rising On Aci Przeciazenie Enable Interrupts Gora Alias Pinb.1 Dol Alias Pinb.0 Zatrz Alias Pinb.2 Wlacz Alias Portb.3 Wej1...
Właśnie i tego się bałem ze jak wcisnę przycisk i go trzymam to przełanczaja sie kolejne programy Tak to wlasnie jest gdy increamentacja lub decr. zmiennej jest umieszczona w petli 'do...loop' i jest warunkowana poziomem na okreslonym wejsciu. Za kazdym "obrotem' petli zawarte w niej polecenia sa bezblednie wykonywane, przedzielone ustawionymi czasemi...
Witam. Napisałem prosty programik na atmege8 i lcd 16*2 do pomiaru temperatury silnika i prędkości obrotowej , wszystko działa ok ale chciałbym dodać jeszcze parę rzeczy w postaci ze jeśli obroty silnika przekroczyłyby np: 3000 rpm to wyświetliłby się komunika "zbyt wysokie obroty" lub coś w tym stylu bądz temp. przekroczy 110 st.C to "wysoka temp silnika"...
Witam!!! Mam problem z obrotomierzem. Zastosowałem się do schematu ze strony Tylko że zastosowałem procek Atmega8 i czujnik TLE4945L $regfile = "m8def.DAT" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5 Config Lcd = 16 * 2 Deflcdchar 0 , 28 , 28 , 28 , 28...
Witam. Projektuje właśnie zegar widmowy i mam do rozwiązania następujący problem... Wyświetlanie zamierzam zrealizować dzieląc "obszar rysowania" na n równych częsci. Stabilizację obrazu zrobiłem za pomocą halotronu podłączonego do INT0. W przerwaniu ustawiana jest flaga rozpoczęcia wyświetlania a opóźnienia generowane są fukncją waitms... Właśnie to...