1. Po pierwsze nie "na każdym segmencie", a "na każdej pozycji". Wyżwietlacz jednej cyfry składa się z siedmiu segmentów, dlatego nazywa się "siedmiosegmentowym". Wyświetla Ci to samo, bo tak kazałeś w programie: cyfra[3] = sek % 10; //tysiace cyfra[2] = sek % 10; //setki cyfra[1] = sek % 10; //dziesiatki cyfra[0] = sek % 10; //jednosci - na czterech...
Litości :) Litości :) Pomijąjąc powyższe fakty, program powinień wyglądać tak: [syntax=c]volatile int program; przerwanie_przycisku() { program++; } main() { konfiguracja(); while(1) { if(program == 0) migaj_w_lewo(); else if (program == 1) migaj_w_prawo(); else if (program == 2) migaj_z_gory_na_dol(); } return 0; }[/syntax] lub jak kolega wyżej napisał...
Kod wygląda tak: void read_data(){ sread; register unsigned char i2; for(i2=0;i2<=128;i2++){ PORTC=i2; if(bit_is_set(PORTC, 6)){PORTB |=_BV(5);}else{PORTB &=~_BV(5);} PORTD = y; } } Nie widze żeby kompilator miał tu jakieś zastrzeżenia, nie znam asm może ktoś...
Witam. Dopiero zaczynam przygodę z mikrokontrolerami(konkretnie ATmega8), więc problemy na moim stopniu zaawansowania to pewnie normalka :) Problemem jest to, że ze zdefiniowanych portów(PB1, PB2 i wszystkie PD) działają tylko PB1 i 2. Na zdjęciach podpiety jest tylko PB2, ale to nie ma znaczenia. Poniżej zdjęcia mojej płytki stykowej i kod programu(w...
Witam Uruchomiłem przykład z tej strony http://tuxgraphics.org/electronics/20090... i wszystko działa tak jak powinno i mam możliwosc zdalnego sterowania z serwera na avr. Problem jest z tym że nie rozumiem w jaki sposób realizowane jest w podanym niżej kodzie załączanie i wyłączanie czterech portów atmegi. Pomimo...
Witam. Zakupiłem uC ATMEGA88 (Dokładnie pisze na nim: ATMEGA88-20PU). Napisałem najprostszy z możliwych programów: #include <avr/io.h> int main(void) { int i = 0; DDRD = 0xFC; //1111 1100 PORTD = 0x00; while(1) { if(!(PIND & 0x01)) PORTD = 0x08; if((PIND & 0x01)) PORTD = 0x04; }...
Witam! Czy ktoś mógłby mi pomóc przerobić kod tak aby był obsługiwany przez Atmegę 88? (poniższy jest obsługiwany przez atmegę 16 i dotychy zlicznia impulsów przez zbocze) [syntax=c] void Init_INT() // Inicjalizacja przerwania INT0 { DDRD = 1<<PD2; PORTD = 1<<PD2; GICR = 1<<INT0; MCUCR = 1<<ISC01; void Init_Timer() { TCCR1B |=...
Witam, od kilku dni próbuje zrobić regulator trzech diod led PWM na ATMEGA88 (programator AVRASP). Timer1 (wyjścia PB1, PB2) działa bez zarzutu, ale już Timer2 (PB3) nie daje znaku życia. Próbowałem już wszystkich kombinacji z ustawieniami, rejestrami, bitami, trybami, podłączeniem diod, zmianą procesora (na ten sam typ) odłączaniem ukladu od programatora...
Witam! Zająłem się zabawą z Atmegą 88 i mam problem z uzyskaniem katalogowego poboru prądu w głębokim uśpieniu. Atmega podłączona minimalnie, tylko 2 kondensatory 100n przy zasilaniu i 2 ledy które pomagają upewnić się że Atmega śpi. Przy zasilaniu 1,8V udało mi się zejść do 8uA. ADC, komparator, watchdog i brown out wyłączone. Taktowanie wewnętrznym...
Witam. Od paru godzin męczę się z niedziałającym USARTem na atmedze32. Na atmedze88 wszystko śmiga jak ma więc przejściówka USB<->RS232 jest ok. Brak zimnych lutów na płytce. Kwarc zewnętrzny (ustawiony jako EXTHIFXTALRES_258CK_4MS - przy czym nie wiem czy tak ma być dla kwarcu 16MHz). Kod zamieszczam poniżej: [syntax=c] /* * softPWM.c * * Created:...
Poprawiłem kod żeby był czytelniejszy i nieco go skomentowałem: [syntax=c] /* układ ATmega88pa-pu 8MHz */ #define F_CPU 8000000 #define BAUD 9600 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdint.h> #include <stddef.h> #include <avr/interrupt.h> #include <util/setbaud.h> volatile...
Chyba miałeś na myśli _BV( i ). jeśli tak, to po mojemu to by było jakoś tak (zakładając zgodność kolejności bitów): uint8_t mask = (_BV(5) - 1); /* 0x1f */ PORTD = (PORTD & ~mask) | (cyfry[z][y] & mask); /* skopiuj 5 najmłodszych bitów cyfry[z][y] do PORTD */ :| Nic z tego nie...
Witam. Mam problem z podstawowa konfiguracja portów w Atmega8 (oraz Atmega88). Najpierw myślałem ze uC jest uszkodzony. Zamieniłem na Atmege88. Nadal tak samo się zachowuje. Jak np na mam odczytać PINB5 i w zależności od jego stanu zmienić któryś bit PORTB na przeciwny to nie działa nic, ciągle widzi ze PINB5 ==1. Jak PINB5 ma sterować PORTD działa...
Witam. "Przerabiając" książkę p. Tomasza Francuza "Język C dla mikrokontrolerów AVR" natknąłem się na problem obsługi klawiatury matrycowej w przerwaniach. Klawiatura ma wykorzystywać kolejne ustawianie stanu niskiego na pinach na potrzeby multipleksowania. Niestety wciskanie przycisków klawiatury nie powoduje żadnej reakcji. Co ciekawe (dla mnie) po...
Witajcie moi drodzy. Udało mi się obsłużyć (częściowo) klawiaturę matrycowa. Proszę o sprawdzenie kodu (kod bazuje na przykładzie dondu bo przez rs232 wysyłam to co kliknięto) http://obrazki.elektroda.pl/2692005700_1... 1. Co można ulepszyć/usprawnić? 2. Czy idea (oraz tryby pracy portów) są poprawne? 3. Czy wartość rezystora jest odpowiednia?...
Witam! Mam problem z czujnikiem do mierzenia odległości(BPU-1640IOAH12). Mianowicie nie potrafię spowodować jego uruchomienia. Sygnały które wysyła funkcja uruchom_sonar nie powodują żadnych efektów. Czy mógłby ktoś wytłumaczyć co jest nie tak w programie? Czujnik jest podczepiony pod nożkę PC3. [syntax=c]#include <avr/io.h> #include <math.h>...
Witam, odgrzebałem swój projekt odbiornika podczerwieni, który działa świetnie, rozpoznaje adres i komendy pilota. Wszystko obsłużone jak należy. Problemem jest wykrycie przytrzymania przycisku. Nie zrobiłem tego odrazu a teraz zaczęły się schody. Napisałem fragment odpowiedzialny za obsługę przytrzymania jednak nie działa :( Projekt na Atmega328p,...
[syntax=cpp]/* |------------------------------| | "pov_clock.c" | | Michal Olichwer | | Krzysztof Rosinski | | Wyswietlacz Widmowy !!!! | | ATmega 8MHz zew. | |------------------------------| */ #define L0_OFF PORTB|=(1<<4); #define L0_ON PORTB&=(1<<4) #define L1_OFF PORTB|=(1<<3); #define L1_ON PORTB&=(~(1<<3)) #define...
Witam Od kliku dni walczę nad implementacją ENC28J60 do Xmegi128A3U. Najpierw udało mi się zrobić malutki serwerek na Atmega32 i działa poprawnie ( bazowany na książce Mirka ). Teraz chcę go przełożyć do Xmega i nawet nie chce go pingować. Przypuszczam że błąd leży gdzieś w SPI. Xmega taktowany zewnętrznym kwarcem 16MHz , SPI - 1MHz, ENC28J60 taktowany...
Witam Mam problem z uruchomieniem wyświetlacza na sterowniku jak w temacie. Zakupiłem sobie wyświetlacz w sklepie kamami o oznaczeniu LCD12864-NEG_BLUE i przygotowałem dla niego płytkę, której schemat jest w załączniku. Sercem układu jest ATmega8 taktowana z częstotliwością 8MHz (wew. RC), ustawienia Fuse bitów: H-0xD9 L-0x94. Program pisałem wykorzystując...
Tylko w kodzie, który "scop" udostępnił linijki wł. i wył. diodę są zakomentowane - może warto byłoby to zmienić (plik "simple_server.c"): if (cmd==1) { //PORTD|= (1<<PD7);// transistor on //IOCLR |= (1<<26); //LED1ON(); i=1; } if (cmd==0) { //PORTD &= ~(1<<PD7);//...
Tak, w C wartość różna od 0 jest prawdą, stąd też twoja dziwaczna konstrukcja: if( (PORTD&0x20)>>5 ) powinna wyglądać po prostu tak: if(PORTD&0x20) Swoją drogą stosowanie makra _BV() jest IMHO pomysłem dobrym. Ma to swoje wady, ale też zalety. Proponuję przeanalizować co się stanie jeśli omyłkowo zamiast x<<5 wpiszemy x<5. Generalnie...
Generalnie w takich przypadkach nota układu twoim przyjacielem. Poczytaj to co napisałem w komentarzach. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { uint8_t i = 0; DDRD = 0xff; //TCCR2A |= (1<<WGM21)|(1<<WGM22); // źle ten tryb jest zarezerwowany TCCR2A |= (1<<WGM21) // CTC //TCCR2A |= (1<<CS20)|(1<<CS21)|(1<&l...
Zobacz to i wyciągnij wnioski [syntax=vbnet]$regfile = "m88pdef.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '$sim Cursor Off Cls Config Portd.0 = Output Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1 , Compare A = Disconnect , Compare B = Disconnect Compare1a = 62500 On Compare1a Beep Enable Compare1a Enable Interrupts...
Zmieniłem w Alias, niestety nie mogę znaleźć składni funkcji debounce z dwoma warunkami, więc może mógłby ktoś umieścić jak to powinno wyglądać. Po zmianie dalej występuje błąd: Error 61: Label not found [PINC.1 ]. Co jeszcze zmienić, aby poprawić error? Poprawiony kod: <code> $regfile = "m8def.dat" $crystal = 12000000 Config Portc.0 = Input Config...
Na mojej płytce wszystkie programy działają. Odczytaj programatorem plik z procesora i porównaj z tym wygenerowanym przez kompilator to bedziesz wiedział czy programator źle wpisuje program. Spróbuj ten program tylko pokombinuj z watrością [ , Wait = 2500] tzn wprowadzaj wartości od 100 do 5000. Musi zadziałać. Dla kwarcu 8MHz i ATMega88 [syntax=basic4gl]$regfile...
Fragment schematu układu: http://obrazki.elektroda.pl/2588316800_1... Przykładowy kod (funkcje TWI ze strony http://radzio.dxp.pl/twi/): #define F_CPU 8000000UL #define SCL_CLOCK 100000UL #include <avr/io.h> #include "TWI.h" int main() { DDRC = 0x09; PORTC = 0x09; DDRD = 0x03; PORTD = 0x00; TWSR = 0; TWBR...
Dzięki za plik, ale nic to nie dało. Użyłem 16Mhz kwarc, D- mam na PortD.0, D+ pod PortD.1 i 2. Zmieniałem linię podłączeń usb w plikach USB config, i też nic to nie dało... gdzie powinny być podłączone te linie dokładnie? Mam ATmega88, nie 8,kompiluję i programuję go pod AVRstudio4. Dodano po 1 A jednak działa! Wykrywa prawidłowo, no to teraz będę...
fakt temperatura(1) to tablica, sam pomiar temp nie jest mojego autorstwa ,daje cały program: [syntax=basic4gl] $regfile = "m88def.dat" $crystal = 8000000 Config Portd.0 = Input Config Portd.1 = Input Config Portc.1 = Input Config Portd.2 = Output Config Portd.3 = Output Config Portd.4 = Output Config Portb.6 = Output Config Portb.7 = Output Config...
Witam, Wydaje mi się iż zapisuje wszystko poprawnie z datasheet jednak coś jest niepoprawnie... Wiem sprawa banalna ale za pomoc bede wdzieczny. [syntax=c] #include <avr/io.h> // definicja IO #include <avr/interrupt.h> // dolaczenie naglówkowego potrzebnego do obsl. przerwan #include <util/delay.h> // proste opuznienia // dioda LED...
(at)Markosik20 Dziękuję za zainteresowanie! :-D Nie zrozumieliśmy się. Nie chcę transmitować znaków w czasie rzeczywistym. Druga sprawa - w RS485 masz wiele nadajników, jeden master reszta slave - nie można sobie tak śmiecić na linii (po znaku), to nie buforowany RS232! Inna sprawa, że docelowo przesył będzie w trybie ASCII (później rozszerzę soft o...
[syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { /* Wszystkie linie portu D będą wyjściami */ DDRD = 0xFF; /* 0xFF binarnie 1111 1111 */ DDRC = 0xFF; DDRB = 0xFF; DDRA = 0xF0; PORTB=0x00; PORTC=0x00; PORTD=0x00; PORTA=0x00; /* Początek nieskończonej pętli */ while(1) { PORTB=0x00; PORTC=0x00;...
Witam, Mam dziwny problem w mikrokontrolerem. Z nieznanych mi powodów restartuje mi się on gdy ustawiam źródło odniesienia dla przetwornika ADC. Co ciekawsze, dokona kilku restartów i za którymś razem uruchamia się poprawnie, a co lepsze przetwornik działa dobrze. Kod w tej chwili wygląda tak: http://obrazki.elektroda.pl/5684753500_1...
Witam. Od jakiegoś czasu zajmuję się mikrokontrolerami i posiadam już pewne doświadczenie w tym kierunku. Ostatnio miałem jednak sporą przerwę... aż do teraz - trafił mi się termometr do zmontowania. Zbudowałem więc prosty układ: Atmega88+DS1820 jak na foto poniżej: http://obrazki.elektroda.net/17_12608087... (Czarne przewody to plus i minus...
Czekam 100ms po instrukcji print dla 115K nic to nie pomoglo zmniejszylem predkosc do 9600 nadal nic ;/ kod nadajnika $regfile = "m32def.dat" $crystal = 14745600 $baud = 9600 Config Serialin = Buffered , Size = 10 , Bytematch = 13 '##### Definicja wyswietlacza ##################### Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6...
Procek usypia i od razu się budzi, a nie powinien... coś nie widzę błędu. Inicjalizacja: [syntax=c]//Konfiguracja przerwania Int0 - POWER_OK (tryb praca -> usypianie) cbi(DDRD, 2); //POWER_OK jako wejście cbi(PORTD,2); //Pullup off EICRA |= (1 << ISC00) | (1 << ISC01); //Aktywacja Int0 zboczem rosnącym EIMSK |= (1 << INT0); //Włączenie...
Cześć, Od paru dni usiłuję wyświetlić tekst na wyświetlaczu LCD 2x16. Po przeczytaniu paru tematów na forum zdecydowałem się na użycie [url=http://radzio.dxp.pl/hd44780/hd4478... . W pliku nagłówkowym biblioteki pozmieniałem definicje podłączenia pinów na te zgodne z moim schematem (RS-> PD0, RW -> PD1, E-> PD2,...
Witam. 1 - Stosuj aliasy. Np: drzwi alias portd.0 Później w kodzie po prostu drzwi = 1 lub drzwi = 0. bardzo poprawia czytelność kodu. 2 - Odczyt z przetwornika ADC powinien być do zmiennej WORD (przetwornik jest 10 bit). 3 - w pętli głównej masz instrukcje Wait. Powstaje problem ze sprawdzaniem stanu wejść, pętla może się wykonywać bardzo długo, w...
Witam, najpierw program: .include "m88def.inc" ; procek ustawiam na prace z wewnętrznego oscylatora 8MHz ; tryb sleep ustawiam jako POWER DOWN ; PD3 (INT1) jest przyciskiem (wejscie) ; PB1 (OC1A) to wyjscie sterujace reglem ; PB5 to wyjscie sterujące MOSFETami zalaczajacymi zasilanie regla ; PD5 (OC0B) to wyjscie sterujace LEDem ; ADC6 - pomiar pradu...
Witam!Jak w temacie mam problem z zaprogramowaniem atmegi88 Pa-Pu. Mam programator usbasp. > "make.exe" program avrdude -p atmega88 -P usb -c usbasp -U flash:w:Led.hex avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: error: programm enable: target doesn't answer. 1 avrdude:...
Witam. Schemat całego układu: http://obrazki.elektroda.net/75_12533785... Przed położeniem uC do snu ustawiam stany wysokie na bazach tranzystorów (zmierzyłem prąd samych tranzystorów, poniżej 0.00uA bo miernik nie chwyta). Ustawiam wszystkie pozostałe piny w stan wysoki oprócz: pinów przycisków S1-S4 które mają być masą dla pinu przerwania...
Witam. Mam problem z wyświetlaczem 2x8 na Atmedze88. PD0 jest podłączony do RS, PD1 jest podłączony do E, PD2 procesora jest podłączony do DB4, PD3 jest podłączony do DB5, PD4 jest podłączony do DB6, PD5 jest podłączony do DB7. Na ekranie pojawiają się tylko czarne pola. Przetestowałem różne programatory oraz kable. Wgrywa wszystko na układ żadnych...
Witam Mam dwa układy: nadajnik (ATMega88, MC145026), odbiornik (ATMega16L, MC145027). Narazie połączyłem MC145026 z MC145027 kablem. Piny przerwań INT0 i INT1 w ATMega16L mam już zajęte. Chcę wykorzystać przerwanie INT2. Napisałem programy i niestety coś jest nie tak. Odbiornik nie wykrywa przerwania. W nadajniku linie danych mam podłączone do pinów...
Witam. Zbudowałem naręczny zegarek binarny, próbowałem napisać program, ale coś jest nie tak. Godzina wyświetlana jest na 4 diodach, minuty na 6. Komunikacja z DS1337 portami C4 i C5. Pod INT0 (D2) podpięty switch bez rezystora. Prosiłbym o sprawdzenie i pomoc w rozwiązaniu problemów. [syntax=basic4gl] $regfile = "m88pdef.dat" $crystal = 1000000 Config...
Coś tam w fpc piszę, ale to raczej zabawa niż programowanie. Chodzi mi głównie o przekształcenie danych z DS1337 tak aby można było wyświetlić je na diodach. Mam do dyspozycji dane Dec i BCD tylko jak je zapisać binarnie? Nie wiem jak zrobić to bez ifów. Np. mam odczytaną godzinę 9 czyli muszę dać na D6 i B6 logiczne zero. Jak to wykonać? wymyśliłem...
To mój pierwszy raz z DS18B20. Mam problem z odczytem temperatury z DS18b20. Pierwszy odczyt z układu daje warość 0x0550 czyli defaultowa wartosc po resecie. Jednak nastepne odczyty dają wartość 0x07FF. WTF? Poniżej listing. Procek taktowany 16MHz z zewnętrznego oscylatora. (F_CPU zdefiniowane na 16000000) int main () { uint8_t a=0; uint8_t...
Ten kod jest wersją maksymalnie testową. Zawiera kupę niepotrzebnych rzeczy i jest w nim nieziemski bałagan - przepraszam. Jestem bardzo początkujący i próbuję pisać posługując się najprostszą składnią. Był pisany "na szybko", aby stwierdzić czy ta idea zadziała. I generalnia działa. Config Lcd = 16 * 2 $crystal = 1382400 ' fusebit ustaw xtal full swing...
Hi, mam tu AT45DB321D, na kosci faktycznie cos takiego pisze. ATMEL 0746 45DB321D SW SOIC8. Probowalem pomiedzy 10MHz a 500KHz, te same stabilne odpowiedzi. Jedziemy na 20MHz CPU, ext crystal resonator. wszystko obejrzalem pod oscyloskopem, SPI z ATMEGA88 dziala, to nie pierwszy taki moj boj na SPI, wiec czytam sobie datasheet i co pisze: Manufacturer...
Napociłem się nad tym i wypociłem takie coś. O mało nie zabrakło procka. Nie wiem czy działa bo dopiero jutro będę miał płytkę do tego. Nie śmiać się proszę i tak jak na moje zaawansowanie w bascomie nie wygląda nie-źle. Chętnie przyjmę poprawki. Podczas symulowania jak trafia na polecenie getrc5 wraca do początku i tak w koło ciekawe czemu tak się...
tutaj jest cały kod: [syntax=c] #include <avr/io.h> #define F_CPU 10000000 #include <util/delay.h> int main() { int8_t i; int8_t k; int8_t m; int8_t n; unsigned char liczba_LED [10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; DDRB = 0xFF; DDRD = 0XFF; DDRC = 0xFF; for(;;) { for(i=0; i<=9; i++) { PORTC = 0xC0; _delay_ms(10);...
Problem jest w tym ze tych diodek nie zapala. Też się zdziwiłem, że zamienili PD6 na PORTD6. Przykład z iom8a.h: [syntax=c]#define PORTD _SFR_IO8(0x12) #define PORTD7 7 #define PORTD6 6 #define PORTD5 5 #define PORTD4 4 #define PORTD3 3 #define PORTD2 2 #define PORTD1 1 #define PORTD0 0 [/syntax]
portd atmega88 atmega portd portd atmega8
pęknięcia przedniej szyby podgrzanie solarem bootowalna płyta
kabel brake radio diagbox lexia
Iveco Daily SPN 14912 - Błąd komunikacji CAN Koszt serwisu kasy fiskalnej Posnet Ergo