Przede wszystkim błąd jest tutaj: S1 Alias Porta.3 (O ile s1 to button)
Kompilator rzuca ci warningami bo brakuje deklaracji funkcji przed main. Dopisz te trzy linijki gdzieś przed main: [syntax=c]void wszystkie_pojedynczo_rozjasnij(unsigned int kolor); void wszystkie_pojedynczo_zgas(unsigned int kolor); void pojedynczo_rozjasnij(unsigned int ktory, unsigned char stan_wylaczenia, unsigned char stan_wlaczenia);[/syntax]
Nie działa tylko PORTA? Jeśli tylko PORTA, to podłącz AVCC do reszty zasilania.
Z portem A moze byc tego rodzaju kwestia ze nie ma on zasilania. PortA ma osobne zasilanie na nozce AVcc.
A te wszystkie instrukcje w pętli Do ... Loop , możesz zastąpić jedną. PORTA = PINC Xor &HFF Piotrek
Witam. Programuję mój mikrokontroler atmega16 i mam problem z zapisem wartości z portu A (wejściowego) do pola bitowego. Używa takiego kodu: polebiotwe = PORTA Podczas kompilacji pojawia się błąd, że PORTA jest innego typu niż polebitowe. Jakiego typu jest PORTA i w jaki sposób mogę go zapisać do pola bitowego? Wiem, że można tak: polebitowe.z1 = PORTA0;...
.INCLUDE "m16def.inc" ldi R16, 0xFF out DDRA, R16 .EQU SYS_FREQ = 16 Petla: ldi R16, 0b11111111 out PORTA, R16 rjmp Delay 'to jest skok we wskazane miejsce a nie do procedury. powinno być rcall Delay ldi R16, 0b00000000 out PORTA, R16 tu też brakuje opużnienia rjmp Petla Delay: ldi R16, 1 ldi R16, 1 push R18 push R19 push R20 push R21 mov R20, R16 mov...
Do czytania nie używa się PORTA tylko PINA. Kłania się brak znajomości noty katalogowej w dziale I/O Ports .
[syntax=c] DDRA |= (1<<PA1) | (1<<PA4); // Ustawiamy (np.) porty A1 i A4 jako wyjście PORTA &= ~((1<<PA1) | (1<<PA4)); // ustawiasz logiczne "0" na powyższych bitach portu A [/syntax]
Dlaczego przy ustawieniu w programie czegoś takiego: (program na ATMEGA16) Config Porta = Output Porta = &A01110111 Przy próbie kompilacji wywala w tym miejscu error :?:
PORTC z PORTA się pomieszały :)
Mam taki problem. Połączyłem sobie taką płytkę, ustawiłem portA ATmega16 jako wyjście, i daje on w stanie wysokim tylko 1.5V. Ktoś wie, dlaczego? Z tego, co wyczytałem w DS, powinno być min. 4.5V.
Musisz ustawić PORTB jako wyjście, a nie PORTA :).
zaraz po _delay_us dorzuć [syntax=C]PORTA=0xFF;[/syntax]
Jeśli ten pin ustawiony masz jako wyjście - czyli dodałeś wcześniej DDRA|=(1<<0); to stawiam na to że masz pętlę w której robisz notorycznie PORTA^=(1<<0); i dlatego masz tam naprawdę przebieg prostokątny. Zatrzymaj program po tym XOR (daj tam dużego Delaya) i dopiero potem sprawdź napięcie.
W ogóle nie masz jakiejkolwiek obsługi tych "duchów". Tak więc nie tylko trzeba je minimalizować, ale w ogóle jakoś obsługiwać. A robi się to tak że się najpierw wyłącza poprzednią cyfrę, a potem dopiero załącza kolejną. Najprościej to po prostu przed tymi wszystkimi Selectami ustawiaj Portb i Porta w stan nieaktywny (nie wiem jaki on jest więc nie...
Zasilanie ADC w ATMega128 to idzie na portA. Edit: Oczywiście chodzi o ATMega16- moja pomyłka.
powinno byc: #include <avr/io.h> void ustawienieportow(void) { DDRA=0x00; PORTA=0xFF; DDRD=0xFF; PORTD=0xF0; } void main(void) { ustawienieportow(); while(1) { if ((PINA&0x01)!=0x01) PORTD=0xFA; if ((PINA&0x02)!=0x02) PORTD=0xF5; } }
Sprawdzanie stanu niskiego np. PIN0 na PORTA: if(PORTA & 0x01 ==0) Sprawdzanie stanu niskiego np. PIN3 na PORTA: if(PORTA & 0x08 ==0) itd...
Widzę drobny błąd... Jeśli zerujesz bit to powinno być PORTA &= ~_BV(PA6)...
Połączenie fizycznie wygląda tak, że TXD modułu jest zwarte z TXD mikrokontrolera, podbnie z RXD. To przypadkiem nie ma być na krzyż? (na odwrót)
PORTA |= _BV(0); zamien na PORTA |= _BV(PA0);
Build started 6.4.2014 at 00:25:04 avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c avr-gcc -mmcu=atmega16 -Wl,-Map=Proba_10.map Proba_10.o -o Proba_10.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature...
Może uszkodziłeś PortA przez to ze wczesniej nie miałeś napiecia na AVCC ale raczej w to watpie, sprawdzales na innym porcie? Po pierwsze sprobuj zapalic zwyklego LEDa na kazdym pinie tego portu.
Tak lekko zmieniłem bo może zrobiłbym to inaczej ;) [syntax=vbnet]Dim Aktywne As Byte Odbior_pilota: If Komenda = W_gore Then Incr Aktywne If Aktywne > 4 Then Aktywne = 1 Elseif Komenda = W_dol Then Decr Aktywne If Aktywne > 4 Then Aktywne = 4 End If Select Case Aktywne Case 0 Gosub Aktywuj_pc Case 1 Gosub Aktywuj_cd Case 2 Gosub Aktywuj_tuner Case...
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.
Spróbuj: #include<avr/io.h> int main(void){ DDRA=0xFF; PORTA=0xF0; while(1); }
Nie pamiętam zbyt wiele z baskoma ale może : portb=lookup(eedr, tabela1) porta=lookup(eedr, tabela2) No chyba w tym baskomie można dwie tabele utworzyć ? :)
Witam, zwracam się do was z wielką prośbą o sprawdzenie schematu, ponieważ ja jestem dopiero początkujący i nie chcę nie potrzebnie zniszczyć elementów. W razie wątpliwości i niejasności proszę pytać. http://obrazki.elektroda.net/63_12486903... http://obrazki.elektroda.net/23_12486907... http://obrazki.elektroda.net/45_12486908...
Ok.Zaraz podłączę układ i sprawdze działanie.Dzięki. Dodano po 1 Wrzuciłem program(jednak wykasowałem: Reference = Auto--> Unknown CONFIG parametr [AUTO]). Na LCD chińszczyzna :(.W listingu powino być także ustawienie PortuA jako wejście???-->Config Porta = Input???
Dzięki wszystkim :D Ruszyło choć mam inny problem - wszystko się zaczęło gdy chciałem uruchomić wyświetlacz graficzny DMF5005NY–LY. Ponieważ nie ruszył, zacząłem od migającej diody - czy procek sprawny. Teraz wiem, że procki ok - trzeba powalczyć z wyświetlaczem - ale to inny temat. DZIĘKUJĘ :D Config Porta = Output Do Set Porta.1 Wait 1 Reset...
no niestety nie wyszlo :( dalem zaraz po mainie MCUCSR |= (1<<JTD); MCUCSR |= (1<<JTD); a fuse bity ustawilem na 0xe1, 0xd9 zgodnie z http://www.elektroda.pl/rtvforum/topic80... ustawilem piny E oraz RS z PORTC na PORTA i nic nie smiga
Ta nakładka wymagała jakiegoś libusb ale namieszało mi tak w kompie że zablokowało prawie wszystkie sterowniki (masakra) czy może mi ktoś powiedzieć jak to zrobić jakich sterowników użyć? A czy mugłby mi powiedzieć jak zrobić program zliczający bo taki mi niedziała: 'Program Probny $regfile = "m16def.dat" $crystal = 1000000 Config Portd = Input Portd...
#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRA = 0xFF; while(1) { PORTA = 0x00; } } Również nie świeci się.
Witam, Opiszę może krótko sytuację: mam atmega16, na timer1 mam ustawiony tryb pracy pwm, używam kilku pinów na PORTD i PORTA do sterowania mostkamiH. Potrzebuję odmierzanie czasu 10ms i chciałem to zrealizować przy pomocy przepełnienie od timera0 lub timera2. Niestety kiedy chcę obsługiwać przerwanie od przepełnienia T0 lub T2, to całkowicie psuje...
Printbin i Zmienne A = &HE0 B = &H0C załatwiły sprawe :) Teraz kolejny problem otrzymuje z wyświetlacza w Hexie "00" i po otrzymaniu chcę zmienić stan portu próbuję tak> [syntax=vbnet] Dim Of As Byte Inputbin Of If Of = 00 Then Porta.2 = 1[/syntax]
Na początku podłącz tylko jeden czujnik Odczytaj wartość temperatury, później numer seryjny. Jeszcze jedna uwaga, jak deklarujesz port jak wejście to nie tak Config Porta.1 = Input tylko tak Config Pina.1 = Input
Witam i proszę o wyrozumiałość ,to moje pierwsze, totalnie pierwsze podejście .Mam problem chce zbudować przełącznik kilku pozycyjny i utknąłem ktoś podpowie jak to rozwinąć $regfile = "m16def.dat" Config Porta = Output Porta = &B11111111 Config Portc = Input Portc = &B11111111 Do If Pinc.0 = 0 Then Porta.7 = 0 If Pinc.1 = 0 Then Porta.6 =...
jak najbardziej możesz używać np. 5 pinu PORTA jako ADC a pozostałych jako ADC np. http://www.nopaste.pl/6gt
Sterowanie serwo w obecnej postaci jakoś szczególnie dużo mocy obliczeniowej nie zużywa. Umieść obsługę czujnika i obliczenia w pętli while w main() i sprawdź. Moim zdaniem powinno być z tym mniej roboty niż z obsługą i wzajemną synchronizacją komunikacji dwóch procesorów.
if(!(PINA & 0x03)) oznacza sprawdzanie czy wciśnięte dwa pierwsze przyciski. Gdy chcesz sprawdzić trzeci napisz if(!(PINA & 0x04))
Biję się od pewnego czasu z myślami jak rozwiązać wzajemną komunikację między dwoma AVR-ami (Atmega16,32) które spełniałyby następujące warunki. - maksymalnie duża szybkość - odległość połączenia 2-3 metry - komunikacja dwukierunkowa - dwa urządzenia autonomicznie pracują i wymieniają między sobą "komunikaty" wpływające na ich pracę. Myślę że w miarę...
Jak zmusić diodę alarmu do migania nie używająć procedur waitms ? Mam teraz zrobine tak: Używasz Timer0 jako pewnego rodzaju 'swoisty' prescaler: (4 ms; 100 ms; i 1 sec). Dlaczego okazyjnie nie wykrzystać tych 100 ms na miganie diodą? Wstaw tą wyżej procedure (troche zmodyfikowana - zamiast "set Porta.5" daj "toggle") w przerwaniu timera0 w miejscu...
Nie próbowałem zmieniać ustawień Fuse-bitów, . no i w tym właśnie leży twój problem ;) ... musisz zmienić fusebity a dokładniej wyłączyć za pomocą nich JTAG, który jest właśnie na tych portach z którymi masz problem. Jak go wyłączysz to wszystko ci minie jak ręką odjął pozdr
Witam, Czy może mi ktoś pokazać kod w bascomie, który uruchomi PWM na pinach PortD.7 i PortB.3 Bo nie mogę sobie z tym poradzić? Dokładniej chodzi o sterowanie silników przez L293d Porta.0 'Linie sterujace silnikiem A Porta.1 Porta.2 'Linie sterujace silnikiem B Porta.3 Portd.7 'Linie PWM Portb.3 Pozdrawiam
dziala, dzieki za pomoc #include <avr/io.h> #include <util/delay.h> #define rel1 PA0 #define rel2 PA1 int main(void) { DDRA = 0xff; while(1) { PORTA = ((1<<rel1)|(1<&... _delay_ms(2000); PORTA &= ~((1<<rel1)|(1<... _delay_ms(2000);...
Pierwsze co powinienes poprawic to kod. jest on tak dziko napisany ze ja na jego miejscu tez bym nie działala. jako że u Ciebie dane są po kolei na jednym porcie to wiesz o ile szybciej by bylo napisac np tak: void _LCD_OutNibble(unsigned char nibbleToWrite) { PORTA&=0xF; PORTA|=nibbleToWrite<<4; } a po drugie skoro masz...
Symulator... W Fusebitach wyłącz JTAG. możesz wstawić taką sekwencję: DO TOGGLE PORTA.0 WAIT 1 LOOP wtedy dioda podłączona do portu A.0 powinna migać co sekundę.
Po 1: Z tego co pamiętam C jest językiem wyczulonym na wielkość liter. Więc zmienna "Porta" to nie to samo co "PORTA" czy "porta". To samo dotyczy słów kluczowych w stylu "if else". No i nazwy plików nagłówkowych masz źle. O czym Ci kompilator mówi w błędach. Teraz moje pytanie. Czy kiedykolwiek pisałeś coś w C czy po prostu znalazłeś ten kod na jakimś...
Jeżeli PORTA leży w obszarze IO i instrukcji sbi/cbi to łatwo problemu uniknąć zmieniając na raz tylko jeden bit w porcie. W przeciwnym przypadku tak jak zrobiłeś dostęp do PORTA należy w głównej procedurze realizować atomowo. Dzieje się tak dlatego, że zmiana stanu portu realizowana tak jak opisałeś powoduje odczyt jego stanu, zmianę i zapis nowej...
Są Święta więc łap :D https://filmy.elektroda.pl/56_1450976796... Tylko trochę poprawiłem co tam napisałeś bo można by więcej... Możesz tez zerknąć [url=http://bart-projects.cba.pl/bargraf... tę kolekcję - Link. Napisałem w międzyczasie kilka innych i "szybszych" ale nie było czasu wrzucić. [syntax=vbnet]$regfile = "m16def.dat" $crystal = 1000000...
Moja duża wina i niedopatrzenie. Rzeczywiście oprócz GIMSK miałem również Makefile ustawionego na ATmega8. Poniżej wklejam prosty działający kod na obsługę przerwań w Atmega16. #include <avr/io.h> #include <avr/interrupt.h> ISR(INT0_vect){ PORTA = 0xFF; } ISR(INT1_vect){ PORTA = 0x00; } void init(void){...
Program to w większości Twój kod, z jedną małą poprawką - dopisałem x bo zapomniałeś, oraz to by moja dioda świeciła. [syntax=c]#define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #define FOTO_PIN PB0 #define FOTO_PINx PINB #define FOTO_DDRx DDRB int main(void) { //ustaw pin jako wejście FOTO_DDRx &= ~(1<<FOTO_PIN);...
Zacznij może od "posprzątania" Config Portb = &B11111111 Portb = &B00000000 ' Ustawione stany na 0 Config Portd = &B1111111 'siedem bitów ustawionych- a ósmy? Portb = &B11111111 ' a teraz po ustawieniu kierunku PORTD ponownie ' ustawiamy stan portb- ale na 1- a portd nie ustawiony Config Porta = &B11111111 Porta = &B11111111 I tu też coś dziwnego: Case...
Nie znam się na bascomie, ale nie widzę żebyś gdzieś użył metodę "debounce". A, i jeśli się nie mylę, to odczytywać powinieneś z "Pina", a nie z "Porta". A w linii z If wykonujesz odczyt z portu, a nie zapis do niego.
Aby kod łatwo było analizować używaj znaczniki SYNTAX: [syntax=c] tu wklej Twój kod [/syntax] Plik : HD44780.c Plik : HD44780.h Dodano po 25 Ja połączyłem je w ten sposób ale pewnie źle bo wystąpiły błędy w kompilacji. Proszę o pokazanie mi sposób połączenia tych dwóch plików w prawidłowy sposób. Pierwsze uwagi: - te dwa pliki to tylko...
po kolei... po pierwsze jak już ktoś też wspominał wyrzuć te rezystory 47R na liniach D0-D4 oraz RS i EN po drugie odłącz to podświetlanie od tego pinu WYS (zrób przez tranzystor - też ktoś już podpowiedział tranzystor zwykły npn) po trzecie ja na twoim miejcu tak bym konfigurował porty: Config PORTA = &B01111000 zamiast Ddra = &B01111000 albo jeszcze...
Schematu jako takiego nie mam. Konfiguracja jest opisana na początku kodu: [syntax=c] #define SET_OUT_CLR DDRA |= (1<<PA4) #define SET_CLR PORTA |= (1<<PA4) #define CLR_CLT PORTA &= ~(1<<PA4) #define SET_OUT_DT DDRA |= (1<<PA5) #define SET_DT PORTA |= (1<<PA5) #define CLR_DT PORTA &= ~(1<<PA5) #define SET_OUT_RST...
Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 , Rs = Portc.2 ktore miejsca dokladnie zmienic w programie,nie moge sie wszystkich pinow doczytac niestety :(
Witam, zakupiłem na znanym portalu partie ATmega168PA w okazyjnej cenie prosto z chin. Atmegi przeleżały kawał czasu aż naszła potrzeba użycia w projekcie. Niestety próba programowania nie powiodła sie. Okazało sie ze procesor ma sygnaturę 0x1E 0x93 0x0F czyli od atmegi 88PA. Mój pomysł na sprawdzenie czy jest to atmega 168 jest taki żeby zapisać cała...
Tochyba tez nie to, bo zmieniłem ten pud i tak samo, czyli na wejsciu jest 1,26V, teraz jest tak: 1 robot porty zdefiniowane: DDRB=0xFF; 2 robot porty zdefiniowane: DDRA=0; PORTA=0xFF; SFIOR=0x04; i dalej nie działa, próbowałem też z SFIOR=0x00 i też tak samo.
Ma ktoś może stronkę z której mógł bym wgrać kod do atmega16 aby dioda Led mrugała i schemacik. Oraz jaki kwarc zastosować przy atmega328 i jakim programem zaprogramować ponieważ wszędzie jest atmega328p ale nie ma atmega328 ? KOD z tej stronki // Program to blink LED using AVR Microcontroller (ATmega16) #include<avr/io.h> #include<util/delay.h>...
Daj : SET PORTC.5 SET PORTA.7 w tym momencie podciągniesz wejścia do plusa zasilania. Zwierając teraz je do masy powinno działać lepiej.
No to zacznijmy od początku main(): [syntax=c]DDRA = DEBUGER | BUZZER; //ustawienie kierunku pinu portu buzzera DDRB = PODSWIETLENIE;//ustawienie kierunku pinu portu podswietlenia DDRC = LED_PR | LED_PT | LED_T | LED_TR; //diody LED przyciskow DDRD = GRZALKA | NAPOWIETRZACZ;//ustawienie kierunku pinu portu napowietrzacza //podciądanie wejśc do VCC PORTB...
Tu jest funkcja putLCD void putLCD(unsigned char data) //było też int data { PORTB |= (1<<RS); PORTB &= ~(1<<RW); PORTB |= (1<<E); PORTA = data; PORTB &=~(1<<E); _delay_us(120); } ale wydaje mi się być w porządku... Po za tym działa dla pojedyńczych charów jak...
Kupiłem właśnie serwo " Tower Pro SG-5010 ". Wcześniej się nie bawiłem serwami. Sterowane jest z atmegi16, i zasilane dobrym zasilaczem 5V (wspolny dla atmega16 i serwa). Sterowanie wyglada ogolnie tak: PORTA |=_BV(0); //-ustaw _delay_ms(wysoki_stan); PORTA &=~_BV(0); //-skasuj _delay_ms(niski_stan); Czyli bardzo prosto. Zgodnie z tym co oczytałem się...
Spróbuj tak:[syntax=c]#include <avr/wdt.h> void main( void ) { DDRA=0xff; PORTA=0x00; PORTA=0xff; while(1){wdt_reset();}; } [/syntax]
Witam! Robię transmisje na podczerwieni i mam problem z przerwaniem zewnętrznym . Chce z pomocą przerwań odbierać dane, ale narzazie mam tylko prosty program reagujący na jakąkolwiek zmianę na INT0 , INT1 , program oczywiście nie działa. Proszę o pomoc, oto kod : int main() { DDRA = 0x11111111; //mam diody na dwóch najstarszych bitach palące...
Dzieki za radę, nie miałem pojęcia ze to jest istotne, sugerowałem się tym schematem http://www.elektroda.pl/rtvforum/topic21... a tam nie są nigdzie podłączone. Jak połączę te nóżki to po prostu omijam układ 4053 i wtedy działa więc programowo jest ok. Ale podczas prób z układem zrodził się inny pomysł na zwiększenie ilość urządzeń połączonych...
Zmieniłem PORTC na PORTB, JTAG nie był wyłączony - mój błąd. Co ciekawe, teraz jest wyświetlany napis: "He!" przy czym wykrzyknik jest niestabilny, mruga bardzo szybko. Sygnały zostały podłączone pod: R/W - PORTB.2 E - PORTB.1 RS - PORTB.0 PORTA - transmisja 8b. I jak to w elektronice, działa, ale nie do końca, dalej nie ma pełnego napisu: Hello!
W ustawieniach fusebit w programatorze ustaw źródło zegara na External XTAL. Czy procesor programuje się prawidłowo, bez błędów? Dziwi mnie, że najpierw ustawiasz porta i portc jako wejścia, a następnie używasz ich jako wyjść dla LCD. Spróbuj wstawić też Waitms 100 zaraz po Poczatek.
Witam, Ma migać dioda na porcie. Podłączona anodą do +5V a katodą do portu przez opornik 200R . Celem było zaświecenie diody przy wysterowaniu portu zerem. Okazało się że na porcie A.5 to działa, a na porcie C.5 nie działa. Kod bascom: ----------- [...] Config Porta = Output Config Portc = Output A: Portc = &B11111111 Porta = &B11111111 Waitms 100 Portc...
Nie powinieneś czasem odczytywać UDR tylko raz? http://www.atmel.com/Images/doc2466.pdf Strona 145: A second Buffer Register has been added. The two Buffer Registers operate as a circular FIFO buffer. Therefore the UDR must only be read once for each incoming data! Popraw main i sprawdź: [syntax=c]int main(void) { DDRA |= (1<<WE_A)|(1<<WE_B);...
Niestety, w Twoim konkretnym przypadku trzeba ten kod dalej zmodyfikować. Możesz w tej postaci obsłużyć czujniki na procie np PD7 i PD0 ale nie na różnych portach. Obecnie, wywołując funkcję Read_DS18B20 podajesz dosłownie numer pinu na którym podłączony jest czujniki dla danego portu, sam port jest zdefiniowany globalnie #define IW_DDR DDRA #define...
Nie mam jak zbytnio teraz całości dać ale tu są schematy. A kod No to najprostsze : DDRA |= (1<<PA2); PORTA |= (1<<PA2); W tiny pomyliłem się nieco z iscp ale wysztsko już ogarnalem i podpiąłem dobrze bo wykrywa procka.
Witam, jestem początkujący w programowaniu AVR więc proszę o wyrozumiałość. Mój problem polega na tym, że próbuje wywołać przerwanie (INT0) przez przecięcie wiązki światło w czujniku optycznym, pochodzącym z drukarki. W procedurze przerwania ma być umieszczona sekwencja migania diodami LED. Napisałem krótki kod aby sprawdzić czy skonfigurowanie przerwanie...
Witam mam problem z przerwaniem od INT0. Chciałbym aby przy wykryciu przerwania inkrementowała się zmienna a potem wysyłana na port. Przerwanie jest generowane poprzez przycisk zwierany do masy. Kod wygląda następująco: #define F_CPU 4000000UL //wew oscylator #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> #include...
Już działa miałem zwarcie na pc5 pc6. Na pinach pc0 pc1 pc2 pc3 mam podłączony mostek H i silnik 24v i chciałbym nim sterować w prawo i lewo przyciskiem zamknij / otwórz jak napisać kawałek programu ? $regfile = "m16def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdmode = Port Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6...
Witam, mam problem z uzyskaniem przerwania od licznika. Program w ogólności ma co mniej więcej sekundę na przemian zapalać i gasić diode. Licznik jest w trybie porównania do wartości 156. Częstotliwość oscylatora to 4 MHz, przeskalowana przez 256. Program niestety nie chce wejść w przerwanie. Może któryś z bardziej doświadczonych forumowiczów jest w...
Zrobilem na timerach i... nie dziala. Serwo na PA0 nie reaguje wogole, moge sam nim poruszac, serwo na PA1 utrzymuje pozycje 45' ;/ Oto kod: #include <avr/io.h> int main (void) { DDRA=0xff; //port d jako wyjscia TCCR1B=0x01; // bez preskalera (1mhz) PORTA=0xff; int servo[24]={1300,1700,0,0,0,...
Według mnie nie jest to powód niepoprawnego działania. Diodę powinno dać się zauważyć. uC pełni tylko rolę przekaźnika, a że robi to relatywnie szybko nie powinno to stanowić problemu. Można się upewnić, czy tutaj rzeczywiście coś się dzieje nie tak. Po prostu, wystarczy wstawić część odpowiedzialną za włączenie diody jeśli będzie jakiś sygnał. #include...
Witam, Dopiero wziąłem się za obsługę przerwań i przeglądając różne artykuły próbuję zrobić prosty program, który zgasi mi diodę. Niestety dioda świeci się non stop, nawet bez użycia przycisku. Korzystam z Atmega16. Przycisk mam podłączony do pinu PD2 czyli przerwania INT0, natomiast dioda jest podłączona do portu PA0. Program wygląda następująco: [syntax=cpp]...
Witam. Problem jest tak banalny, że wysiadam! Nie wiem co tu może być nie tak. To jest tak proste, że tego nie idzie zbabrać. A jednak nie działa... Mikrokontroler: Atmega16 Kod: $crystal = 8000000 $regfile = "m16def.dat" Config Portb = Output Config Pina.1 = Input Do If Porta.1 = 1 Then Reset Portb.6 If Porta.1 = 0 Then Set Portb.6 Loop End...
Cześć! Od jakiegoś czasu nie mogę sobie poradzić z obsługą I2C. Mam ATMege32 i podłączony do niej układ PCF8574. Chcę na początek ustawić na portach PCFa np same zera - żeby sprawdzić czy transmisja działa. No i nie działa. Oto cały mój kod (kompiluję pod winavr): #include <compat/twi.h> #define cbi(sfr, bit) (_SFR_BYTE(sfr)...
Zmieniłem trochę program. diody zasilam w ten sposób: http://obrazki.elektroda.pl/6188819000_1... ale w dalszym ciągu bez podania masy na wejście 2 diody się świecą. [syntax=c]int main(void) { DDRB = 0xFF; DDRA = 0b00000000; PORTA = 0xFF; while (1) { if(bit_is_set(PINA, PA1)) PORTB =0b11111110; else PORTB =0b11111101; } }[/syntax]
Witam Koledzy mam taki "program" który zapala i gasi diodę led w odstępach około 1sekundowych: Do Set Porta.3 Wait 1 Reset Porta.3 Wait 1 loop end I taki programik działa jak należy ale dlaczego po dodaniu przerwania od timera0 które zmienia stan portu z określoną częstotliwością polecenie wait 1 trwa ponad minutę? Mam taki program: $crystal = 4000000...
Albo sprawdź na innych portach, np. Wykorzystaj cały port A Zrobiłem na prawie całym bo tylko do PA6 na PA7 nie miałem już nic co jest wymagane do podłączenia do portów. Kod jaki użyłem jest następujący: $regfile = "m16def.DAT" $crystal = 1000000 Config Lcd = 16 * 2 , Chipset = Ks077 Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2...
w programie glownym nie ustawiasz portow tylko w bibliotece. schemat ok :) tzn jesli korzystac z tej ze strony ktora podales :) konkretnie tutaj #define LCD_RS_DIR DDRA #define LCD_RS_PORT PORTA #define LCD_RS (1 << PA2) #define LCD_E_DIR DDRA #define LCD_E_PORT PORTA #define LCD_E (1 << PA3) #define LCD_DB4_DIR DDRA #define...
... PORTA &= 0x01;//zapalenie LED0 ... PORTA |= 0x01;//zgaszenie LED0 ... PORTA &= 0x02;//zapalenie LED1 ... PORTA |= 0x02;//zgaszenie LED1 ... watpie czy takie działanie da poprawne sterowanie diodami nie zależnie czy mają się zapalać 1 czy zerem, działanie dla przykładu pierwsze ustawi najmłodszy bit czyli będziesz miał 0b00000001 po odczekaniu ta...
Zrobiłem zewnętrzny generator na procku 8515, jego kod wygląda tak: $crystal = 8000000 $regfile = "8515def.dat" Config Porta = Output Porta = &B00000000 Wait 2 Do Waitus 20 Set Porta.0 Waitus 20 Reset Porta.0 Waitus 20 Loop odlutowałem kwarc i kondki od wejscia xtal1 i 2 atmegi, sygnał z generatora podałem na Xtal1 i nic :/ - to samo co było - programator...
Ok no i zaczalem, atmega16 (nie bylo 8). Naprawde fajne zabawka, mam natomiast maly problem. Obsluguje sobie przerwanie: ISR (TIMER0_OVF_vect) { PORTA ^= _BV(3); TCNT0 = tin; } tin jest globalnie zadeklarowana jako: uint8_t tin=0xF0; i gra, jednak kiedy zmieniam wartosc tin wewnatrz funkcji main (tin=0x00;) to niestety obsluga przerwania dalej widzi...
Witam, Chcę na wyświetlaczu odmierzać czas od 999 sekund do 0. Jaka jest ogólna idea sterowania takimi wyświetlaczami za pomocą ATmega16? Poniżej zamieszczam napisany przeze mnie fragment kodu, liczby wyświetlają się prawidłowo, natomiast przez dłuższy czas wyświetlana jest tylko i wyłącznie jedna cyfra (przez delay'e). Czy do tej czynności wykorzystuje...
Spróbuj tak: 'Odebranie jakiejkolwiek informacji z modułu GPS $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Config Lcd = 20 * 4 ' Wyswietlacz 20x4 Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 Cls Dim Dana As string * 1 Dim Licznik As Byte Dim Tekst As String * 32...
Dopiero startuje w temacie mikrokontrolerów z książką "Mikrokontrolery dla początkujących" w ręku więc proszę o wyrozumiałość. Napisałem program w BASCOMIe gdzie na początku mam: Config Portb = 255 : Portb = &B00000000 Config Porta = &B11111100 : Porta = &B10000111 PortB jest podłączony pod linie segmentowych wyświetlaczy, a PortA 3-6 pod tranzystory...
Nie bardzo te zmiany pomogły... Może coś źle napisałem w tym drugim procesorze atmedze 16 ? Do niego wgrałem program napisany w bascomie: $regfile = "m16def.dat" $crystal = 16000000 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , Rs = Porta.2 , E = Porta.3 Dim Num As Byte...
Witam! Wyświetlacz podłączony jest w konfiguracji 4-bitowej: PA.0 - D7 PA.1 - D6 PA.2 - D5 PA.3 - D4 PA.4 - RS PA.5 - R/W PA.6 - E Inicjacja wygląda tak: void main(void) { DDRA = 0xFF; PORTA = 0x00; //*************INICJACJA WYŚWIETLACZA**************************// __delay_cycles(1280000);// kwarc 8MHz - opóźnienie 160ms PORTA =...
Witam. Posiadam programator USBasp napisałem taki program w BASCOM aby migał diodą LED. Niestety nie działa (Mam zainstalowany AVRdude). W czym problem?? $regfile "m16def.dat" $crystal = 1000000 Config Porta = Output Porta = &B11111111 Do Waitms 500 Porta = &B11111110 Waitms 500 Porta = &B11111111 Loop End Kod programu umieszczamy w znacznikach...
Znalazłem trochę czasu na to, więc sam sobie odpowiem. Użyte funkcje pochodzą z biblioteki AVRLIB. int main (void) { u16 rxData=0; DDRA=0xFF; //PORTA - wy PORTA=0x00;//do tego portu podczepiona jest linia CS przetwornika spiInit (); usart_init (USART_BAUDRATE(19200,4))... //COM2 9600 usart_puts ("- START -\n\r");...
Witam Niedawno zbudowałem radar na podczerwień coś na wzór tego: http://www.elektroda.pl/rtvforum/topic13... Działał wyśmienicie aż do momentu kiedy zachciało mi się coś zmienić w programie i przypadkowo go usunąłem bez możliwości odzyskania. Po jakimś czasie udało mi się napisać program ale mam pewien problem z którym nie mogę sobie poradzić...
Mam do Was pytanie dotyczące fragmentu programu, w szczególności pętli for, która wykonuje się 16 razy i każde kolejne wykonanie trwa dłużej niż poprzednie. Czas trwania ostatniej pętli jest kilkanaście razy dłuższy niż pierwszej i przyrost czasu wykonania każdej pętli jest z grubsza liniowy. fragment programu: [syntax=c] void send_frequency(void) {...
atmega16 porta portc drzwi porta odblokować porta
instrukcja obsługi zegara aquamatic candy blaupunkt uderzenia
dobra antena pokojowa wykrywacz metali schemat
Brak połączenia z Integra 64 i rejestratorem kamer przez TP-Link i DDNS PTA9B01 PT100 RS485: Protokół i Konfiguracja