witam, przez przypadek zablokowałem atmege16, odznaczyłem przez przypadek ' przy komentarzu z programu przykladowego, i atmega padła... nieszczesny fragment '$prog &H00 , &H00 , &H00 , &H00 da rade to jeszcze odblokować? i jak ? Programator STK200/300 dokladnie to jakie fuzy ustawiłem cksel na 0000 czyli zew generator?
Poczytaj o porcie C w Atmega 128 na forum. W sieci jest ponadto polska nota katalogowa. Ostatecznie przeglądnij Fusebity w Bascomie. O ile dobrze pamiętamport C trzeba odblokować.
Witam Bardzo Interesujący projekt.... Zastanawiam się czy dało by się coś takiego wykonać żeby odblokować Atmega8, Atmega16, Atmega32 ... ????
Odblokuj przerwania przed pętlą główną za pomocą polecenia "sei();" bo inaczej nie będzie działać.
Ja używam takich kodów do odblokowania tych pinów, zaraz po instrukcji konfiguracji zegara programowego: 'odblokowanie pinów PC6 i 7 dla procesorów atmega16/32: Tccr2 = 0 Assr = 0 Timsk = 0 Tifr = 0 Oczywiście wszelkie dalsze konfiguracje innych timerów powinny znaleźć się po tym kawałku kodu.
Do odblokowania można użyć urządzenia z projektu "Fusebit Doctor" - sam uratowałem tym kilka trupów :-)
........Wprawdzie układ jest najprawdopodobniej fizycznie sprawny, to ponoć (z tego co znalazłem w angielskiej sieci) zdarzają się problemy z loaderami lub jakimiś jeeper'ami (ang. jeepers) (co to jest?) tych układów - z reszta przytoczę cytat: I unlocked quite a few by just doing a factory default. Write the files using jeepers. Moje pytanie do Was...
Witam! Kolego marcinek_85 całą procedurę programowania masz opisaną przez zemnie na tym forum wraz z zrzutami ekranowymi ustawienia fusebitów jaśniej już nie może być.Jeżeli będziesz przestrzegał wskazówek tam opisanych wszystko będzie ok!.Spróbuj wykasować dane z procesora i wgrać na nowo.Przy wgrywaniu fusebitów należy szczególnie uważać i lepiej...
Jeśli mieszałeś coś z FuseBitami. I odznaczyłeś bit SPIEN to tak mogłeś zablokowałeś ATmege ;) Jest jeszcze jedna metoda odblokowania jej, ale wiąże się to z programowaniem za pomocą JTAGA. Może tego bitu nie przestawiłeś i tym Ci się uda. Jeśli i ten bit przestawiłeś to tylko i wyłącznie albo nowa ATmega, albo właśnie metoda odblokowania programatorem...
Zdarza się, można odblokować, ale dlaczego na obrazku widać Atmega16 jeżeli programowałeś taki procesor ???
jak w temacie .. Bydgoszcz:) ISP Programer i PonyProg. juz z dwoma osobami rozmawialem i procek nadaje sie tylko do odblokowania przez innym programator niz ISP:/ jak nie zndajede w poniedzialek nikogo by mi pomogl odblokowac to jeden z uzytkownikow elektrody zadeklarowal sie juz ze mi pomoze konkretnie juz odblokowac :)
Reset podciągnąłem rezystorem 10k do vcc. Bez efektu. Może chodzi o to, że aby wykorzystać PORTA trzeba jakość odblokować go za pomocą fusebitów.
Ale w kodzie są odblokowane globalne przerwania ;-).
Zamiast CKDIV ustawia się CKSEL, na stronie www.edw.com.pl/ea/avr/avr-fuse.pdf opis po polsku Atmega16.
Niech to... a udało Ci się odblokować któregoś za pomocą fusebit doctor?
Na szybko zbudowałem pająka żeby przetestować i przy okazji odblokować kilka AVR, u mnie pomogło z ATMEGA644p ATMEGA16, ATMEGA8, i tiny2313, więc projekt godny polecenia.
JAK ZROBIĆ BRAMKI/????? ABY ODBLOKOWAĆ ATMEGE???? Czy ma ktoś jakieś schematy
nie znam BASCOMA, ale zobacz czy masz odblokowany JTAG, jeśli tak to go wyłącz i zacznie działać
Instrukcje Step-By-Step jak zdobyć wsad masz tutaj: http://www.siwawi.arubi.uni-kl.de/avr_pr... i tu: http://www.siwawi.arubi.uni-kl.de/avr_pr... Jak dobrze się doczytałem triko polega na tym żeby zdobyć wsad z oryginalnego zestawu atmela STK500, czyli trzeba włożyć procek ATmega16 -chyba taki jak w oryginale, załadować...
Czy ktoś może mi pomóc zmusić mikrokontroler Atmega16 do pracy z zewnętrznym kwarcem 8MHz i jest to do zrobienia w Bascom AVR. Zgodnie z sugestiami z forum robiłem kilka podejść do tego tematu ale zawsze kończyło się na zablokowaniu układu i ponownym jego odblokowaniu przy zastosowaniu zewnętrznego generatora.
Odblokować się zazwyczaj da trzeba użyć trybu programowania HV a do tego trzeba poczytać . Co do fusebitów na drugim oknie masz na czerwono: Enable JTAG - wyłącz ten bit i zaprogramuj Atmegę. Pozdrawiam Marek
Co zmienić w kodzie żeby wyświetlał to samo ale w takim połączeniu jak na schemacie atmega16 z lcd ? Przypinam lcd i zmieniam kod do portów A działa ok. Przepinam lcd i zmieniam kod do portów B i D działa ok. Przepinam lcd i zmieniam kod do portów C nie działa czy porty C są zablokowane ? jak je odblokować ? Wyłączam OCDN i JTAGEN nic nie daje.
Programator i projekt już działa! Zmieniłem opornik w zasilaniu resetu z 10k na 5k1. To pomogło ale poprzednio wszystko działało z 10k. Prawdopodobnie może to mieć związek z odblokowaniem PINC2-C5. Wtedy po resecie mk często mk się blokował. Może ktoś wie co się stało?
Być może przez złe warunki z zasilaniem, podczas próby programowania zostało samoczynnie zmienione wyprowadzenie reset na wyjście (bit SPEIN). Bez programatora równoległego raczej się nie obejdzie. Ew. kup se nowego procka, a jak już będziesz miał doświadczenie to zbuduj se programator równoległy i odblokuj nieszczęśnika. Poczytaj ten Dodano po 4 Być...
zeby ci dioda zgasła przed uspieniem procesora, w procedurze obsługi przerwania powinieneś zmienić stan na wyprowadzeniu z diodą. Potem odblokowac przerwania i dopiero sleep. Jesli procesor uspisz w procedurze obsługującej INT0 to sie nie wybudzi gdyż na wejściu w procedure INT0 wyłączane są przerwania a przywracane po zakończeniu obsługi przerwania...
Przecież twój kod się nawet nie powinien kompilować, więc jest faktycznie zły :) Jak sobie wyobrażasz zagnieżdżenie ISR? Mieszasz nowe makra (ISR) ze starymi (SIGNAL). Poza tym ATMega nie ma czegoś takiego jak priorytety przerwań. Przerwanie TIMER1_COMPA_vect nie zostanie przerwane, chyba, że jawnie odblokujesz wszystkie przerwania co zapewne doprowadzi...
W rejestrze TCCR0 ustawiasz 3 bity CS02, CS01, CS00 zgodnie z tabelką 42 (83 strona w dokumentacji) Odpowiednio: 0 0 0 – timer zatrzymany 0 0 1 – timer włączony, zlicza bez preskalera (impulsy z zegara systemowego) 0 1 0 - tak jak wyżej, zlicza z preskalerem 8 itd. Dwa ostatnie wiersze to zliczanie impulsów zewnętrznych. W rejestrze TIMSK...
A ja poszedłbym w kierunku --> wszystko do przerwań i spanie między nimi w IDLE mode. miś: to jest dobra koncepcja. Ztym że nie wiem czy w C ogarniesz bo pamiętaj aby muzyka szła gładko inne przerwania muszą być na tyle krótkie lub od razu po wejsciu do nich musi nastąpic odblokowanie SEI co nie jest takie proste i wymaga niezłego przeliczania/wyliczania.
Witam, Podczas zmieniania fusebitów (taktowanie procesora) procesor odmówił posłuszeństwa (komputer go nie wykrywa), nie wiem czy przypadkiem nie ustawiłem na rezonator zewnętrzny, próbowałem odblokować go używając drugiego, sprawnego procesora, lecz to nie pomogło. Co mam zrobić, żeby go "odblokować"? Dodam, że procek jest w SMD i raczej nie mogę go...
Na pewno chciałbym odblokować ISP. Czy są jakieś łatwe możliwości odblokowania go? Posiadam tylko elementy z AVT701-704, płytkę stykową i port com i lpt w kompie. Może coś się da zrobić?
PEŁEN SUKCES! Po prostu opornik miałem nieodpowiedni :D porządny 2000 Ohmów zakupiłem dosłownie 20 minut temu. Odblokowałem i od razu przestawiłem na wew. RC. Mam nauczkę na przyszłość :D Temat do zamknięcia. Dzięki za pomoc!
Ok,zacznę od początku w atmedze jest bootloader który po przejściu do głównego programu "trzyma" porty TX RX. Udało mi się to na początku programu odblokować tak jak opisałem wcześniej. Ale poblokowały się piny portu C.
Jeśli są są same rezystory podciągające bez kondensatorów filtrujących to nie będzie to przeszkadzać. Pinów od jtag'a nie można używać do niczego innego, więc jeśli odblokujesz jtaga przez isp i przeprogramujesz to po tej operacji znowu będziesz musiał zablokować jtaga (fusebit'em) żeby móc używać klawiatury.
Używam do atmega8 i bez problemów. Może sprawdź z różnymi częstotliwościami. :?: A nie bawiłeś się fusebitami? Można wyłączyć interfejs SPI :!: Witam ponownie! Kupiłem Atmega16 i śmiga bez problemu! Te Attiny2313 to jakieś badziewie chyba, po czasie odblokowały mi się ale znow jedno czy dwa programowania i sie blokują! Więc dzieje się coś takiego,...
Sprawdzanie w nieskończonym loopie nie zawiesi programu. Skonfiguruj liczniki żeby działały na Overlfow (przepełnienie) i wpisuj początkową wartość, lub na compare (porównaj) i wpisz wartość porównania do odpowiedniego rejestru. Skonfiguruj piny jako wejścia. Odblokuj przerwania od timera/ów. Odblokuj przerwania globalne. Pozdrawiam. Coś dokładniej?...
Kod wklepany z tej książki jest piiiiiiiii... Nie mam czasu dokładnie analizować tego przykładu bo szybciej jest napisać nowy porządny niż zanalizować to coś. Nie wydzielono obsługi buforów okrężnych ale mi wychodzi że aby zapisać dane do bufora to musisz pchać dane pod tx_buf[tx_cnt++] i kontrolować czy nie najechałeś na tx_send. proponuję przepisać...
Witam. Przy próbie wgrywania nowego programu zablokowałem sobie (najprawdopodobniej) Mikrokontroler i nie mogę się z nim połączyć. Czy przy pomocy Dragona i AVRStudio na się to odblokować? a może jakoś ineczej? http://obrazki.elektroda.pl/7757420300_1...
Chce uruchomić w ATMega16 programowanym przez ISP obsługę pamięci szeregowej przez SPI. Jak wiadomo oba interfejsy uzywają wspólne wyprowadzenia. Słyszałem ( lub gdzieś czytałem ) że odblokowanie bitu SPE (SPI Enable) w rejestrze SPCR nie pozwoli programować układu w systemie przez ISP. Czy to prawda ?? Pomijam problemy z zewnętrznymi układami które...
Dołączając moduł #include<avr/interrupt.h> możesz stosować deklarację SIGNAL i INTERRUPT. SIGNAL blokuje pozostałe przerwania na czas jego obsługi, a INTERRUPT nie. Po pierwsze nie INTERRUPT tylko ISR, po drugie obydwa te makra nic nie robią z flagą GIE, więc przerwania są ZABLOKOWANE. Jedynym sposobem ich odblokowania jest skorzystanie z makra...
na początek spróbował bym pobawić sie przerwaniami np Enable Interrupts lub odblokowanie przerwania wejściowego. Enable URXC jak to nie pomoże to odpiąć telefon, zmostkować TX i RX po stronie telefonu i wysłać coś i zobaczyć czy wróci. pozdrawiam kolegę :P
Witam. Chcę zaprogramować potencjometr cyfrowy ad5235 używając mikrokontrolera atmega16. Z potencjometrem komunikuję się za pomocą sprzętowego interfejsu spi. Skonfigurowałem port interfejsu i rejestr SPI w następujący sposób void spi_init(void) { //USTAWIENIE MOSI, SS I SCK JAKO WYJŚĆ DDRB = 0xB0; //I ODBLOKOWANIE SPI w trybie MASTER SPCR = 0x55; }...
Tak wygląda kod po poprawkach: #define F_CPU 4000000UL /* 4 MHz */ #include <avr/io.h> #include <avr/interrupt.h> int8_t licznik = 0; ISR (TIMER0_OVF_vect) { ++licznik; if (licznik == 100) { PORTA ^= _BV(PA0); licznik = 0; } } int main (void) { DDRA = 0xFF; PORTA &= ~_BV(PA0); PORTA |= _BV(PA1); PORTA &= ~_BV(PA2); //kofiguracja...
Witam. Mam mikrokontroler atmega16 i używam kompilatora AVRSide. Chcę przesłać dane do komputera z pośrednictwem USARTU i ustawiam nadajnik oraz odbiornik w ten sposób: void USART_Init(unsigned char baud) { DDRD=0x02; UBRRH = 0; UBRRL = baud; UCSRB = _BV(RXEN) | _BV(RXEN) ; UCSRC = _BV(URSEL) | _BV(UCSZ0) | _BV(UCSZ1); } Problem w tym że bity URSEL,...
Witam posiadam kabelek VAG002 i moje pytanie czy można go odblokować i aktualizować bez problemu nie znalazłem nigdzie nic na ten temat foto w załączniku
Strategia proponowana przez przedmówcę jest bardzo ryzykowna, oto do czego doprowadziła w przypadku krachu programu sondy Mars Pathfinder: http://en.wikipedia.org/wiki/Priority_in... Jeżeli kol. piotrg85 musi mieć obsługę przerwania od licznika dokładnie w danym czasie to można programowo sprawdzać w pętli głównej ten licznik i zablokować odpowiednio...
Rozwiązuj problem modułowo,trzeba napisać najpierw najważniejsza cześć czyli obsługa przerwania zewnętrznego.Pin INT0 należy ściągnąć rezystorem stosownie do ustawionego trybu ,jeśli ma wykrywać zbocze opadające to rezystorem do zasilania,jeśli narastające to rezystorem do masy.Wewnętrzny pullup różnie się zachowuje w tej sytuacji. Robi się to tak:...
Witam, Mam do szanownych kolegów pytanie o niestandardowy, wydaje mi się, sposób wykorzystania timera2. Dokładniej chodzi mi o to, aby używać go w trybie asynchronicznym do zliczania impulsów podanych na wyprowadzenie TOSC1. Potrzebuję rozczaić taką możliwość, ponieważ zmuszony jestem wykorzystać dokładnie to wejście timera2 do zliczania impulsów. Testy...
dziękuję dondu Twoje wskazówki pomogły i o jakieś 0,5kHz zaczął szybciej generować przebieg. Jednak to i tak jeszcze mnie nie ratuje. Poniżej podaję program główny: [syntax=c]// program główny int main(void) { DDR_AD=0x00; // Port jako wejścia analogowe i cyfrowe PORT_AD=0x00; // Wejścia z podciąganiem DDRB=0xFF; //wyjscia DDRC=0xFF; //wyjscia na zakres...
Tak jak napisał kolega wyżej, jeżeli pamięć flash megi jest zabezpieczona bitem lock ustawianym w FUSE BITS, to jedyne co możesz zrobić, to wyczyścić całą pamięć i razem z nią ten bit. Niestety nie odczytasz przy okazji jej zawartości. Ale nawet gdyby, to co Ci po niej? Przecież to są dane binarne, czyli zapisany kod assemblerowy w postaci komend zrozumiałych...
przecież pisałam że wszystko było wcześniej w porządku, wszystko uruchomione, prosty błąd się wkradał gdzieś bez przerwy, w końcu ruszyło( oczywiście wcześniej ale zapomniałam umieścić tu rozwiązania): unsigned int rtc_sec=0; //zmienne globalne void rtc_init(void) { ASSR=1<<AS2; // RTC clock from 32kHz crystal TCNT2=0; OCR2=((32768/1024)-1);;....
Witam, W mikrokontrolerze AtMega16 mam do portu PC.3 podlaczony przycisk, chcialbym od niego odebrac przerwanie. Jednak nie wiem jak ustawić rejestr maski TIMSK? Mam taki przykaldowy programik: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #define D1_ON PORTC &= 0x02 //0xBF #define D2_ON PORTC &= 0x03...
Możesz kolego informatyku, wyjaśnić założenia swego programu? Bo sugestie dondu są chyba jasne. Dondu na swym blogu napisał: BŁĄD:Włączanie przerwań w funkcji obsługującej przerwanie To jeden z największych błędów jakie może popełnić początkujący programista robiąc tak:
Oto jeden z kodów który wymodziliśmy: program testing; var received_byte : byte; channel : byte; procedure Recived; org URXCaddr; //Procedura obsługująca odbieranie bajtu begin inc (channel); if UCSRB.FE = 1 then channel := 0; received_byte := UDR; if channel = 2 then PORTA := not received_byte; end; begin UBRRH := $00;...
Szanowni koledzy czy ktoś z was może mi powiedzieć jaką mogę osiągnąć precyzję przy odmierzaniu czasu przy wykorzystaniu układu ATmega16 z zewnętrznym zegarem 8.000 MHZ(rezonator kwarcowy)? Morduje to już drugi dzień i nie mogę zrobić tego w sposób precyzyjny - na każde odmierzone 10 minut atmege spieszy o ok 20s - taka zwłoka jest dla mnie niedopuszczalna...
Mam pewien problem - chcę ustawić ATMega16 na 8MHz - wewnętrzny oscylator. Szukałem fusebitów i znalazłem na stronie I tam mi sugerują C4 i 99. A jak pamiętam, to programowałem kiedyś na hfuse:w:0xd9:m -u lfuse:w0x14 czyli trochę innych. W ciemno nie chcę wpisywać, żeby nie zablokować procesora. Które z nich są prawidłowe ? A czy mogę odblokować procesor...
[syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #define D7 7 //dioda podłączone do pinów portu D unsigned int counter=10110; int main(void) { DDRD = (1 << D7); PORTD=(1 << D7); // tutaj sobie zaświecasz diodę, ale do pojedynczych bitów to używaj "|=" zamiast samego...
jestem tylko trochę bliższy prawdy. Ciekawy jestem czy dobrze myślę. Ale mam też dużo niejasności. Czyli tak: 1.Zezwalam na globalne przerwania. 2. Ustawiam prędkość w TWBR 3. Ustawiam w TWCR: TWEN - odpalenie sprzętu TWIE - odblokowanie przerwania sprzetu Do tej pory chyba na razie nic się nie dzieje. 4. Ustawiam w TWCR TWSTA Czy w tym momencie generowany...
Odblokowanie makrem ISR_NOBLOCK przerwań, nie daje pozytywnego rezultatu, przerwania nie działają prawidłowo, to które jest odblokowane działa, ale zakłóca pracę drugiego.... Bardziej przemawia mi do głowy rozwiązanie kolegi Andrzeja__S, tyle że efekt działania jest taki sam jak poprzednio. I chyba racją jest nie da się tego w prosty sposób rozwiązać...
Witam! Dopiero zaczynam i nie mogę sobie poradzić z poprawnym zliczaniem w przerwaniu pochodzącym od Timera2 w trybie CTC. Chciałem wykorzystać programowe Timery, które są pomysłem Pana Kardasia (korzystam z jego książki) do tego aby jeden z nich tykał co 1sek. Zacząłem, więc tak: 16MHz/1024/125/125 daje teoretycznie "cyknięcie" co sekundę, a u mnie...
Na początku programu ustaw timer: [config timer0=timer,prescale 64'(na przykład) enable interrupts'(odblokuj przerwania) on timer0 obsluga_syreny'(nazwa podprogramu gdzie ma skoczyc w przerwanie) enable timer0 counter0=6'(wartość początkowa licznika,na przykład) ----------------------------------------... obsluga_syreny: .... ..... .... ... counter0=6'(na...
Witam. Spróbuj zrobić tak: $crystal = 1000000 'Deklaracja częstotliwości kwarcu $regfile "m8def.dat" 'deklaracja modelu procesora Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera Ddrb = &B11111111 'Odblokowanie globalnego wyjścia OC1 Pwm1a = 0 Pwm1b = 0 Config Pinc.5...
To jest źle TCCR1B |= (1<<COM1A1); // POCZĄTKOWO STAN NISKI To jest tutaj niepotrzebne sei(); // ODBLOKOWANIE GLOBALNE PRZERWAŃ Brakuje ustawienia pinu jako wyjście If one or both of the COM1A1:0 bits are written to one, the OC1A output overrides the normal port functionality of the I/O pin it is connected to.
Witam. Od dłuższego czasu siedzę nad komunikacją USART synchroniczną pomiędzy ATmega16 i AT90CAN128 i nie potrafię dojść dlaczego nie działa. ATmega16 taktowany jest zewnętrznym kwarcem 3,686400 MHz, a AT90 z wewnętrznego oscylatora RC 8MHz. Docelowo będzie taktowany z pinu OC1A w atmedze, dlatego zdecydowałem się na transmisję synchroniczną. Atmega...
Tak,zgadza się,po prostu z rozpędu wpisałem Timer3,bo pisałem wcześniej na Atmega128. Poprawiłem nieco kod,ale nadal mam problem z zatrzymaniem stopera. Czy może tryb CTC będzie tutaj lepiej współgrał? [syntax=c] #define F_CPU 16000000uL #include <AVR/io.h> //biblioteka we/wy #include <AVR/interrupt.h> //obsluga przerwan #include <util/delay.h>...
Nie umiem odczytać temperatur z ds18b20. Rezystor podciągający jest(4.7k), VDD i GND też są podłączone. Linia danych podpięta jest pod pb.7 Aha wyświetliłem sobie też wartości odczytanych bajtów, zarówno 1szy jaki drugi mają wartość 0xFF. podaję kod może koś znajdzie błąd. Dim Cyfra(10) As Byte Cyfra(1) = &B00000101 Cyfra(2)...
Witam! Przyznam że trochę chaotyczny ten fragment kodu. Myślę że mógłbyś bardziej korzystać z makr jakie oferuje środowisko winavr, np. cli() - globalne wyłączenie wszystkich przerwań, sei() - jw. tylko odblokowanie i np. zamiast pisać: TCCR1B = 0x19; może nie krócej ale na pewno czytelniej jest: TCCR1B=_BV(WGM13)|BV(WGM12)|BV(CS10); co oznacza tryb...
Kolejne pytanie co oznacza : "jesli A ponizej 2V wejscie i1-i6 odblokowane jesli powyzej zablokowane " a) wszystkie wyjścia pozostają w stanie nieaktywnym b) wszystkie wyjścia pozostają w swoim ostatnim stanie niezalezienie od stanu wejść. Tak jak kolega tronics pisze, ze względu na to że nie musi być to szybkie (50Hz) to można to zrobić nawet na zasadzie...
pawel_konin -> podaj dokładny schemat (lub zdjęcie HD) i program którym to testujesz. [syntax=c] /* * GccApplication1.c * * Created: 2012-11-12 16:25:45 * Author: Pawel */ #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <util/atomic.h> #include <math.h> #define NOOFSAMPLES 128 // ilosc...
funkcje mam zdefiniowane w pliku obrotomierz.c, w pliku obrotomierz.h mam zadeklarowane zmienne, są one volatile void kan0(void) { if(g>=1600) { g=0; if(licznik0==0|licznik0>1000) { wynik=0; } if(wynik) { wynik=(96000/(kanal[0].T... } licznik0=licznik0*60/(kanal[0 ...
Ok to tak dla wyjaśnienia mojego błądzenia w okół "atomówek" Możesz mi wyjaśnić o co chodzi z modyfikacją atomową - jak to się ma na konkretny kod. Rozumiem że samo volatile nie wystarcza więc jak wygląda kod "atomowy" Co do mojego problemu. Ach, tak nie można robić. Nie dość, że zmienne współdzielone pomiędzy przerwaniem i programem głównym nie są...
Witam Wiem, że ostatnio był wysyp podobnych tematów ale mam problem z czujnikiem DS18B20, którego sam nie dam rady rozwiązać. Otóż po włączeniu układu na wyświetlaczu pojawia się temperatura ok 25 stopni, która rzeczywiście odpowiada temperaturze otoczenia. Następnie co 300ms na wyświetlaczu ma się pojawiać aktualna temperatura niestety następne odczyty...
Na pewno: TCCR1B |= ((1 << CS11 | 1 << CS10)); //preskaler 64 z wartoscia 6250 daje 50ms czyli 20 hz Kolejność operatorów, powinno być ((1 << CS11) | (1 << CS10)) Dodano po 5 Kolejny błąd - tak to się kończy jak sie pisze z głowy :/ Zamiast TCCR0=0x03; Powinno być TCNT0=0x03; Z kolei ty...
Witam. Próbuję nawiązać łączność z zegarkiem pcf8583 poprzez interfejs I2C,ale interfejs nie generuje nawet znacznika przerwania TWINT po wyslaniu bitu startu.Poniżej zamieszczam kod, który to realizuje (tak myśle:). #include <avr/signal.h> #include <avr/interrupt.h> #include <avr/io.h> #include <stdlib.h> #include "lcd.c"...
Witam od jakiegoś czasu staram się zaprogramować bezskutecznie atmege16, która ma prawidłowo zaprogramowane fuse bity tj.: OCDEN JTAGEN SPIEN BODEN Programator to JTAG ICE. Łączy się bezproblemowo, niby programuje i zczytuje poprawnie tylko w rzeczywistości atmega nie ustawia nawet stanów portów. Jak odblokować w tej sytuacji atmegę (o ile to stwierdzenie...
widocznie wczesniej (przez dwa miechy pracowałem na wewn oscylatorze nie wiedzac nawet o tym) no probowalem zapisac te bity tak jak mowiles ale teraz "device not recognized" wyglada na to ze nowy procek tez sie zablokowal.. jest jakis sposob odblokowania? programuje STK 200/300 Nie chce tracic kasy na trzeciego procka, gdyz dalej nei wiem w czym problem,...
Nie wiem po co Ci ten zmienny przecinek - chyba nie ma problemu z policzeniem wszystkiego na liczbach całkowitych. Nie wiem też, na co miałbyś czekać w przerwaniu. Możesz do wszystkiego używać jednego timera, np. tego od PWM - to zwykle lepsze rozwiązanie niż zgłaszanie przerwań z kilku timerów. Sam zadecyduj, jak często chcesz wykonywać pomiary -...
W AVR studio, w ustawieniach projektów mam zdefiniowany zegar 11059200 Problem jest tego typu że delay 1ms daje mi w praktyce 17ms, a przerwanie 162kHz zamiast wyliczonych 345,5. W fusach jest na pewno zewnętrzny zegar bo proc bez niego staje. --------- edit z przerwaniami już kapuje, ale czemu ta delajka tak działa? [syntax=c]#include <avr/io.h>...
Witam Próbuję odebrać na komputerze (w programie bray terminal) dane, tzn. konkretnie temperaturę z termometru LM35. Niestety mam problem z odbiorem danych w przerwaniu od UART-u. Poniżej przedstawiam kod programu: [syntax=c] /* Wysyłanie do komputera wartości temperatury interfejsem USART mikrokontrolera */ /* LM35 -> PA0 */ /* ATMega16, f=16MHz...
Jako że prosty przykład, wiele tu informacji nie trzeba wiedzieć. Jedynie przerwaniu od INT0, oraz ustawienie timerta0 w tryb CTC (do stworzenia timera programowego). Reszta to tylko pętla główna w której jest sprawdzany warunek co około jedną sekundę zgodnie z założeniem:[syntax=c]#include <avr/io.h> #include <avr/interrupt.h> // Atmega16...
Witam! Przepraszam, że będę niestety musiał dać bardzo złe wiadomości... 1) Efekt resetu procesora przy zaledwie 3V/m to ... (sorry) tragiczna wiadomość. Zastosowanie do badań pola o natężeniu 3V/m - norma określa tylko dla urządzeń domowych. W związku z tym, że masz czujnik 4-20mA, można domyślać się, że jest to aplikacja bardziej przemysłowa niż domowa...
Pojawił się kolejny problem z odliczaniem czasu :/ .. Spróbuję uchwycić istotę problemu nie wrzucając całości kodu: 1. Wykożystuje licznik T0 i T1; licznik T1 zlicza impulsy a T0 odmierza czas = 1s, po wystąpieniu 31 przerwania (overflow0) od T0 (tj. 1s) wartośc licznika T1 jest wyświetlana na LCD, na czas obsługi przerwana zatrzymuje oba liczniki aby...
Czyli przepraszam i cofam co powiedziałem Nic nie szkodzi ;] może się nie obrażę ;D niedawno myślałem, czy by czegoś podobnego sobie nie zrobić, Gorąco namawiam, można potem używać np. jako lampki nocnej Więc tak dzisiaj pozmieniałem te fusebity co w efekcie dało: >Kostka migocze tak szybko jak u Zlata_n -a bo Atmega korzysta z zewnętrznego rezonatora...
Witam wszystkich. W końcu znalazłem troszkę czasu aby dokończyć swój mega doctor. Na chwilę obecną obsługuje tylko Atmega16, Atmega32, oraz Atmega8 - te przetestowałem - resztę dodam jak tylko znajdę troszkę czasu na to ;) Procki takie jak Attiny2313 czy Atmega88 wymagają innej sekwencji przechodzenia w tryb programowania więc to też zrobię już niebawem...
Witam, w ramach pracy mgr tworze automatyke do bramy. Napęd itd to jest rzecz malo istotna, ale sterowanie zrobiłem na atmedze 16, program napisłem w bascom, wydaje mi sie z reszta bardzo prosty, ale jakieś cuda sie robią:P mianowicie. brama po otwarciu czeka sobie pewien czas i sie zamyka. W trakcie czekania aktualny czas wyświetlany jest na lcd. I...
Witam. Mam problem z przetwornikiem A/C w ATmega16. Chciałem aby wyniki były wyświetlane tylko w momencie kiedy wartość w timerze 0 zrówna się z wartością w OCR0 - ale tylko co drugi raz. Dlatego też dałem switch(cykl). Wyjście OC1A jest podpięte do wejścia timera 0. Wiem że to dziwnie, ale jest to część większego programu i tak musi być. Pomiar napięcia...
Witam Próbuję wysłać, a następnie odebrać bajt danych z pamięci EEPROM 24C04. Niestety zamierzony efekt nie występuje, a brakuje mi już pomysłów co jeszcze można poprawić, dlatego bardzo proszę o przeanalizowanie poniższego programu i wskazanie gdzie są błędy. Po wgraniu programu nic się nie wyświetla ani na wyświetlaczu LCD, ani na terminalu PC. [syntax=c]...
witam! Mam problem z obsługą przerwania Int2 w AtMega16. Po uruchomieniu procesora, ale przed uaktywnieniem przerwań, na wejściu PINB.2 występuje zmiana stanu z wysoki ->niski->wysoki. Po uaktywnieniu przerwania INT2 nie występuje zmiana sygnału na wejściu PINB.2 ale mimo to przerwanie zostaje obsłużone. Czy jest jakiś sposób na zablokowanie przerwań...
Witam wszystkich. Może ktoś pomoże znaleźć mi błąd w kodzie . Otóż zlutowałem układ do pomiaru temperatur , ciśnienia, oraz wilgotności , zaprogramowałem na Atmedze 16 oraz wyświetlam wyniki na LCD 2x16. Po podłączeniu zasilania układ nie zawsze rusza, widać czarny ekran, kilkukrotne podłączenie i odłączenie zasilania, sprawia ze układ rusza i pokazuje...
Witam mam bardzo nietypowy jak dla mnie problem z układem który ostatnio wykonałem. Mianowicie jest to centralka alarmowa oparta o uC ATmega16. Działa na tej zasadzie że pod wejście PB2(INT2) podpięty jest kontrakton (zwiera do masy) do którego przykładam magnes i albo rozbrajam albo uzbrajam centralkę. Z grubsza to wygląda tak: PB2(INT2) skonfigurowane...
Witam! Przygotowując projekt z elektroniki biomedycznej (termometr lekarski) natrafiłem na problem z komunikacją z cyfrowym czujnikiem temperatury (LM92). Po zainicjalizowaniu magistrali i wysłaniu adresu urządzenia slave (00) na wyświetlaczu pojawiają sie same zera. Sama konwersja jest poprawna gdyż po wypełnieniu tablicy czuj na sztywno dowolna wartością...
Nie udało mi się rozwiązać problemu z komunikacją z zegarem rtc więc, postanowiłem skorzystac z gotowego rozwiązania z książki Mirosława Kardasia, w której co prawda jest opisany PCF8583, ale w zasadzie jest on bardzo podobny do mojego PCF8563P. Po wgraniu programu, na wyśw. LCD i w terminalu nic się wyświetla... Pomyślałem że skoro ciągle nic się nie...
Witam panowie od razu podkreślę że jeszcze uczę się bascoma więc proszę nie krzyczeć i nie usuwać tego postu do kosza Siedzę już nad tym 3 dzień i efekt mojej pracy nie najgorszy ale mam parę pytań po pewnych rzeczy nie rozumiem i nie mogę rozwiązać. Więc tak założeniem był pomiar temperatury przez ds18b20 wyświetlenie je na LCD i 4 wyświetlaczach 7...
Witam Programuję swojego Atmegę w AVR studio korzystając z AVR GCC. Mam program, znaleziony na elektrodzie (zamieszczony poniżej). Problem polega na tym za każdym razem kod RC5 z pilota jest odrzucany jako że transmisja jest rzekomo przerywana (zaznaczyłem to miejsce w programie). Gdy miejsce to zahaszuję, program wydaje się działać, tyle że kod RC5...
Nie jestem pewien, czy to procesor jest zablokowany, czy raczej problem z podłączeniem ISP. Dla zablokowanego procesora odczyt sygnatury zwracza raczej 0xffff, a nie tak jak u ciebie 00006. Reanimować możesz na dwa sposoby (o ile to zablokowany MCU) - pierwszy to podłączyć zegar, np. 1-8 MHz do wejścia XTAL MCU. Przebieg można wygenerować np. programowo...
Witam Na wstępie powiem że nie jestem ekspertem w C. Pisze programik działający na Atmedze16. Mam dwa dwa układy Ram i RTC i muszę się z nimi dogadać przez SPI. I się nie dogaduje. Zeby zapisać cos i odczytać z Ramu muszę zapisać (dla zapisu) kod rozkazu - 8 bitów, adres komórki zapisywanej - 24 bity i dane - 8 bitów. Przy odczycie analogicznie rozkaz,...
do CR0 ładowałem wartość 100 na preskalerze 8, ale i tak program się wieszał. Robiłem test w którym momencie się wiesza i wyszło, że przy TIMSK |= (1 << OCIE0) [syntax=cpp]#include "board.h" #include <avr/interrupt.h> #include <avr/math.h> #include <avr/signal.h> #include <util/twi.h> #include <avr/pgmspace.h> #include...
Witam wszystkich! Pewnie pomyślicie "znowu to samo", no ale zlitujcie się w Wigilię i przeczytajcie te kilka zdań :D Walczę z problemem od kilku dni. Nie potrafię skonfigurować Timera by konwertował dane z 1wire poza główną pętlą. Nie mogę sobie pozwolić na waitms, bo wtedy mam problemy z poruszaniem się w menu. Mam już działający Timer1 odliczający...
Zle kombinujesz. To jest tranzystor bipolarny, a takie wzmacniaja prad, a nie napiecie. Napiecie jest kwestia wtorna. Dlatego potrzebujesz uklad, ktory nie zwiekszy napiecia na bazie, tylko prad bazy. Moze to byc op-amp, ale zamiast tak komplikowac lepiej wstawic bufor, np. w postaci kolejnego tranzystora. Tu tylko pojawi sie problem, bo w ukladzie...
Witam. Prosze o pomoc poniewaz napisalem prosty program z wykorzystaniem przerwania z INT1 ale niestety procesor nie reaguje na zmiane stanu na wyjsciu PD3. Mam atmege16 na plytce testowej. W programie chodzi o to zeby po odebraniu przerwania na wyswietlaczu pojawila sie wartosc licznika Timer1. Timer1 ma pokazywac czas pomiedzy dwoma impulsami. To...
Witam! Na wstępie dziękuję za ww. kod :) Jednakże mam problem. Posiadam Atmega16 + DS1305 ( RTC na SPI ). Robie tak: DS1305_init(); // Eneble oscillator note: after power up oscillator is atopped DS1305_write_byte(0x8F,0x05); // 0b0000 0101 => 0x05 ENABLE OSC, WP=0 // Ustawianie zegara DS1305_write_byte(0x80,0x00); //...
atmega16 eeprom atmega16 ds1820 atmega16 projekt
kompresor przepuszcza obliczyć punkt praca tranzystor led94901s manta
Jak otworzyć bagażnik w Hyundai i10? Praktyczne porady Grundig 5851-A9M10G-0P10 Firmware Inquiry