Witam, W programie przedstawionym poniżej nie zostaje wywołana obsługa przerwania. Próbowałem na innych timerach tez bez skutku. AvrStudio 6, Atmega8a, optymalizacja O2. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include "utils.h" #include "display.h" int main(void) { LEDInit( ); Display(0); //Init Timer 0 TCNT0 = 6; TCCR0...
Do tego co napisał tadzik85 zauważ, że wszystkie rozkazy skoku wskazują na __bad_interrupt , który wygląda np. tak: [syntax=asm]00000036 <__bad_interrupt>: 36:e4 cf rjmp.-56 ; 0x0 <__vectors>[/syntax] a jak to działa zrozumiesz analizując swój plik lss.
Będę używał Power-save mode, nie Power-down mode. on wybudza mikrokontroler (ATmega) tylko poziomem nie zboczami. Rzeczywiście w dokumentacji jest napisane "Only level interrupt INT1 and INT0." Tzn. u mnie będzie poziom (jeśli dobrze rozumiem tą koncepcję), bo po podłączeniu zasilania na INT1 ciągle będzie napięcie zasilania. Ale czy ze strony programistycznej...
Witam, Potrzebuję zrobić na TDA1543A i Atmega8 regulowane napięcie stałe w zakresie napięc podawanych przez TDA1543A. Znalazłem przykładowy program i zmontowałem układ, atmega wysyła dane lecz na wyjściach TDA mam jedynie napięcie stałe bliskie napięciu zasilania. Atmega8A taktowana kwarcem 12MHz. Próbowałem także 1MHz i 8MHz i nic to nie zmieniało....
Witam serdecznie. Zazwyczaj większość problemów udaje mi się rozwiązać bez pisania na forum, jednak ten doprowadza mnie już do szewskiej pasji. Chcę zrobić zegarek na Atmega8A taktowanym wewnętrznym oscylatorem, z podłączonym kwarcem zegarkowym do wejść TOSC1/TOSC2 -bez powodzenia. Zawsze program staje na pętli http://obrazki.elektroda.pl/2670817700_1...
Witam! Uczę się programowania i dotarłem do ADC. Problem polega na tym, że program jakby w ogóle nie był wykonywany. Po włączeniu uC jedyne, co obserwuje to po naciśnięciu przycisku LED1 i LED2 zapalają się. http://obrazki.elektroda.pl/2299638600_1... Przewertowałem DataSheet i tutejsze forum, ale wszystkie poprawki (już naniesione)...
FLEA jest z powodzeniem dostępna na stronie co wyżej podałem. Tam też jest nawet widok lustrzany płytki w PDFie. Wystarczy na laserówce wydrukować, czyli termotransferem + B327 podziałać i sukces. Na ebayu jak dobrze poszukasz to parę atmega8A kupisz za 25zł (5 sztuk) wraz z wysyłką :D . U nas jak wiesz za sztukę z wysyłką wychodzi coś koło 17zł. Co...
Wg. mnie zamiast tego: [syntax=c]#include <7seg.h> powinno być "7seg.h" [/syntax] Oraz zapomniałeś chyba dodać [syntax=c]#include <avr/interrupt.h>[/syntax] Oraz gdzie ty masz wektor przerwania? Bo go nigdzie nie widzę..
Ustawiasz bit zezwolenia na przerwanie TXCIE, a gdzie masz procedurę obsługi tego przerwania? Po odesłaniu znaku flaga TXC zostaje ustawiona i ze względu na brak procedury obsługi tego przerwania program najprawdopodobniej startuje od początku. Nie ustawiaj bitu TXCIE lub napisz dla tego przerwania chociaż pustą procedurę obsługi: [syntax=c] EMPTY_INTERRUPT(USART_TXC_vect);...
1. Volatile: http://mikrokontrolery.blogspot.com/2011... 2. Tryb asynchroniczny: 1. Disable the Timer/Counter2 interrupts by clearing OCIE2 and TOIE2. 2. Select clock source by setting AS2 as appropriate. 3. Write new values to TCNT2, OCR2, and TCCR2. 4. To switch to asynchronous operation: Wait for TCN2UB, OCR2UB, and TCR2UB...
No okej.. w takim razie ustawiam wyjście na ADC3: [syntax=c] void ADC_Init(){ ADMUX|= (1<<REFS0); //AVcc AREF ADCSRA|= (1<<ADEN); //ADC Enable ADCSRA|= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); //128 Prescaler SFIOR|= (1<<ACME); //Multiplexer enable ACSR|= (1<<ACIE); //Interrupt enable ADMUX|= (1<<MUX0) |...
Witam. Warning1#warning "This header file is obsolete . Use <avr/interrupt.h>." Przecież pisze co masz zrobić - używać nagłówka interrupt.h, a nie przestarzałego signal.h, a Ty wstawiłeś oba, a w dodatku przerwań nie używasz :) Error2'PWM10' undeclared (first use in this function) Gdybyś sprawdził w datasheet ATmega8A to znalazłbyś informację:...
(at)Janusz_kk , to "po twojemu" to było do autora tematu i miałem na myśli to: Kompilacja: $ avr-gcc -mmcu=atmega8a -c -o led-err.o led-err.c $ avr-gcc -o led-err.out led-err.o $ avr-objcopy -O ihex -R .eeprom led-err.out led-err.hex Powinno być "avr-gcc -mmcu=atmega8a -o led-err.out led-err.o". Inaczej zamiast ustawienia przerwań i wywołania main...
Wyrzucenie makr nic nie daje, a czytelność kodu to kwestia gustu także nie będę o niej dyskutował. Problem został rozwiązany. Przyczyna: brak #include <avr/interrupt.h>w pliku adc.c - trywialny błąd. Dlatego makro ISR() nie było poprawnie rozwijane. Naprowadził mnie na to fakt ze przy programowaniu oboma wersjami programu zmieniają się w pamięci...
(at)ElektrodaBot Mam tak i niestety dioda nie działa, wtedy chociaż się zapalała. Porównaj sobie te kody. #define F_CPU 8000000UL // 8 MHz #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 volatile char odb_dane; volatile char odb_flaga = 0; void USART_Init(unsigned...
Cześć. Mam pytanie odnośnie sterowania paskiem led WS2815 poprzez Atmega8A-PU. Zasilane 12V. Do obsługi paska korzystam z biblioteki: light_ws2812.h (nie znalazłem innej z której mógłbym skorzystać). Mam krótki prosty kod. Mianowicie zapala on kolejno 20 diod. Problem polega na tym jak na początku zresetować pasek/wyjście. Chodzi o to, że gdy wgram...
Cześć, uczę się wykorzystania timerów w mikrokontrolerze Atmega8A. Chcę aby dioda migała co sekundę. Wykorzystuję do tego 8 bityowy timer0. Taktowanie ustawione mam na 8000000Hz, a preskaler na 1024. Chcę, żeby przepełnienie występowało co sekundę czyli żeby dioda migała co sekundę, ale tak się nie dzieje. Zmieniam wartość TCNT0 na 30, bo taka wychodzi...
Acha to juz mniej wiecej rozumiem a to jest kod mojego przykladowego programu wlaczajacego i wylaczajacego PB3 co 5 sekund co tu jest nie tak ze slabo swieci? Jest w nim cos nie tak? #include <avr/io.h> #include <avr/sleep.h> #include <avr/interrupt.h> #define F_CPU 1000000UL /* 1MHz zegar procesora */ #define CYCLES_PER_US ((F_CPU+500000)/1000000)...
Co do drgań styków to nawet nie chce mi się w Twoją logikę wnikać, ale nie widzę tam pomysłu, o którym Ci pisałem. Przez ostatnie pare dni posiedziałem nad tym i po testowaniu mojego sposobu na innym kontrolerze doszedłem do wniosku, że faktycznie on nie działa (przynajmniej w zdecydowanej większości przypadków). Zrobiłem coś takiego. Czy ten kod poprawnie...
Próbuję zrobić zegar cyfrowy zbudowany z wyświetlacza LCD (2x16) i mikrokontrolera Atmega8A. Chcę wykorzystać do tego 16 bitowy timer1, zegar ma działać na tej zasadzie, że w przerwanie występujące co sekundę zwiększa zmienną seconds o 1, potem gdy zmienna seconds = 60 to do minut dodaje 1 itd... Problem w tym, że gdy dla testu chciałem wyświetlić aktualne...
Dodaję do swojego kodu funkcję sleep w trybie ADC Noise Reduction. Gdy uśpię uC w funkcji main, pobór prądu jest taki sam jak bez włączenia sleepa. Dopiero gdy uśpię go w pętli głównej, to wtedy prąd spada. Dlaczego? Nie wystarczy jednorazowo uśpić uC i niech sobie robi co chce w przerwaniach? Po co go usypiać przy każdym powtórzeniu kodu? No i dlaczego...
Schemat: http://obrazki.elektroda.pl/8102506300_1... Program: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main(void){ DDRB = 0xFF; DDRC = 0xFF; PORTB = 0x06; PORTC |= (1<<PC0) | (1<<PC3) | (1<<PC4); TCCR1A |= (1<<COM1A1) | (1<<COM1B1) | (1<<WGM11);...
Witam, Mógłby ktoś sprawdzić, gdzie robię błąd? Chcę zapisać cokolwiek do wew. pamięci EEPROM. [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <avr/eeprom.h> #include <avr/interrupt.h> //deklaracja zmiennych int h, m, s, i; //inicjalizacja uint8_t eeprom_val[512] __attribute__((section(".eeprom")));...
Dzięki za zainteresowanie panowie ;) Wrzucam poprawiony kod, serwomechanizmy nie reagują. Póki co zdecydowałem się w ciemno wykorzystać wartość zaproponowaną przez BlueDraco. Jeśli chodzi o prędkość serwomechanizmów, to nie jest to problem mniejsza prędkość, to w moim projekcie większa dokładność, po drugie prędkość zawsze będzie można zwiększyć. Ale...
Proszę, oto kod: #include <avr/io.h> #include <util/delay.h> #include "HD44780.h" #include <stdio.h> #include <avr/interrupt.h> volatile int ms=0, sec=0, min=0, h=0, time=0; #define SetBit(x,y)x |= (1<<y) #define ClrBit(x,y) x &= ~(1<<y) #define NegBit(x,y) x ^=...
Wgrałem taki kod, poprzednio też stosowałem się do Waszych zaleceń. Przestawiałem kod, zgadza się, próbując dość do tego co jest nie tak. Jeśli coś jest nie tak z funkcją odbierz to proszę napiszcie mi co, bo ja ja wziąłem bezpośrednio z datasheeta. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> #define...
Poproszę o sprawdzenie kodu. W gruncie rzeczy działa, tak jak powinien: jeden z przycisków diodę zapala (czy też "zaświeca"), ale po zwolnieniu go ona gaśnie. Naciśnięcie drugiego zapala inną diodę, którą wyłącza ponowne naciśnięcie tego samego przycisku. Chodzi mi głównie o wytknięcie ewentualnych mankamentów, możliwości, kiedy ten kod się mógłby nie...
WItam, mam problem na który nie mam pomysłu. Na ATMEGA8A robie sterowanie silnikiem krokowymw 3 pozycjach lewo, prawo i stop,i dziala zgodnie z oczekiwaniami. Nastepnie dolaczylem do INT0 wlacznik krańcowy zeby generowal przerwanie i cofal silnikiem wrazie wystapienia przerwania. I tu zaczely sie schody bo podciagam VCC pod INT0 zeby przerwanie generowalo...
Witam, Mam mały problem, próbuję wykonać komunikację interfejsu szeregowego z modułem bluetooth XM-15B aby wysyłać dane z aplikacji na telefonie, która będzie sterować kolejno odpowiednimi elementami. Problem polega na tym, że próbuje zainicjować UARTA, wysyłam paczkę danych, uC ma sprawdzać te informacje i na ich podstawie zapalać albo gasić odpowiednie...
Cześć. Mój problem dotyczy Atmegi8 i obsługi Timera2 w trybie CTC. Poniżej przedstawie napisany kod i problem który próbuję rozwiązać od pewnego czasu. [syntax=c] #define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> volatile int zrob_pomiar=0; volatile int odswiez_wyswietlacz=0; int main() { TIMSK |= (1 << OCIE2);...
[syntax=c]/* * AVRGCC1.c * * Created: 2014-03-09 16:08:19 * Author: Dexter1 */ //#define F_CPU 11059200 #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> struct { char gg,min,sek; }operacyjny_czas; void znakspecon(char symbol) { char znaki[5]={0b00000010,0b00000100,0b000000... char adres[5]={0b00001000,0b00001000,0b000100...
Dobry wieczór, Mam problem z połączeniem mojej Amegi8 po UART z PC. Opierając się o wiedzę z blogu Mirka oraz przeglądając elektrodę w poszukiwaniu podobnych tematów ( #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include <avr/interrupt.h> #include <string.h> #include <stdint.h> #define USART_BAUD...
tablica wektorow przerwań jest ustawiona na bootloader. chyba ze to źle robie... boottest2.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000158 00001800 00001800 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 0000002a 00800060 00001958 000001ec 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000002...
Ok, problem jest na 100% z kodem odpowiedzialnym za odczyt ADC. Trochę go nazmieniałem (teraz używa przerwań): 11000011 OR 00000010 -------- 11000011 Od prawie 12 lat programuję i taki błąd... Oczywiście ADMUX musi zostać ustawiony na wartość początkową przed ustawianiem nowej - w tym przypadku 0b11000000 lub po prostu 0xC0. Teraz wszystko pięknie działa,...
OK, i have tested this code on uP today on prototype board. There was lot of mistakes, i chave correct them. But idea is still the same. There is working code, tested on Atmega8a, 8MHz internal. Changes only init (diffrends ports, and RX interrupt handle) and main loop. I dont use get_dips() function, becouse i havent dips, and use constant start adress....
dondu , dziękuję za radę, bardzo pomocny okazał się również odnośnik do bloga który podałeś. Poniekąd udało mi się rozwiązać problem ale nie do końca. Otóż te napięcia o których pisałem w poście pierwszym, a które nie zgadzały się z tym co ustawiałem w programie wynikały z mojego głupiego błędy - masę podłączyłem do masy innego układu zasilania która...
Witam Mój problem polega na tym, że muszę odczytywać z ADC, a następnie wysyłać dość duże paczki danych. Wymyśliłem tak jak poniżej (wiem, że nie najlepiej), że wezmę puszczę przetwornik w FRM, tak żeby generował przerwanie po każdym pomiarze i w tym przerwaniu wysyłam to prosto po USART. [syntax=c] //pliki nagłówkowe #include <avr/io.h> #include...
Hej rebjata, próbuję wykonać obrotomierz na Atmedze8A, jednak utkwiłem w martwym punkcie. Obrotomierz działa w oparciu o transoptor odbiciowy CNY70. Mierzy obrotu silnika BLDC. https://obrazki.elektroda.pl/9313357600_... Połowa rotora silnika jest czarna a połowa biała. Transoptor jest przyłożony do rotora, w czasie obrotu silnika fototranzystor...
Witam Mam taki o to problem. W przerwaniach Timera0 jest odczyt z DS18B20 i multipleksowanie 4 7Segmentowych wyświetlaczy. Działa to ok, wyświetla się poprawna temperatura. Chciałbym jednak przesłać ta temperaturę do LabVIEW przez RS232. Napisane funkcje do Inicjalizacji i Transferu działają poprawnie, w osobnym projekcie bez przerwań od Timera przesyłają...
Witam. Od dość długiego czasu zmagam się z projektem ramienia i aplikacji nim sterującej. Cały projekt jest już prawie ukończony, poza komunikacją usart, która przysparza mi olbrzymich problemów. Aplikację napisałem w visualu. W skrócie, po kliknięciu przycisku "wyślij" program wysyła po serial porcie 18 bajtów (6x[bajt kontrolny+wybór serwa+wartość...
A w pliku "m8def.inc" stoi: .equINT0addr=$001; External Interrupt0 Vector Address .equINT1addr=$002; External Interrupt1 Vector Address .equOC2addr =$003; Output Compare2 Interrupt Vector Address .equOVF2addr=$004; Overflow2 Interrupt Vector Address .equICP1addr=$005; Input Capture1 Interrupt Vector Address .equOC1Aaddr=$006; Output Compare1A Interrupt...
Zgodnie z tym, co napisał BlueDraco podciągnąłem wejścia Atmegi do Vcc. Jednak w takim ustawieniu, w przypadku gdy przewód doprowadzający (odbiornik -> wejście Atmegi) odepnie się od odbiornika pilota (lub odepnie się od strony Atmegi) to silnik automatycznie zacznie się kręcić. Pomyślałem więc, że dobrze by było sterować akcją na zasadzie logiki...
Witam, ostatnio zabrałęm się za projekt prostego zegara. Układ wyświetla godzinę na 4 cyfrach wyświetlacza LED wspólna anoda. Oto wyniki mojej pracy: schemat: http://obrazki.elektroda.pl/9370666700_1... Do mikrokontrolera Atmega8A podłączony jest kwarc 8MHz. A to program [syntax=c]/* * zegar.c *F_CPU 8000000UL zewnetrzny kwarc częstotliwość...
Już dość dawno temu powstał kod na Atmegę8, dla migania LED. Kod troszkę toporny, jak to zazwyczaj początkujący pisze. Generalnie działa. Ostatnio dodałem jakąś nową opcję. Wprawdzie światełka działają jak trzeba, lecz chciałbym troszkę poprawić kod w fragmencie współpracy z eepromem. Mam z tym problem gdyż poszedłem w kierunku większych prądów i samemu...
Witam, potrzebny jest mi generator fali PWM o zmiennej częstotliwości i wypełnieniu. Górna częstotliwość wynosi 150kHz, dolna 10kHz. W programie wykorzystuję dwa kanały adc (tj. adc1, adc2) oraz jedno wyjście dla wspomnianej fali (tj. PC5). Atmega8 pracuje z zewnętrznym kwarcem 16MHz. Górna częstotliwość wymaga 106 cykli zegarowych, dolna natomiast...
Jeśli wysylasz male porcje danych i rzadko mozesz zastosowac takie roziwazanie. W inym przypadku proponuje wykorzystac przerwania i zrobic jakis buforek nadawczy/odbiorczy.
To pokaż teraz cały kod po zmianach. Dodano po 7 Niestety muszę wyjść, ale będę około 21:00 to pomogę Ci dalej.
Witam Mam pytanie jak obudzić procesor w przerwaniu. Jak usypiam w głównej pętli while usypianie i budzenie działa jak powinno. Ale chciałem usypiać na INT1 a na INT0 budzić lub na INT0 budzić i usypiać (co chyba jest bardzo trudne). [syntax=c] void sleepNow() { MCUCR|=(1<<SM1); MCUCR|=(1<<SE); asm volatile ("sleep"::); } int main(){ serialInit(9600);...
Zasilanie biorę bezpośrednio z portu USB więc musi być te ~5V. Procesor to AtMega8A-PU Zmiany w configu to [syntax=c] #define USB_CFG_IOPORTNAME D #define USB_CFG_DMINUS_BIT 6 #define USB_CFG_DPLUS_BIT 7 #define USB_CFG_CLOCK_KHZ 16000 #define USB_CFG_IS_SELF_POWERED 0 #define USB_CFG_MAX_BUS_POWER 50 [/syntax] zgodnie z tym co na schemacie połączeń...
Sprawa wygląda tak, że siedze nad tym długo, a w Internecie nie znalazłem nic, co by mi pomogło. Szukałem dość dużo i już zaczynam się frustrować. Nie chodzi o delay trwający 750ms, bo ten wyeliminowałem. Rzecz jest m.in. w tych, które trwają od kilku do aż 500µs (reset pulse). Śmiem przypuszczać, że to właśnie za przyczyną tych krótkich opóźnień...
atmega8a zasila atmega8a avrdude ds18b20 atmega8a
wrozamet piekarnik laguna czujnik obrotomierz schemat rączki
Karta graficzna do ASRock N68C-GS FX - wybór i kompatybilność Najlepsza karta graficzna do ASRock N68C-GS FX