Kto traktuje tak samo? TME czy Ty? To jest zupełnie inne. TTL, TTL-l, TTL-s, TTL-ls-to jest co innego. Dodano po 2 A, jeszcze było TTL-h. Ale teraz jest tylko TTL-ls-mocno przestarzałe.
PORTC &= ~_BV(3); - wyzerowanie PORTC |= _BV(3); - ustawienie i jeszcze: PORTC ^= _BV(3); - zmiana stanu.
Nie bardzo wiem o co Ci chodzi, ale może o to: while(1) { unsigned char a; a=PINA; PORTC=a; } }
To w końcu gdzie masz podpięte diody, na PORTB czy PORTC ?
a nie można tego warunku napisać jako poprostu : [syntax=c] if(PORTC == 0xFD)[/syntax] ?
Pierwsza sprawa, to czy dałeś rezystory Pull-up na liniach SDA i SCL? Możesz zastosować półśrodek i włączyć pull-up na pinach: [syntax=c]PORTC |= _BV(PC0)|_BV(PC1);[/syntax] Generalnie powinieneś użyć konwertera.
W uzupełnieniu dodać trzeba by AVCC (niby zasilanie ADC) też mieć podłączone, bo nieużywanie ADC wcale nie zwalania od jego zasilenia. Boleśnie przekonają sie o tym Ci, którzy będą chcieli uruchomić np. PORTC w ATMega32, ale nie zapomnieli o JTAGEN=1.
Czy nie lepiej by było zamiast bawić się w pojedyncze znaki odebrać cały tekst hurtem. [syntax=vbnet] Do If Tekst = "Zgaś" Then portc.1 = 0 Elseif Tekst = "Zapal" Then portc.1 = 1 End If Loop End odbierz: Input Tekst Return [/syntax]
1. Dlaczego VGA, a nie np. LCD/TFT we właściwej rozdzielczości z kontrolerem? 2. Dlaczego Atmega1284, a nie bardziej zaawansowany uC z DMA? 3. Dlaczego wewnętrzny RAM, a nie zewnętrzny SDRAM? Jeżeli jednak musi być to VGA, Atmega 1284 i wbudowany RAM, to da się to zrobić szybciej, ale niewiele, ponieważ pobranie danych z pamięci i wyplucie ich na port...
Program wygląda na ok. Chyba musi sie wypowiedzieć jakiś znawca bascoma ;) . Myslalem ze atmega ma jtaga na portc ale okazało sie ze nie :)
Ja mam taką jedną uwagę; skoro czas konwersji temperatury to 750ms to dlaczego czekasz tylko 200 ms ? Być może dlatego masz takie przekłamania w odczycie ? Zamiast dwóch identycznych podprogramów można użyć tylko jednego z przekazywaniem parametru do podprogramu. W tym wypadku było by to: portc.1 lub portc.0
Witam w funkcji obsługi przerwania ISR(PORTC_INT0_vect){.... chce zablokowań kolejne wywołanie tego przerwania, ale nie mogę i proszę o pomoc kolegów bardziej doświadczonych. Konfigurację przerwania zrobiłem tak: [syntax=c] PORTC.DIRCLR=PIN4_bm; PORTC.PIN4CTRL=PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc; PORTC.INT0MASK=PIN4_bm; PORTC.INTCTRL=PORT_INT0LVL_LO_gc;...
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))...
poprawka "na pałę" [syntax=c]zamień if(PORTC & (1<<PC3)){ na if((PORTC & (1<<PC3)) > 0){[/syntax]
Kolego Fredy wszystkie programy testuje na zestawie uruchumieniowym z atmega 644 ,portc.0 i portc 1 jest zarezerwowany dla SDA i SCI ,dlatego w program który dla Ciebie napisałem musiałem pominąć port.0 i port.1
Hmmm.... niepotrzebnie komplikujesz proste zadanie :D "Rozgryź" coś takiego: //przed zapisem rozkazu RS=0 , znaku RS=1 , a R/W jest na GND void write_byte(unsigned char nb) { unsigned char rb=0,x; //odwracamy kolejność bitów i oczywiście półbajtów ;-) for(x=0;x<8;x++) { rb>>=1; rb|=(nb & 0x80); nb<<=1;...
ło matko ;) po opisie kolegi atom1477 i po tej informacji, że "Bascom coś kombinuje" można by uznać, że napisanie sotu do obsługi 1wire to rzecz prawie niemożliwa dla zwykłego śmiertelnika. Tymczasem to co robi Bascom to absoultnie nie żadna kombinacja tylko normalne zachowanie - ponieważ to podtrzymanie stanu wysokiego na pinie portu jest niejako przygotowaniem...
Witam ! Przetestowałem ten kod: $regfile = "m8def.dat" $crystal = 1000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc , E = Portc.4 , Rs = Portc.5 Lcd "witam!" Fourthline Lcd "4" End i wszystko jest OK, program się kompiluje Prawdopodobnie powodem nie kompilowania...
Witam, Przedewszystkim na początku umieć informację, która wskaże kompilatorowi dla jakiego procesora ma utworzyć kod: $regfile = "m8535.dat" i jak chcesz zapalić diodę to nie piszesz set pinc.3 (rejestr PIN służy do oczytu stanu pinu jeśli ten jest ustawiony jako wejście) tylko set portc.3. Piny AVCC i AGND służą do zasilania wewnętrznego...
Poprawiłem funkcję dot. przerwań: [syntax=c]void Initialize_INTERRUPT_For_nRF(void) { // pin IRQ ustawiony na pin PC2 PORTC.DIRCLR=PIN2_bm; // pin, na którym jest IRQ PORTC.PIN2CTRL=PORT_ISC_FALLING_gc;// set intterupt active on falling edge PORTC.INT0MASK=PIN2_bm; // generowane jest przerwanie INT0 PORTC.INTCTRL =PORT_INT0LVL_MED_gc;// poziom HI dla...
Po pierwsze nie podoba mi się zapis: Pinc.1 = not Pinc.1 Powinno być raczej: Portc.1 = Not Portc.1 Albo jak ktoś się bardzo uprze: Portc.1 = Not Pinc.1 Ale ogólnie do rejestru Pinx raczej nie zapisujemy. Ponadto... zegar 4MHz, dzielnik w timerze przez 256, timer0 (8 bitowy) ładowany wartością 250.... to daje podział przez 6*256 = 1536. To częstotliwość...
Witam Oto kod w języku C. Odnośnie schematu - będzie wszystko działało prawidłowo, gdy zastosujemy diody LED niskoprądowe (np. /*Czestotliwosc taktowania procesora 1 MHz (korzystamy z wewn. RC 1MHz) *Procesor ATmega 8 */ #define F_CPU 1000000UL #include <avrio.h> #include <utildelay.h> #define Czas_zalaczania 400//Czas oczekiwania...
Są dwie metody tworzenia urządzenia. Jezeli to jest tak prosty schemat jak Twój , zaprojektuj płytkę na gotowo z wszystkimi mozliwymi dodatkami a program będziesz zapisywał sukcesywnie w miarę jak będziesz ulepszał kod programu . Taki układ testowy na gotowo. Druga metoda polega na budowie urządzenia testowego na jakiejś płycie testowej na której mozesz...
A może trzeba dodać $crystal = 80000 Config Portc = &B0010000 Portc = &B0010000
Hmmm...Wygląda to tak jakby na PC.5 był wciąż stan niski i program wykonuje cześć odpowiedzialna za ciągłe świecenie. Spróbuj zmienić linie If Pinc.5 = 1 then na If Pinc.5 = 0 then i zobacz co się będzie robiło. Program powinien działać niejako odwrotnie tzn. po podaniu masy na pin diody powinny mrugać. Jeśli to nie pomoże to spróbuj zamiast PC.5 użyć...
Witam Jako jedno z możliwych rozwiązań podaję kod poniżej. Oczywiście należałoby go traktować jako szkielet i dopracować. $regfile="m8535.dat" $crystal=8000000 Config Timer1=Timer, Prescale=1024 Config Portc.0 = Input : K1 Alias Pinc.0 Config Portd.0 = Output : Wy_1 Alias Portd.0 Config Portc.1 = Input : K1 Alias Pinc.1 Config...
Witam. Poniżej zamieściłem program w bascomie który właśnie pisze (jeszcze nie skończony) i mam taki oto problem: Twój problem , to notoryczne ignorowanie pliku pomocy Bascoma ;) Powiedz mi , co to ca dziwolągi przy definiowaniu :?: '----KONFIGORACJA WYSWIETLACZA----.' Config Lcdpin = Pin , Db4 = Pa.5 , Db5 = Pa.4 , Db6 = Pa.3 , Db7 = Pa.2 , E = Pa.6...
Witam programu do sterownika schodów nie mam jeszcze napisanego ponieważ nawet taki prosty program nie działa. Niewiem co jest problemem jak wgrywam program to weryfikacja przebieg pozytywnie a atmega nie reaguje tylko ustawia porty wg. pierwszej pozycji. Nawet na tym programie atmega nie zmienia stanu na porcie c [syntax=vbnet][ Config Portc = Output...
Po pierwsze na niektorych pinach PORTC masz JTAG, wylaczyles go? Po drugie - ATMega potrzebuje ok. 6 cykli zegara, zeby wejsc w przerwanie, a twoje instrukcje tez nie wykonuja sie w jednym takcie. Zobacz jaki kod dla przerwania generuje gcc, okaze sie, ze osiagniecie przebiegu rownego clk/2 w ten sposob jest niemozliwe.
Do autora - przyjrzyj się [syntax=vbnet]Config Portd.5 = Output : Dc_wlacz Alias Portd.5 Config Portd.1 = Input : S12_wolniej Alias Portd.1 Config Portd.2 = Input : S11_szybc Alias Portd.2 Config Pina.0 = Output : Kier_lewo Alias Pina.0 Config Pina.1 = Output : Kier_prawo Alias Pina.1 Config Pina.4 = Input : S10_start Alias Pina.4 Config Pina.5 = Input...
Ten program ustawia stały stan linii portu C. W zależności od sposobu podłączenia LED będzei ona stale zgaszona lub stale zapalona. Na czym polega zauważone prze Ciebie niepoprawne działanie? Jeśli chcesz, żeby zamigało, zmień pętlę np. tak: while(1) { PORTC^=to_co_trzeba; _delay_ms(tyle_co_trzeba); }
Jtag jest na Portc.Aby go wyłączyć wybierz zakładkę fuse & lockbit - będzie tam zakładka jtag enabled - zmień na disabled - write fuse i po kłopocie. Pozdrawiam.
W międzyczasie edytowałeś post i przedstawiłeś nowe dane. Mój teraz na razie będzie się tyczył tego co pisało wcześniej. Jeśli chciałbym rozdzielić dwa impulsy na dwa różne piny to zrobiłbym tak: Podłączył sygnał do zewnętrznego przerwania. Kiedy nadchodzi pierwszy plus to ustawiam flagę na 1 i wracam do pętli głównej. W niej tak długo jak pin jest...
qurde pisze 2 raz:) Najpierw literóweczka :P : //generujemy dodatnia połowke przebiegu PORTc |=_BV(PC4); //sbi,sbi zapalanie PORTc &=~_BV(PC5);//sbi,cbi gaszenie //teraz czekamy przez połowkę okresu sinusoidy for(f=0;f<freq;f++) { delay(1); } "c" z duzej litery :) I jeszcze jedno co to za _BV jakies makro ?? Skąd to wzioleś ?? Podaj jakie błędy?...
Dla testu daje na PORTC same jedynki i tylko na dwoch pinach PC4,PC5 wymuszam stan a na PC0-PC3 cały czas jest 0 napięcie 0,5V podczas stanu 1 podczas 0 - 0. ATMEGA 8 - fusebity bez zmian, zegar węwnętrzny. PORTD działa bez zarzutów. coś robie źle? ale co? #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void)...
Witam. Po raz pierwszy zaczynam używać Atmegi128. Chciałem odpalić programik testowy który zapali diody. Zapalam cztery diody na PORTC i to działa. Problemem pojawia się kiedy wstawię do programu dowolne polecenie wait waitms waitus. Program tak jakby się wtedy zatrzymuje. Atmega pracuje na zewnętrznym kwarcu 8MHz. [syntax=basic4gl] $regfile = "m128def.Dat"...
Na poczatek wywal wszystko i zostaw w mainie kawalek z dioda. W lcd.h byc moze masz zapis czestotliwosci ktory jest inny niz w mainie. Jak piszesz PORTC&=0x00 to wystarczy napisac PORTC=0x00. Zakladam ze rejestry DDR sa ustawione prawidlowo ?
No to robię na urodziny prezent dla kogoś z LEDów na ATmega324A-PU. No i będę programował pierwszy mikrokontroler, który nie jest Arduino. Schemat połączenia LEDów wygląda mniej więcej tak: https://obrazki.elektroda.pl/1592528100_... Główną zmianą jest to, że rezystory oznaczone jako 250 mają 200R. Reszta układu: https://obrazki.elektroda.pl/5253513800_...
Okazało się że musiałem wyłączyć JTAG-a. Teraz już wszystko działa:) Standardowo ATMega ma go załączonego i przez to nie można używać pinów: PORTC.2 PORTC.3 PORTC.4 PORTC.5 jako wyjść. Jakby ktoś miał ten sam problem to JTAG-a wyłącza się zmieniając programatorem ustawienie bitu JTAGEN w bitach konfiguracyjnych procesora.
( PORTC & ~0x3f ) Operator ~ powoduje dopełnienie jedynkowe liczby 0x3f - zamienia bit 1 na 0 i odwrotnie. Wynik tej operacji to 0xc0 = 0b11000000 & realizuje iloczyn logiczny wartości w rejestrze PORTC i ~0x3f Oprócz tych działań tak jak napisałeś ustawiana jest jedynka logiczna na PC1 1 << PC1 oznacza przesunięcie logiczne w lewo 1 o...
Jak mówią, "diabeł tkwi w szczegółach", a oto Twój diabeł :D tmf
Mam tak: $regfile = "m8def.dat" $crystal = 4000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.0 'piny lcd-atmega Config Portc = &B1111111 Cursor Off Cls Lcd " Witaj " ; Lowerline Wait 2 Lcd "Sterownik by Kark" Wait 5 Cls Do Odczyt_1czujnik:...
A co zrobić żeby kolejne kliknięcie zmieniło x na zero? To nie zadziała zbyt dobrze, bo przytrzymanie przycisku będzie ciągle zmieniać stan x na przeciwny. Zresztą taką zmianę szybciej można zrealizować za pomocą x^=1; Stąd też najlepiej PINC przypisać do jakiejść zmiennej tymczasowej i sprawdzać czy od ostatniego sprawdzenia stan przycisku uległ zmianie....
Miałeś racje. Dzięki. Błąd już znalazłem. Powinno to wyglądać tak: PORTC=(PORTC&0xc3)|((... PORTC=(PORTC&0xc3)|((...
Jak zwykle czasu nie ma, ale nie mogłem się powstrzymać. Nakręciłem pierwszy klip - ahahahaha :D No musiałem się pobawić edytorem. Efekt to półtora minuty magii :D Ahahaha miałem kupę zabawy z tym :D Przy okazji możesz zobaczyć jak się używa wbudowanego symulatora by zadawać wartości ADC ;) Twój pomniejszony kodzik też poniżej, tylko używając poza symulatorem...
Witam... Generalnie rzecz biorąc procedury opóźnienia czasowego nie nadają się do modulowania diody IR... Częstotliwość nie jest zbyt stabilna to raz... Dwa nie uzyskasz 36kHz musisz skorzystać z dobrodziejstw timera... Np. tak... #include<avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <inttypes.h> int...
wcale nie jest tak źle z tą transmisją gdyż już wykonałem jedne takie urządzenie ale na 2x atmega 8 taktowane RC 8mhz. I wszystko działa piknie :) widocznie mam fart. Układ wyposażyłem w kondensatorki filtrujące więc jakoś tam filtracja jest. I podobnie jak u kolegi wyżej, podłączyłem kwart bez kondensatorów 36pF i śmiga. ale narodziło się nowe pytanie...
Na moje oko odczytuje tak: A = PortB a zapisuje tak: DDRC = 0 PortC = 255 Ot i cały problem.
100mA i taki program jak wyżej... powinszować:> Wyświetlacze za długo nie podziałają... Świetna porada kolego zerpo. Nie zaniżajmy poziomu forum... Piszesz, że PORTC wybiera diodę...a czy jest to jakaś atmega i nie atmega8/atmeg88? Jak tak...to czytaj wyróżnione/przyklejone tematy...słowo klucz... JTAG.
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.
Wyłącz JTAG. W fuse bitach.
Witam Chciałem zbudowac układ który liczył by 0-9 i wyświetlane to było na siedmiosegmentowym wyświetlaczu... .......... prosze o pomoc i o jakies proste wytłumaczenie moich błędów. myslalem jeszcze o robieniu tego za pomoca rozkazu INC i dodawania tylko nie wiem jak zawartośc rejestru wystawic na wyjscia z gory dziekuje za pomoc pozdrawiam Tu masz...
Wyświetlacz to standardowy 2x20. Co do paska kontrastu miałem na myśli właśnie wiersz pojawiający podczas regulacji kontrastu potencjometrem. Zastanowiło mnie dlaczego zaczernia się tylko jeden z wierszy skoro LCD dysponuje dwoma. Dodaję schemat podłączenia LCD i fragment kodu konfiguracji portów do wyświetlacza. Połączenia LCD z procesorem sprawdzałem...
jakies pomysly? Przestać używać wartości numerycznych i zacząć używać symbolicznych z odpowiednimi operatorami bitowymi, takich, jak w plikach nagłówkowych. Nie ma wtedy prawa się nic p... w kodzie... ;) Niestety jestem bardzo początkujacy w programowaniu i tych operatorów logicznych nie rozumiem... A dajac wartosci liczbowe przynajmniej poczesci rozumiem...
Przykładowy program realizujący przedstawiony przeze mnie sposób. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "LCD.h" volatile unsigned int adcon = 0; ISR(TIMER0_OVF_vect) { static char st; if((st++)%2) { PORTB |= 1<<0; //pb0=0 PORTB &= ~(1<<1); //pb1=1 adcon = ADC; //odczyt...
Witam Chcę podłaczyć 2 wyświetlacze ILI 9486 tryb 8bit do atmegi 2560 . I mam pytanie , bo mam problem następującej treści. Układ połaczeń jest taki : ATMEGA - LCD PORTC LCD_D0 - D7 bei 8Bit Mode ' PORTG.0 LCD_Reset ' PORTG.1 LCD_CS ' PORTD.7 LCD_RS ' PORTG.2 LCD_WR Rs_disp Alias Portd.7 'Display DC RS Cs_disp Alias Portg.1 'Display CS Res_disp Alias...
a ustawiłeś Fuse Bity?? Bo jeśli nie masz ustawionych to ATmega pracuje z częstotliwością 1MHz. Musisz ustawić Fusy na albo 8MHz na wewnętrznym generatorze albo ustawić Fusy na zewnętrzny kwarc. i mniej więcej kod by tak wyglądał: $regfile = "m8def.dat" $crystal = 8000000 Cursor Off Dim Czestotliwosc As Long Const Licznik = 22336 Config Timer1...
Witam próbuje zmieniać kierunek obrotu przerobionego serwomechanizmu w za pomocą pilota w kodzie RC5. Samo odbieranie kodu naciśniętego przycisku oczywiście działa. (przykład z zapalaniem diody). Jak widać na obrazku poniżej do zmiany kierunku służą wejścia układu 1A,2A,3A,4A. wszystkie są podpięte pod port C. pojedyncze ustawienie kierunku w pętli...
To czego szukasz jest rozwiązane w Arduino i można łatwo skorzystać z tego. Instalujesz bibliotekę OneWire i DallasTemperature, otwierasz przykład Multibus, w tablicy podajesz numery pinów, klikasz wgraj i na UART lecą temperatury z wybranych pinów. Koszt to 6k flash i 516B RAM dla UNO (Atmega328P). Problemem jest to, że nie ma w typowych płytkach ATMEGA128...
hm a czy nuzka od atmega 8 opsiana AVCC to jest zasilanie zewnetrzne ? Tak, jest to zasilanie części analogowej (PortC i napięcie odniesienia) mikrokontrolera. Koniecznie musi być podłączone - nawet bezpośrednio do VCC (lub przez dławik - prosty filtr przeciwzakłóceniowy)
Witam. Atmega328p łączy mi się z bluetooth'em wszystko wydaje się ok dopóki nie zacznę obsługiwać znaków odebranych przez BT. Jeżeli ATmega odbierze 1 lub jakąkolwiek cyfrę wszystko działa ładnie ale jak odbierze jakikolwiek inny znak nie chce działać (znaczy jak będę wysyłał dłuższy czas to zadziała ale to nie o to chodzi). Poniżej wrzucam mój prosty...
To jest przykład dla Atmega8, nie wiem czy pomoże: $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portd.0 , E = Portc.2 , Rs = Portc.1 Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Cursor Off Cls Rem konfiguracja portów Dim R As...
Brakuje klamer, być może miało być tak: [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0xff; DDRB = 0x02; DDRC = 0x00; PORTC = 0x03; while(1) { if(!(PINC&(1<<PC0))) { if(!PORTD) { PORTB |= 0x02; _delay_ms(100); PORTB &= ~0x02; } else { PORTD >>= 1; _delay_ms(80); }...
Witam, poniżej zamieszczam kod z Bascoma mojego sterownika BMS, w tej chwili kontroluje temperaturę, czas, Rs232, LCD 2x16. Obsługa z klawiatury lub pilota RC5, w obecnej chwili rozwiajm go o dostęp przez internet. zajmuje ok 8kb pamięci więc w A162 będziesz miał jeszcze drugie tyle pamięci. Ja kożystam z A32 Pozdrawiam. PS. daj znać jak zakończysz...
Ten bit uruchamia lub wyłącza tryb zgodności z nie produkowaną już megą103. W tym trybie dla przykładu masz do dyspozycji tylko jeden USART, jeden 16bitowy timer zamiast dwóch, PORTC działa tylko w trybie jednokierunkowym (tylko jako wyjście) itd... Z pozostałymi różnicami postaraj się zapoznać już samodzielnie (nota str.4, 5).
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.
Idzmy głównym wątkiem bez cofania sie. Tak, uaktywnia ale już wiem, ze było ono przechowywane w SREG. To jest wyjaśnione. W SREG przechowywana jest informacja o fladze I, czyli fakt włączenia lub wyłączenia przerwań globalnych. Nie ma to nic wspólnego z "przechowywaniem" informacji o przerwaniach INTx. Instrukcjami operującymi na fladze I w SREG są:...
dioda podłączona do portu minusem? if(adcResult<100){ _delay_ms(100); PORTC ^= 1<<PORTC0; } else PORTC |=(1<<PORTC0) Dodano po 4 PORTC ^= 1<<PORTC0; zmienia stan portu na przeciwny czyli jeżeli dioda w poprzednim obiegu zapali się a w następnym warunek nie zostanie spełniony to dioda pozostanie zapalona i na odwrót jeżeli w poprzednim...
Podstawowa sprawa - w drugiej linijce kodu masz napisane, że $crystal = 8000000 podczas gdy na schemacie nie masz podłaczonego żadnego kwarca. Jeśli używasz wewnętrznego oscylatora (i oczywiście masz tak ustawione FuseBit'y), to ATmega pracuje na 1MHz i taką wartość powinieneś ustawić w programie, bo nic nie będzie działać, albo będzie, ale "dziwnie"...
Przerobiłem tak, żeby wysyłał testowo tylko jedną wartość ( losową ) co 8 sekund Dodano po 18 Dołożyłem Clear Serialin0 Com1_str = "" czyli [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0...
Witam ! Czy linie: Config Scl = Portc.0 Config Sda = Portc.1 masz "podciągnięte" do plusa zasilania rezystorami ?, jeśli nie to zrób to, daj dwa rezystory 4,7k. Pozdrawiam. Stefan
Ale DHT11 podczas oczekiwania jest w stanie wejścia, a więc czyta linię a nie coś nadaje. Dodano po 13 Pewnie będzie "#define PC4 4" w "iom8.h". Nie można było odrazu tak :) Ten przykład pokazuje upierdliwość programowania w C. Takie wielopoziomowe wyłuskiwanie informacji powoduje, że zakres wiedzy na temat programowania w tym języku jest niepotrzebnie...
Pojawia się taka opcja tylko jest ona akurat teraz niedostępna. W jaki sposób jeszcze mogę przywrócić poprzednie ustawienia jeżeli doszło do ich zmienienia. Dodam że wgrywałem program w obsługą przetwornika AC. Dziękuję Ci za podpowiedzi. #define LED1 PB4 #define LED2 PB5 #define ADCIN PC2 DDRC=0xff; DDRC &=~ (1<<KLAWISZ); DDRC &=~ (1<<ADCIN);...
To jest przyklad tego jak mozna obsluzyc DS1820 przez mega 8 ale jest tam tez obsluga wyswietlacza w C.Moze sie pryda.Sam to dostalem od jednego kolegi z forum:-) wiec mam nadzieje ze sie nie obrazi...mnie interesowal DS. Pozdrawiam Maciek! #include <avr/io.h> #include <avr/pgmspace.h> #include <stdlib.h> #include <ctype.h> #include...
Witam. Mam problem z z komunikacją Mojej ATMEGI z wyświetlaczem LCD na porcie C. Na każdym innym działa to bezproblemowo. w przypadku Portu C dostaje na wyświetlaczu czarne prostokąty. Pytanie gdzie jest błąd lub czy przyczyną może być sama ATMEGA (aktualnie posiadana ATMEGA32A PU 1111 szt.4). na każdej to samo. [syntax=basic4gl] $regfile = "m32def.dat"...
Zbudowałem ostatnio kilka urządzeń z wykorzystaniem pinu WR wyświetlacza. Ta biblioteka nie jest szczęśliwa. Jest dużo nowsza i w dodatku z możliwością użycia dowolnych pinów biblioteka. Jest włączana automatycznie jeśli jako ostatni parametr/pin napiszesz WR = PIND.3 (przykład) Użyta zostanie biblioteka "lcd4busy_anypin" Przykład z moich kodów: Zapomniałem...
[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;...
Drogi kolego Zmień sobie defina na: #define PORT_AD PORTA #define DDRD_AD DDRA Miałeś: PORTC i DDRC -> według pdfa przetwornik jest na porcie A, nie C:-) Całkowity koszt usługi 0zł ;P
Wielkie dzięki za pomoc nadzieja wróciła , adres wyświetlacza 0x3c Raystar pozostaje wysłać do lcd ten adres znalazłem w necie następny kod Spróbuję go dostosować zerknij czy sie nada do zmian i2cmaster.c [syntax=c]///////////////i2cmaster.c //Plik zawiera funkcje wykorzystywane w i2c dla trybu nadrzędnego (master) #include <compat/twi.h> #include...
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...
No ale potencjometry to musisz podłączyć do PortC.0 i PortC.1. Wiesz o tym? I na początku programu daj: Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc
ten KOD bez błędów raczej i kompiluje się [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #define p0 0x01 #define p1 0x02 #define p2 0x04 #define p3 0x08 #define p4 0x10 #define p5 0x20 #define p6 0x30 //#define F_CPU 1000000 // tu definiujesz wartość uzywanego kwarcu void InitUSART( unsigned long int baud...
napisałem ten kod trochę inaczej i teraz robi 2 kroki w lewo 1 w prawo.. Przedtem w kodzie miałem od pc1 do pc6 zamiast pc0 do pc5.. Teraz ogarnąć w jakiej kolejności podłączać uzwojenia i będzie dobrze, a atmega nic się nie grzeje ? - to dobrze czy źle ? - silnik po dostaniu napięcia trzyma dosyć mocno
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:...
Układ symuluje efekt płynącego światła zastosowanego w filmie "Knight Rider". Zawsze świeci się tylko 1 dioda LED, poprzez szybkie przełączanie diod uzyskano efekt "płynącego" światła. Układy ULN 2803 w obudowach SMD należy przylutować od strony ścieżek (należy zwrócić uwagę na kierunek ułożenia na płytce!). W przypadku użycia rezystorów 100 om (przy...
Na wejściu (PortC.0) pojawia się stan 0 (na przykład z układu ULN2803) to na wyjściu (PortA.0) pojawia się stan 1 wysoki. Np. tak: If PINC.0 = 0 then PORTA.0 = 1 end if Jak robisz coś takiego: Config Portc = Input to lepiej zrób to tak: DDRC = 00000000 A potem jeszce to wszystko podciągnij do 1 tak: SET PORTC Już nie wspomnę o wyłączeniu JTAGA bo inaczej...
Witam, Chciałbym przerobić nie swój kod programu pod żyroskop l3g4200d. Kod znalazłem w internecie jest napisany właśnie na atmegę 1284p, a ja potrzebuję go przerobić na atmegę8. Kod wygląda następująco: [syntax=basic4gl]'======================... ' Project: L3G4200D 3tripple axes gyro Test #1 '...
Cześć Mam taki kod ale niewiem w czym lezy problem czy możecie mi pomóc [syntax=c] //Dołączenie plików bibliotecznych #include<avr/io.h> #include<util/delay.h> #include<avr/interrupt.h> //Deklaracja funkcji void initialization(void); //Powołanie zmiennych globalnych wykorzystywanych w przerwaniu volatile uint8_t licznik_1; volatile...
A konkretnie co w tym nie jest proste? [syntax=c]struct pin_ { uint8_t *port; uint8_t pinmask; } pin[] = { {&PORTB, 1 << 3}, {&PORTC, 1 << 5} /* itd */ }; void setpin(uint8_t p) { *pin[p].port |= pin[p].pinmask; }[/syntax]
Sprawdź na portc taki programik. $regfile = "m16def.dat" $crystal = 4000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Cls Do Lcd "ok" Waitms 250 Loop End U mnie tak działa bez problemu. TYLKO NIEZAPOMNIJ USTAWIĆ FuseByts dla portu C Pozdrawiam
Witam, uściślij swoją wypowiedź. jako Controlport wykorzystuję PORTC (Dataport = Portd) Podłączasz zatem do PortuC czy D? Jeśli do portu C, to możliwe, że przyczyną jest aktywny interfejs JTAG w procesorze. Pozdrawiam, aleexander Przecież piszę wyraźnie: jako Controlport wykorzystuję PORTC (Dataport = Portd) - dataport to nie to samo co Controlport...
Witam przygotowałem sobie na moim zestawie uruchomieniowym na atmega32 program, docelowo miał być na atmedze 128 więc zrobiłem płytkę i mam problem. Konfiguruje dataport wyświetlacza i jeśli ustawie inny niż PORTD (w układzie podłączony do PORTC) po zaprogramowaniu atmega "wisi". Dopisałem mruganie co sekundę podświetleniem i mruga tylko kiedy Dataport...
Witam wszytkich, Od kilku dni próbuję się nauczyć obsługi modbus rtu w bascomie i na podstawowym programie z helpa się wyłożyłem. Poradźcie dlaczego wpisując mój procesor w poniższy kod wywala mi błędy? Czy ta biblioteka jest tylko pod dany procesor? Proszę podpowiedzcie. https://obrazki.elektroda.pl/7527367800_... [syntax=vbnet]'-------------------------...
W tym momencie jest tylko cos takiego testowego (na różne sposoby probowalem zmieniac stany portów) $regfile = "m128def.dat" $crystal = 14745600 Config Portf = Output Config Porta = Output Config Portb = Output Config Portc = Output Porta = 255 Portb = 255 Portf = 255 Portc = 125 Do Toggle Portf.2 Wait 1 Porta.0 = 1 Porta.1 = 1 Porta.2 = 1 Porta.3 =...
Piszesz, że swiotch jest podłączony pod PD5, a inicjujesz PORTC? Druga rzecz - jak czytasz stan portu to czytaj z PINx a nie PORTx - w PORTx jest to co tam wpisałeś.
Nioptrzebne nawiasy, jak ci juz pisali PORTC = 0x18 - szkoda czasu na analiwoanie magicznych liczb. Wciecia jak nalezy. A na;isałem ci bo nawet nie widziałem prób w tym kodzie własnorecznego zdebuggowania.
$baud = 9600 $crystal = 1600000 Config Lcd = 16 * 1 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.6 , Rs = Portc.7 Display On Dim A As Integer While A < 10 Cls Cursor On Wait 1 Lcd "dupa" Print "jestem" Wait 1 Cls Wend Kwarc mam 16Mhz
Wyłącz JTAG albo w fusebitach, albo w kodzie. Stary numer wielokrotnie omawiany na tym forum na wszelkie sposoby.
OK, wywaliłem to powielanie i zrobiłem po prostu if i potem else if. Co masz na myśli brak nop ? asm("nop"); ? [syntax=c]PORTA = 0b01111111; if((PINA & 0x08)==0) PORTC = wyswietlacz(1); else if((PINA & 0x04)==0) PORTC = wyswietlacz(2); else if((PINA & 0x02)==0) PORTC = wyswietlacz(3); PORTA = 0b10111111; asm("nop"); if((PINA & 0x08)==0) PORTC = wyswietlacz(4);[/syntax]...
"Jak ustawisz minimalną dla 2 stanów to wykresem jest linia prosta" Oczywiście, jak sama nazwa wskazuje PWM to Pulse-width modulation.(modulacja szerokości impulsu) Jeśli zasilisz układ napięciem 24V to przy wypełnieniu PWM=255 będziesz miał 24V. Jeśli ustawisz wypełnienie 50% czyli PWM= 127 to teoretycznie powinieneś otrzymać 12V. Dlatego proponowałem,...
atmega portc atmega32 portc portc atmega8
skrypt uruchamia automatyczny wiertarka bosch wirnik awaryjny fiesta
mikrokomputer cobra1 parkside robot
Jak postępować, gdy nie można przerwać odkamieniania ekspresu? Gdzie kupić nadajnik GSM SMS PX100?