Witam A u kolegi bascom nie wywala błędów? Port składa się z 8 pinów czyli 8bitów albo bajtu.(portd- portd.0;portd.1;.....do portd.7 czyli 8pinów Więc taki zapis portd.4=255 jest błędny bo jednemu bitowi nie możemy nadać wartości 255 możemy albo 0 albo 1.(a prawidłowo portd.4=1 albo0 ) Taki zapis jest poprawny portc=255 co jest równoważne z 11111111...
Oczywiście, że warto go odratować. Źródła w Basicu w wersji V4 są na Elektrodzie. Po lekkim uporządkowaniu wrzucam poniżej. [syntax=vbnet]$regfile = "m8535.dat" $crystal = 8000000 Config Clock = Soft , Gosub = Sectic Config Sda = Portd.1 Config Scl = Portd.0 Config Timer1 = Timer , Prescale = 64 Config Timer0 = Timer , Prescale = 64 On Timer1 Dcf_start...
Wyprowadzając clk z portc można zyskać 1 cykl ( 15 cykli zamiast 16) przy okazji nie wyprowadzając zbędnej części bajtu na pozostałe piny. ld r17.50 lot: ld r16, x+ mov r18, r16 andi r16, 0x0F out PORTC, r16 ori r16, _BV(clk) out PORTC, r16 swap r18 andi r18, 0x0F out PORTC, r18 ori r18, _BV(clk) out PORTC, r18 dec r17 brne lot andi...
Twój program: http://obrazki.elektroda.pl/8133379300_1... a dopiero później ustawiasz na nim jedynkę: a między tymi instrukcjami jest co nieco kodu, a zegar zaledwie 1MHz , to dlaczego się dziwisz, że dostajesz impuls na transoptor? Według mnie potwierdza on, że to procesor na początku wystawia jakieś zakłócenia. Więc to nie mikrokontroler...
Dawno nic nie skrobałem dla AVR, poniżej kod który skompilował się lecz nie ma jak przetestować. Do sprawdzania wciśnięcia klawiszy powinieneś napisać funkcję, która będzie to robić zamiast ciągłego wstawiania prawie tego samego kodu. [syntax=c] #include <avr/io.h> #include <util/delay.h> /* definicje dla preprocesora */ // klawisze #define...
1-wire jest magistralą wired-and . Jeśli pin WE rejestru PORTC jest ustawiony na stan niski i zmienisz kierunek tego pinu za pomocą rejestru DDRC, to na magistrali pojawi się stan niski (tranzystor wyjściowy procesora zewrze magistrale do masy). Jeśli ustawisz pin WE za pomocą rejestru DDRC jako wejście, wtedy pin ten jest w stanie wysokiej impedancji...
No, tak, teraz widać, że LED ściemnia Ci się "w drugą stronę". Mały egzamin (dwa pierwsze pytania dotyczą Twojego układu): 1. Jaki sygnał wyzwala triaka? 2. Jaki sygnał zapala diodę? 3. Na jakiej zasadzie działa sterowanie fazowe? Triaka wyzwala stan wysoki na PC0. Celowo napisałem "wyzwala" nie włącza, ponieważ triaka się nie da wyłączyć (w przeciwieństwie...
No Dobra program juz prawie napisałem i głowiłem sie nad wersja ze zmiennym PWM+f... ale z tego co mi odpisałes to wnioskuję ze coś tu mi nie gra... A nie możnaby programowo realizować ten restart co 80ms? Moze napisz dokładniej co to ma być a coś doradzimy :) Pozdro No wlasnie o to chodziło by nie restartorwać tego zewnetrznie bo chyba prosciej zaimplementowac...
Chodzi o występowanie przerwania generowanego zwieraniem do masy pinu C1. Plan był taki: 1. Wywołać przerwanie 2. W przerwaniu zdezaktywować przerwania na tym porcie http://obrazki.elektroda.pl/1773451400_1...
http://obrazki.elektroda.pl/5959558100_1... Witam :) Razem z kolegą chcielibyśmy się pochwalić naszą maszyną :) Jest to ramie robota oparte na serwomechanizmach modelarskich. Ja zająłem się sterowaniem i elektroniką, a kolega robił projekt 3D w SketchUp i konstrukcje http://obrazki.elektroda.pl/9008440700_1... Początkowo...
Zazwyczaj zamykam rolety tylko do połowy, choć zdarza się że zamykam je całkiem. Stosując dostępne na rynku rozwiązania musiałbym stać koło wyłącznika, żeby zatrzymać w odpowiednim momencie ale jako człowiek bardzo wygodny postanowiłem zbudować sterownik, który zautomatyzuje tę czynność. Założenia - możliwość zapamiętania/zmiany punktu półotwarcia,...
Wykorzystuje pin PC3 włączam stan wysoki instrukcją PORTC |= 0x08 a wyłączam PORTC &= 0xF7 co w tym może być nie tak? Poza tym napisałem wyraźnie, że bez obciążenia działa
http://obrazki.elektroda.net/100_1276513... Czasem znajdujemy się w takiej sytuacji gdy nasze założenia projektowe nie pokrywają się z elementami elektronicznymi jakie posiadamy. Może zaistnieć konieczność zwiększenia wyjść logicznych mikroprocesora jaki wykorzystujemy. Ten krótki poradnik dla początkujących pokaże wszystkim zainteresowanym...
Nota katalogowa pamięci: http://standby-shop.eu/photo/_pdf/628128... Próbuje obsłużyć tą pamięć ale coś nie działa i najpierw mam kilka pytań: 1.Co zrobić z niepodłączonymi wyjściami adresującymi pamięci(potrzebuje tylko 8 (na razie)a pamięć ma ich 17)? 2.Pamięć posiada 2 piny CE(chip select) jeden z tego co wywnioskowałem jest negacją pierwszego...
Dzieki Zrobiłem to tak: #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> int main(void){ DDRD = 0xFF; // port d jako wjscie DDRC = 0x00; // port C jako wejscie PORTD = 0xFF; //wszystko na porcie d stan wysoki PORTC = 0xFF; // wszysko na porcie C stan wysoki while(1) { if(!(PINC & 0x04)){...
Co tutaj przekombinowałem? Atmega32. Tryb Licznika. Celem było zapalenie i gaszenie diod co sekundę. Preskaler = 256. Przerwanie tak wyliczone aby wykonywało się co sekundę. Timer 16bitowy [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_OVF_vect) { PORTC ^= ~0xFF; //zmiana stanu portu C...
Jeżeli pin jest ustawiony jako wyjście to może albo "dać" prąd czyli stan wysoki albo zwierać do masy czyli stan niski... Jeżeli jest ustawiony jako wejście to albo jest w stanie wysokiej impedancji (bit odpowiadający pinowi w rejestrze jest wyzerowany np PORTC &= ~_BV(5)) lub ma włączony pullup (PORTC |= _BV(5))...
- wykonanie operacji ( PORTC & ~0x3f ) | 1 << PC1 powoduje wpisanie do PORTC w poerwszej pozycji jedynki, czyli wartosc PORTC po tej operacji bedzie wynosila: 10000010. Czyli nozka procesora PC1 bedzie miala stan wysoki. Pierwszy wniosek prawdziwy tj.: zawartość PORTC będzie 0b10000010 ale wniosek: Nózka procesora PC1 bedzie miała stan wysoki...
Dobra, zrobię ten dzielnik w prostszy sposób - wykorzystam kilka przycisków po wciśnięciu których dioda led zacznie migać z prędkością 2x większą. Coś takiego myślę, że dam radę napisać. Ale mam pytanko, dlaczego sposób numer 1 działa a sposób numer 2 nie działa ? Czytałem tu na forum różne tematy oraz różne kursy AVR w C i jest praktycznie tak samo...Mógłby...
Po zapoznaniu się z uwagami stworzyłem taki kod: [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/eeprom.h> #include <avr/pgmspace.h> #include <avr/interrupt.h> //WYJŚCIA #define LED1 (1<<PC5) // 60s #define LED1_ON PORTC |= LED1 #define LED1_OFF PORTC &= ~LED1 #define LED1_TOG PORTC ^= LED1...
Witam! Chciałem zrobić układ, w którym steruję kierunkiem obrotów silnika za pomocą atmega8a oraz l293d. Gdy podaję stan wysoki na pinie PC0 (lub innym z portu C) i stan niski na PB0 (lub inny z portu b) silnik nie obraca się. Układy połączone według schematów: http://obrazki.elektroda.pl/4727088000_1... http://obrazki.elektroda.pl/9705228200_1...
Program to nic szczególnego: #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRC = 0xFF; PORTC = 0xFF; while(1) { } } Powinien ustawić stan wysoki na portach C. Na razie próbuję podstawowych rzeczy aby sprawdzić czy układ działa poprawnie.
[syntax=c] #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> #include <math.h> #include "HD44780.c" int main(void) { DDRD = 0xFF; // ustawiam rejestr kierunku portu jako wyjściowy DDRC = 0x00; // ustawiam rejestr kierunku portu jako wejściowy PORTC |= (1<<PC4); // ustawiam stan wysoki na pinach PC4-PC0 PORTC...
Witam, Mam taki problem chcę przyspiać do portu takie wartości i nie działa poprawnie: Config Portc = Output Do Portc = &B11111111 Waitms 100 Portc = &B00000000 Waitms 100 Loop End Problem polega na tym iż xx XXXX xx bity dyże X nie zmieniają stanu tylko ciągle są ustawione na stan wysoki
Witam, chciałbym wykorzystać pamięć EEPROM do zapisania jednej zmiennej. Ogólnie chodzi o to, że mam na płytce 5 diod LED i przycisk. Chciałbym aby po wciśnięciu zapały się kolejne diody, a po odłączeniu i ponownym podłączeniu zasilania powinny świecić się te same diody co przed odłączeniem. Stworzyłem sobie taki program ale nie działa. [syntax=c] #define...
Tak wiem, ale w niej się nic nie definiuje [syntax=c]unsigned int GetKeybSample( void ) { // Tu należy dopisać ciało funkcji, która będzie zwracać stan klawiszy, // stan niski oznacza klawisz nienaciśnięty, stan wysoki klawisz naciśnięty // Przykład: // zakładamy, że wciśnięcie klawisza zwiera pin do masy return (~PINC) & (KEY0 | KEY1 | KEY2 | KEY3);...
Np. dla portu PC0 podłączonego do wejścia A0 układu 74hc245 w języku c będzie to wyglądało następująco: DDRC = (1<<DDC0); - ustawiamy PC0 jako wyjście PORTC = (1<<PC0); - wyjście ustawione w stan wysoki wtedy na wyjściu B0 (w 74hc245) otrzymasz 1, ale pod warunkiem, że w 74hc245 wejście OE ustawisz w stan niski, a wejście DIR w stan wyskoki....
Witam poniżej program na procesor Atmega 128 w c++ . kompilowany jest w AVR Studio (WinAvr) problem polega na tym że po wykonaniu pierwszej funkcji program zamiast wykonywać kolejne wychodzi i zaczyna od początku. w programie głównym po naciśnięciu klawisza zostaje wywołana funkcja lcd_init(); w niej wykonywane są kolejno instrukcje aż do funkcji lcd_send(0x03);...
witam napisalem taki programik ale niestety LCD nic nie pokazuje :( ktos wie moze co jest nie tak??? /*PROGRAM STEROWANIA WYSWIETLACZEM*/ #include <avr/io.h> #include <avr/delay.h> #define LCD PORTC #define E PC0 #define RS PC2 #define SET_E LCD|=_BV(E); #define CLR_E LCD &=~_BV(E); #define SET_RS LCD |=_BV(RS);...
Zmagam się z rejestrem, którego ma ATmega8 symulować, ale nie przyjmuje Danych na rosnącym zboczu CLK. http://obrazki.elektroda.pl/2487102600_1...
http://obrazki.elektroda.net/7_123635472... Prawie rok temu, zainspirowany konstrukcją pana Kamila Przychodzenia http://obrazki.elektroda.net/18_12363549... http://obrazki.elektroda.net/82_12363551... Płytka sterownika oraz płytka organizacji połączeń http://obrazki.elektroda.net/62_12363543... http://obrazki.elektroda.net/80_12363591...
No dokładnie ale teraz jak sam widzisz nawet niepotrzebnie tworzysz dodatkową zmienną temperatura bo równie dobrze mógłbyś napisać: Dodano po 1 _read_meas() - sprawdza ci temperaturę, wtedy w cel masz świeżą wartość no i w tym momencie ją sprawdzasz i ew wykonujesz od razu jakąś czynność czyli swoje "boom"
Witam. Mam następujący problem: otóż po napisaniu programu mikrokontroler nie odpowiada tzn nie rozróżnia stanów na wejściu poniżej czy podaję logiczną 1 (5V) czy "0" - program wchodzi zarówno w pierwszy jak i drugi warunek "if" . Zapala zarówno diodę PORTC (0) jak i przełącza diody PORTC(1) i PORTC(7). Z góry dziękuję za pomoc. Poniżej załączam listing...
Witam, mam teoretycznie prosty problem, z którym jednak na razie przegrywam. Otóż definiuję trzy piny portu C (PC0-PC2) jak wyjścia, których zadaniem będzie zapalanie odpowiednich diod led. Piny PC0 i PC1 działają jak należy, tzn zmieniają swój stan wedle programu. Natomiast pin * PC2 (TCK) * odmawia posłuszeństwa i robi sobie swoje tzn nie reaguje...
dzięki za pomoc , zrobiłem to tak : Slijbajt: Wartosc = Portc Kierunek = Ddrc For Razy = 7 To 0 Step -1 Wartosc.5 = 0 Kierunek.5 = 1 Wartosc.4 = Bajt.razy Kierunek.4 = Not Bajt.razy Portc = Wartosc Ddrc = Kierunek Waitus 7 Ddrc.5 = 0 Portc.5 = 1 Waitus 1 Next Razy Waitus 6 Ddrc.5 = 0 : Portc.5 = 1 Waitus 5 Ddrc.4 = 0 : Portc.4 = 1 Return...
Witam!!! Po pierwsze ten schemat jest dziwny. PC6 ma być wejściem czy wyjściem? Po drugie Makro _BV działa tak: zmienna |= _BV(numer_bitu); // ustawienie bitu zmienna &= ~_BV(numer_bitu); //zgaszenie bitu zmienna ^= _BV(numer_bitu); // przełączenie bitu czyli brakuje negacji przy gaszeniu bitu. Napisze na szybko program który powinien działać. #include...
Bez różnicy jaka ATmega. Piszesz całkowicie błędne warunki if() zamiast pisać: if(PINC==0x01) pisz tak jak się należy: if( !(PINC & (1<<PC1)) ) jeśli podajesz na wejście stan ZERO, lub tak: if( PINC & (1<<PC1) ) jeśli na wejście podajesz stan wysoki a normalnie linia podciągnięta jest...
Aktualnie mam tak: DDRC |= _BV(0); PORTC &= _BV(0); DDRB &= _BV(5); PORTB |= _BV(5); for(;;) { if ((PINB & (1<<PB5))==0) PORTC |= _BV(0); else PORTC &= _BV(0); } Po uruchomieniu, PC0 jest w stanie niskim, po zwarciu PC5 do masy, PC0 przechodzi...
program daje na porty stan wysoki Czy ja dobrze rozumuję, czy Ty ustawiasz port jako WYJŚCIE, ustawiasz na nim stan wysoki i dopiero jakimś tam sobie tlyko znany magicznym sposobem odczytujesz klawisze? Przecież w takiej sytuacji, o ile nie masz po drodze rezystorów ograniczających prąd, to walisz pełnym zwarciem +5V - pin Atmegi - switch - masa. Tak...
Wydaje mi się, że użycie słowa "pochwalić" jest błędne lub przynajmniej nieprecyzyjne, bo kod niestety nie działa, więc nie ma się czym chwalić :cry: Bardzo dziękuję za zainteresowanie i chęć pomocy. Natomiast wspomniany kod (jedna z wielu wersji) ograniczony do niezbędnego minimum wygląda tak: [syntax=c] #include <avr/io.h> #include <util/delay.h>...
układ został w całości zmontowany. niestety po uruchomieniu jest cicho i głucho. próbowałem uruchomić poniższy program z PWM (na diodach działał): [syntax=c] #include <avr/io.h> int main() { DDRC = 0xFC; //klawiatura PORTC = 0xFF; DDRD = 0xFF; PORTD = 21; // stan wysoki na OCR1A i PD4 TCCR1A = 0b10000010; TCCR1B = 0b00011001; TCNT1 = 0; OCR1A...
Chcąc wykluczyć czy popełniłem błąd w programie czy układ max6675 jest uszkodzony napisałem obsługę programową SPI. max6675.h: [syntax=c] #ifndef MAX6675_H #define MAX6675_H #define CLK_OUT DDRC |=_BV(PC0) //ustawia PC0 jako wyjście #define CLK_LOW PORTC &=~_BV(PC0)//stan niski na PC0 #define CLK_HIGH PORTC |=_BV(PC0)//stan wysoki na PC0 #define...
Cześć, chciałbym zwrócić się z pytaniem (prawdopodobnie banalnym dla was, dlatego proszę nie odsyłajcie mnie do google - przebrnąłem przez całe...), mianowicie: Próbuje zrobić tester ciągłości przewodu. Wg mojego pomysłu miałoby to wyglądać następująco: PORTD 0x01 ustawiam jako wyjście w stanie wysokim, następnie podłączam je do PORTB 0x01 i jeżeli...
hmm dzięki, dość trudne zadanie sobie wymyśliłem chyba :) jestem bliżej ale to jeszcze nie to, mianowicie po dodaniu [syntax=c]#define LED_PIN2OFF PORTC = ~(1<<PC1)[/syntax] faktycznie diode2 mogę postawić w stan wysoki po włączeniu diody1 ale straciłem możliwość sterowania stanem diody1 bo ona po nacisnieciu przycisku zapala sie i od razu gaśnie....
Witam, napotkałem problem dotyczący generowania od dwóch do czterech sygnałów PWM na dwóch timerach - 8 i 16 bitowym. Posiadam Atmegę 328p z kwarcem 16 Mhz. Timer 8 bitowy ma generować przerwanie z czestotliwością 800 Hz (po 200 Hz na kanał, przy obsłudze czterech kanałów.). Timer 16 bitowy ma generować przerwanie by w efekcie PWM miał szerokość od...
Witam. Zacząłem sobie programować uC w C i już na początku mam problem. Może mi ktoś wyjaśnić czemu pierwszy program działa, a drugi nie? Ten działa int main(void) { // Wszystkie linie portu D będą wyjściami DDRD = 0xFF; // 0xFF binarnie 1111 1111 PORTD = 0x03; DDRC = 0x00; // Linie portu C będą wejściami PORTC = 0xFF; // z podciąganienm-...
W AVR od każdego portu wejścia/wyjścia masz dostępne 3 rejestry. Rejestr DDR, PORT i rejestr PIN, na przykładzie portu C jest to rejestr PORTC i rejestr PINC i DDRC. Rejestr DDR Określa tryb pracy wyprowadzenia jako wejście lub wyjście, zapisujac odpowiedni bit jako 1 ustawiasz go jako wyjscie a 0 jako wejscie. W trybie pracy jako wejscie jest podłaczone...
Hmmm, chyba ja się źle wyraziłem. To co napisałeś jest dla mnie zrozumiałe i to już ogarnąłem. Może po prostu wrzucę teraz kod jak ja sobie to ustawiłem i jeśli możesz powiedz mi co tu mam źle, tzn na pewno czegoś brakuje w funkcji lcd_init związanego właśnie z tym ustawieniem adresów. Pomijam plik z funkcją opóźniającą i z nagłówkowego tylko pokażę...
Eee... Żeby nie ruszać JTAG'a chyba katody do portu D, anoda do VCC lub do pinu innego niż C2...C5 ale przez tranzystor bo pin nie wydoli prądowo. Przecież katody na porcie C autor już miał i świecą tylko niektóre. [syntax=c] #include <avr/io.h> int main(void) { DDRC |= _BV(0); // PC1 jako wyjscie DDRD = 0xFF; // cały port jako wyjscie PORTC =...
Witam Mam problem z wyświetleniem tekstu na LCD 2x16 podłączonym do ATMegi16. (Korzystam z AVR Studio - AVR GCC). Linie danych mam podłączone do portu A (transmisja 8-bitowa, DB0-PA.0, DB1-PA.1, ... , DB7-PA.7). Natomiast linie sterujące do portu C (E-PortC.7, RW-PortC.6, RS-PortC.5). Skorzystałem z gotowego przykładu: http://mikrokontrolery.net/avr_c_08.htm....
atmega32 portc portc atmega8 portc atmega32
bendix renault bosch alarm lodówka wymiana inwertera matrycy
tonsil bandpass mikrokontroler projekty
Passat B5 1.9 TDI 90KM – funkcja cienkiego przewodu na klemie plusowej akumulatora Ariston Clas X CF błąd 105 – brak cyrkulacji, przyczyny, diagnostyka, naprawa