[url=http://www.nongnu.org/avr-libc/user... do I pass an IO port as a parameter to a function?
PORTA = 00101101; To nie jest zapis binarny, wartość traktowana jest jako liczba rzeczywista !! Tak być powinno dla liczb zapisanych w sposób binarny: PORTA = 0b00101101;
Generalnie PIN to wejście, a PORT to wyjście. Chyba jednak nie :) PIN to pojedyncze wejście/wyjście, a PORT to 8 (najczęściej) pinów (np. PORTA, PORTB). Gdzie każdy pin w porcie może być programowany i obsługiwany niezależnie.
[syntax=c]PORTA=0x02;[/syntax] powinno być: [syntax=c]PORTA|=0x02;[/syntax]
Wydaje mi się, że najlepiej tak jak pisał kolega przez #define np. #define PORT0 PORTA.1 #define PORT1 PORTA.4 itp..
Błąd jest tutaj: [syntax=c]#define LED_0_OFF PORTA &= (1<<0)[/syntax] nie gasi diody bo zabrakło tyldy :) PS. Dodałem Ci 50 punktów, bo masz zero, a mogą się przydać :)
Nie czaję. Drabinkę masz na PortA czy na PortD?
Jasne ze sie gryzie. Zastanow sie tym razem nad tym: if(!((PINC & 0x03)==0x03)) //czujnik PRAWY i LEWY off { PORTA = 0x00; //silniki off } Dla jakich stanów tu wejdzie? Edit: dobra, najlepiej zrob tak: if(PINC & 0x01) //czujnik LEWY on { PORTA|= 0x04; //PRAWY silnik }else{ PORTA&=~0x04; }...
aha. Bo ja mialem taki bajer ze przy jednym obrocie zwiekszal liczbe o 2 (jak dobrze pamietam moze wiecej) a jak w trakcie jednego obrotu bardzo bardzo lekko przekrecilem w druga strone to juz wszystko wariowalo. wlasnie zauwazylem blad A poza tym ludzie nauczcie sie zagladac do helpa!!!!!!!!!!!!!!!!!!!!!!!! '** przyciski ** Config Pina.4 = Input Config...
zrob tak #include <avr/io.h> int main(void) { DDRA=0xFF; //portaA - wyjscie PORTA = 0xF; while(1) return(0); } po prostu odlutuj przycisk, i ustaw na dzień dobry 00001111 zobaczymy co sie stanie
K1=0 Do If wejscie1 = 1 Then k1 = not k1 Locate 1 , 8 if k1 = 1 then Lcd "*" else Lcd " " End If end if Loop Gdy ustawisz wszystkie wartości to jeśli k0 = 1 to liczba = 1, jeśli k1 = 1 to liczba = liczba + 2 , itd 4, 8,16 32 ... Jeżeli przyciski podłączysz pod port A liczba przyjmie wartość portu A Liczba = PortA
Jak masz drugą atmegę to zaprogramuj ją czymś takim PORTA=0xFF; asm("nop"); PORTA=0; asm("nop"); Weź sygnał z jakiegoś pinu portu i podepnij pod XTAL1 pacjenta, na pewno zadziała:) Jak nie to możesz kupić generator za kilka zł i podpiąć pod procka.
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))
Odblokować się zazwyczaj da trzeba użyć trybu programowania HV a do tego trzeba poczytać . Co do fusebitów na drugim oknie masz na czerwono: Enable JTAG - wyłącz ten bit i zaprogramuj Atmegę. Pozdrawiam Marek
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
Albo ja jestem bardzo zmęczony, albo Ty nie wiesz co to jest DDRx i PORTx. Jako wyjście ustawiłeś tylko najmłądszą linię każdego z portów. Zamiast np. DDRA = 1 wpisz DDRA = 0xFF. Napięcie zasilania nie siada ? Nie masz przypadkiem jakichś błędów montażu ?
Dość mała wysokość jak na zasilacz w wersji zrób to sam, pozostaje montaż smd, lepiej kupić coś gotowego. Widziałeś gotowe moduły "Miniaturowy stabilizator napięcia WP1584 3A " , albo jeszcze lepszy "Ładowarka ogniw baterii LI-ION 5V 1A TP4056 z USB" firmy Telmal? Bardzo fajna sprawa i na portalach aukcyjnych w cenie równej cenie samych elementów w...
To może tak ? [syntax=c] unsigned int matryca[] = { 0x0140,/*port_B cyfra 0 */ 0x0040,/*port_A cyfra 1 */ 0x0001,/*port_A cyfra 2 */ 0x0002,/*port_A cyfra 3 */ 0x0004,/*port_A cyfra 4 */ 0x0010,/*port_A cyfra 5 */ 0x0020,/*port_A cyfra 6 */ 0x0040,/*port_A cyfra 7 */ 0x0080,/*port_A cyfra 8 */ 0x0120 /*port_B cyfra 9 */ }; void zapal (unsigned char...
PORTA stale = xxxxxx00, DDRDA stale = xxxxxx11 Czy taki był zamiar?
Znowu w tej nowej sztuce uszkodził sie port PA.0? Jeżeli tak to idz tym tropem. Może tak płytka stykowa jest jakaś walnięta i uszkadza pina. A póbowałeś mierzyć na pozostałych wejściach ADC? W sumie płytka jest troszkę wypracowana..ale pomiary napięć z konieczności i tak robię bezpośrednio na pinach... raz ADC zadziałało. Pojawiały się różne liczny,...
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_...
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...
Nie uzyskalem odpowiedzi czy musi byc ten ukladzik 74HC244?? Nie musi, ale jest wskazany. Kiedyś miałem, teraz go nie mam i też działa. Jak sie dowiedziec czy uklad jest zabezpieczony przed nadpisaniem, skasowaniem czy cos w tym rodzaju i jak to usunac. Sygnature układu powinno odczytywać bez względu na zabezpieczenia. Objawem blokady przed odczytem...
Zrobiłem jeden port (PC6) wejściem, mam tam podpięty cały czas rezystor 10k od zasilania. O to chodziło? Nadal tak samo. Poniżej załączyłem kod. W Atmega8 pin 1(PC6) normalnie jest RESET i dopoki nie zmienisz odpowiedniego fusebit (patrz str. 223; tabela 87 bit#7), ten pin nie spelnia roli GIO (PC6), wiec processr go nie "widzi". Nie doradzam jednak...
W Bascom to parę linijek. Proszę bardzo: [syntax=vbnet] $regfile = "m32def.dat" 'wybor typu procesora $crystal = 8000000 'ustalenie czestotliowsci taktowania Config Pina.1 = Output ' diody Config Pina.2 = Output ' diody Config Pina.3 = Output ' diody Config Pina.4 = Output ' diody Config Pina.5 = Output ' diody Dioda_1 Alias Porta.1 'Wygodne aliasy...
$regfile = "m32def.dat" $crystal = 16000000 $framesize = 16 $hwstack = 24 $swstack = 16 'Konfiguracja SPI Config Spi = Soft , Din = Pina.0 , Dout = Porta.3 , Ss = None , Clock = Porta.1
Każde wyprowadzenie może być użyte jako I2C. Wystarczy obsługa programowa.
Dokładnie tak jak kolega mankinen napisał. To jest jedna z pułapek przy stosowaniu aliasów. Zazwyczaj z tego powodu nie stosuję aliasów, a jak już to zawsze daję aliasy podwójnie np. [syntax=basic4gl]OPrzycisk alias pinb.0 Zprzycisk alias portb.0 [/syntax] Pierwszy kiedy mam coś odczytać z pinu, a drugi gdy zapisuję jego stan.
W tym trybie który wybrałeś (Single Mode) możesz generować PWM na PA0, PA1 i PA2. Zobacz sobe ten kod: [syntax=c]#define PERIOD_EXAMPLE_VALUE (0x01A0) //dec 416 F_PWM = 3.333MHz/4/416/2 = 1KHz (in dual slope PWM) #define DUTY_CYCLE_EXAMPLE_VALUE0 (0x00D0) // dec 208 (208/416 = 50%) #define DUTY_CYCLE_EXAMPLE_VALUE1 (0x003E) // dec 62 (62/416 = 15%)...
Za mało kodu, ale proponuję usunąć wszystkie _delay_ms() i wstawić jedno, bezpośrednio przed return. O ile w ogóle jest potrzebne.
$Regfile="m128def.dat" $Crystal=8000000 Config porta=Output Porta=&B01010101 Do Rotate Porta,Left Waitms 200 Loop End Procek zapala co drugiego leda ale ruchu brak.Sprawdziłem fuse... mam włączoną 103 jak przełącze na "atmega 128 mode" świecą wszystkie ledy i nic
Witam, Po długiej przerwie udało mi się wrócić do mikrokontrolerów :-D Teraz bawię się atmega 2560. Na początku miganie diodą i przyciski poszły bez problemu, problem pojawił się przy konfiguracji sprzętowej PWM w trybie fast. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main(void) { DDRA |=...
I jak udało Ci się naprawić? Mam ten sam problem i nie wiem czy zamawiać nowy, czy uda się coś zrobić?
W tym temacie: [url=http://www.elektroda.pl/rtvforum/to... masz krótki programik do przeszukiwania magistrali I2C. Skompiluj i wgraj będziesz wiedział czy układ jest wykrywany pod odpowiednimi adresami.
Nie działa tylko PORTA? Jeśli tylko PORTA, to podłącz AVCC do reszty zasilania.
Osobiście to do sterowania pinu z 12V zastosował bym tranzystor + dzielik napięcia, a te diody które teraz pracują zostawił bym jako dodatkowe zabezpieczenie. Co do zakłuceń to poprostu pin uC nie może "wisieć w powietrzu", pin uC musi mieć zawsze jakiś potencjał (najlepiej bliski VCC lub GND). Czy w twoim przypadku ten warunek jest spełniony? Wydaje...
(at)pawellukaszelektroda Bo dzięki tej linijce [syntax=c]PORTA = (0<<PA5);[/syntax]generujesz stabilne zero albo falę prostokątną.
rejestry PINx w atmedze128 są tylko do odczytu więc nie wolno do nich nic zapisywać. jak chcesz sprawdzić stan przycisku to robisz tak: ustawiasz pin do którego jest podpięty jako wejście podciągasz go do stanu wysokiego w pętli głównej sprawdzasz czy dany pin nie jest = 0 (co będzie miało miejsce gdy go naciśniesz) czyli mniej więcej tak: PORTA |=...
Zdecyduj się: [syntax=c]#define TEST_PIN (1<<PB0)[/syntax] [syntax=c] DDRC |= TEST_PIN;[/syntax] mam nadzieję że widzisz błąd.
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.
jakos do mnie nie dotarlo jaki poziom napiecia pojawi sie na wyjsciach atmegi w zaleznosci od nap zasilania. Wysoki bliski VCC, niski = 0. Jak FPGA i AVR zasilisz z tego samego napięcia to się dogadają.
TCCR0=0x07; // port G jako wejście Że co? int main(void) { char digit } Funkcja main obejmuje nawiasem kilka funkcji przerwań. To się w ogóle kompiluje? Pół biedy że funkcja main. Pętla while(1) to obejmuje! Po za tym to SIGNAL pozamieniaj na ISR. ISR jest nowsze i przez to zalecane (choć w sumie kodu wynikowego pewnie to nie zmieni). I przy okazji...
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Ustawiłem w Slave aby wstawił do SPDR wartość 0x80. I pierwsza próba odebrania zwraca wynik 0x80. Natomiast następnej już nie. [syntax=c]ISR(SPI_STC_vect) { uint8_t bajt = SPDR; PORTA = bajt; SPDR = 0x80; // Wartość do następnego wysłania }[/syntax]
Kolego wyłącz JTAGA w fusebitach i będzie śmigać. Pozdrawiam
Jeśli mogę coś doradzić, to na początek nie staraj się porównywać asm do C, porównując krótkie fragmenty kodu możesz poczuć się sfrustrowany. Zacznij pisać w C, a optymalizacje zostaw na później, wtedy kiedy będą naprawdę potrzebne. Jak rozwiązać problem przy pomocy makr możesz podglądnąć w Atmel Studio klikając prawym przyciskiem myszy na GPIOR i patrząc...
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 =...
żaden u mnie nie działa (tak jakby w ogóle nie następowało zczytywanie i analizowanie bitów z portu C JTAG wyłączony?
http://obrazki.elektroda.pl/1304328600_1... Poniżej chciałbym zwrócić uwagę na rozwijający się projekt minikomputera zbudowanego z użyciem mikrokontrolera ATMega1284. Urządzenie na zdjęciach i według specyfikacji wygląda dosyć niepozornie. Powstały już co najmniej dwie wersje, wyposażone w ekrany 128x64 SPI OLED display oraz 160x128...
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...
Tak sobie pozwolę strzelić: 1. nie zapisujesz projektu przed kompilacją lub 2. nie kompilujesz projektu w ogóle :)
czestotliwosc moze byc do 8MHz bo 16 ma procek (ATmega). W odpowiednim momencie procek wykonywalby funkcje porta.1=1 ; porta.1=0; z malymi opoznieniami co ok. 100 cykli mysle. Dodano po 1 A moze jakis generator i kluczowanie prockiem? Tylko jak najprostszy i najtanszy generator. Wtedy np. 27MHz ?? I zebym mogl to pozniej jakims prostym odbiornikiem...
Ja stosuję po 10K. Jeżeli linie są dobrze podłączone (nie zamienione) i adresowanie fizyczne zgadza się z programowym to musi działać Wymagane są delaracje w kodzie typu Config Sda = Porta.1 Config Scl = Porta.2 Jeżeli te warunki są spełnione to problem obsługi połączenia Pozdrawaiam
Witam Mam następujący problem , chciałbym do swojego projektu użyć wbudowany komparator w atmedze32, z tego co wyczytałem to można ustawić wewnętrzne napięcie ref 2,46 na dodatnią nóżkę a na ujemną swoje napiecie i przy U+>U- na bicie ACO wystawi mi logiczną jedynkę. Ponadto ustawiłem przerwanie komparatora na zbocze narastające, ale niestety nie...
ten pin, PA0 podlaczony jest do przycisku a nastepnie przez rezystor 1k Ohm do masy, czyli wciskajac przycisk powinno zmienic stan PA0 z 1 na 0. Przynajmniej w teorii. Co za herezje! !! Przycisk jedna strona do procka druga do masy napisz w kodzie: PORTA|=1<<0; //podciaganie do + wew. pull upem if((PINA & (1<<0))==0) coś tam...
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]
Co do uart'a to jak pin RXD pracuje jako odbiornik, to chyba nie da się ustawić wewnętrznego podciągnięcia. Nie bedę cytować, ale odsyłam do noty - Alternate functions od PORTD. Pin jest wymuszany jako wejście, ale podciągniecie można uaktywnić ustawiając PD0 na 1. Poprzeglądałem kilka schematów, i zazwyczaj dają 10k do masy. Stan nie używany linii...
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...
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...
>Czy jest jakiś symulator, gdzie mogę użyć np. Atmega128, a do tego wyświetlacz (konkretnie: max7219)? Czy istnieje taki symulator, gdzie mogę schematycznie połączyć elementy, napisać kod i zobaczyć jak działa? Nie. >Zamiast symulatora, mógłbym to zrobić fizycznie. Zatem mam pytanie - szukając np Atmegi128, znajduję same 'czipy'. Jak znaleźć gotową...
Przede wszystkim zastanów się co się dzieje na wejściach od klawiatury, oraz jak zachowają się kody w przypadku niestabilnych stanów które prawie na pewno wystąpią. Zmiany stanów na portach też nie muszą być natychmiastowe z wielu powodów. W przypadkach bardziej wymagających może nawet dojść konieczność kilkukrotnego sprawdzania w czasie.
Napisz softa SPI lub skonfiguruj sprzętowy według zależności z tego PDF-a: [url=http://www.google.pl/url?sa=t&rct=j... 22 strona pierwszy wykres. Pamiętaj by pilnować...
Ty czy Kardaś? No ta w zasadzie popodmieniałem nazwy komend w przypadku mastera, ale w tym przykładzie nie ma dużo więcej do roboty, jak uda się stworzyć własną apkę na kompa to trochę pozmieniam (dodam więcej case'ów xd). Dużym problemem było to, że nie zaznaczyłem zapisu eepromu w eclipse, ale nadal są błędy teraz już chyba tylko po stronie slave'a:...
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.
Nie działa mi komenda debounce. Pracuje na ATmega 16 Mam podłączone przyciski do uC pod piny A0, A1, A2, A3, A4, A5. Przycisk natomiast jest podłączony pod mase układu. W programie podciągłem rezystory takim sposobem: Set PORTA.0 ............. a program wygląda tak do ...... instrukcje odczytu czasu z PCF8583 instrukcje odczytu z temp. z DS1820 ..........
Chyba jednak jest: dana = b11010000 PORTA |= (dana>>4)<<0; dana>>4 = b00001101 czyli będzie: PORTA |=0x0D a powinno być, żeby było tak, jak zakłada Autor wątku: PORTA |=0x01
A może coś takiego [syntax=c] typedef struct{ u08 b0:1; u08 b1:1; u08 b2:1; u08 b3:1; u08 b4:1; u08 b5:1; u08 b6:1; u08 b7:1; } volatile IO; IO * const pora=(IO*)&PORTA; #define PORTA0 pora->b0 #define PORTA1 pora->b1 ... [/syntax]
Masz w Makefile zły mikrokontroler wybrany: MCU_TARGET = atmega8 Zmień to na taki jaki posiadasz.
Cześć Zainstaluj sobie na komputerze w domciu "Microchip Studio" (dla AVR) pobrane ze strony Microchip. https://www.microchip.com/en-us/tools-re... Będziesz mieć IDE do pisania programów na AVR. Po udanej kompilacji Twojego programu, masz możliwość jego debugowania/symulowania, na sucho, bez zestawu. Będziesz widzieć na...
Moja teoria jest taka, że oni zamierzają z tego SAMD11 zrobić jakiś prosty programator/debugger/bootloader dla ATMegi. Tylko to miałoby jakikolwiek sens... Microchip na wszystkich swoich eval boardach daje programator/debugger na SAMD21. Jednak jak widać po poprzednich wynalazkach arduino pewnie ten SAM będzie robił tylko za przejściówkę UART/USB,...
Wyprowadzenia się zgadzają. Fizyczne podłączenie programatora też jest identyczne, ale atmega ma zmieniony trochę protokoł programowania - zapis jest stronicowany, oraz doszły bity konfiguracyjne, którymi możeszcz lub musisz w dużym stopniu upodobnić swój atm8515 do at90S8515. Są także różnice w rozmieszczeniu i funkcjach rejestrów, więc program niekoniecznie...
Witam Kolegów. Mam mały problem. W zasadzie mój problem polega na tym, że działa coś co moim zdaniem nie powinno działać. Napisałem prosty kod na obsługę timera w ATmega 32. Prpgramik ma generować na 1-szym pinie PORTA sygnał o określonej częstotliwośći. Kod jest następujący: #include <avr/io.h> main() { DDRA=255; //ustawienie PORTA...
No tak to właśnie zrobiłem... No chyba nie bardzo :D Przetestuj ten kodzik :D [syntax=vbnet]$regfile = "m32def.dat" $crystal = 16000000 Config Submode = New Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Porta.0 , Db6 = Porta.1 , Db7 = Porta.2 , E = Portb.3 , Rs = Portb.4 Config Pind.2 = Input : Set Portd.2 : Ok Alias Pind.2 Config...
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ę...
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
Nie wiem czy dobrze zrozumiałem - myślę , że dobrze :D Master: Print Chr(49) ; Chr(0) ; Chr(0) ; Chr(13); 'niech slave o adresie 49 zmieni stan PORTA.0 na przeciwny Print Chr(49) ; Chr(3) ; Chr(7) ; Chr(13); 'niech slave o adresie 49 zmieni stan PORTD.7 na przeciwny 'itd Slave: $regfile...
Jak komuś przeszkadza przetaktowanie Jeśli robisz to jako projekt do pokazania w EP - będą to czytać młodzi i mniej doświadczeni adepci elektroniki. A tu powinna obowiązywać zasada - uczysz? ucz poprawnie w 100%. Dlatego w Ep będzie napisane, że: - przy 16MHz przebiegi nie są w 100% zgodne z protokołem ale działaja bo..... - przetaktowanie grozi tym,...
No właśnie mam sobie zrobiony generatorek na atmega generujący sygnał na jednym z pinów. Ale to niestety nie działa. Program także się w procku nie wykonuje. Sęk w tym że tak na prawdę to nic nie ustawiałem w fuse-bitach tylko przez moją wielką durnotę i roztrzepanie jakoś otworzyłem na szybkiego okno z fusami i kliknąłem write. I nawet nie wiem co...
nie chciałem zakładać nowego tematu ponieważ ten też jest mój a tytuł także nawiązuje do mojego problemu. Otóż próbowałem odpalić driver led $regfile = "m32def.dat" $crystal = 16000000 Config Spi = Hard , Data Order = Msb , Master = Yes Config Porta = Output Dim X As Byte Do Incr X Toggle Porta.6 Spiout X , 1 Set Porta.7 Waitus 20 Reset Porta.7...
Ach, tak tak, macie rację, ale niestety po poprawieniu tego rejestru nie naprawiło się to wyłapywanie przerwań. Posiedzę nad tym jeszcze i pokombinuję. a na jakiej podstawie mniemasz że one nie działają? Jeśłi podłączasz diody do portu A to napewno tam nie będzie się wiele działo. Proponuje zamienić ci : [syntax=c]ISR(TIMER1_OVF_vect) { PORTA = 0xFF;...
Przez ostatnie 2h doszedłem do tego w czym tkwi problem zarówno w obsłudze przerwania od timera0 oraz od zewnętrznego INT1. Problem polega na tym że zmienna globalna którą wykorzystuję jako flagę istnieje tylko w obsłudze przerwania,flaga nie jest widoczna w głównej pętli programu lub po obsłudze przerwania resetuje się ATmega. Wywnioskowałem to gdy...
BlueDraco tutaj: [syntax=c]if(f>servos[0]) pc |= (1<<0); if(f>servos[1]) pc |= (1<<1); if(f>servos[2]) pc |= (1<<2); if(f>servos[3]) pc |= (1<<3); if(f>servos[4]) pc |= (1<<4); if(f>servos[5]) pc |= (1<<5); if(f>servos[6]) pc |= (1<<6); if(f>servos[7]) pc |= (1<<7); pcc = ~(pc);...
Witam, mam problem z okiełznaniem programowego PWM. Pacjent to Atmega 16 taktowana zewnętrznym kwarcem 8MHz. Niby wszystko tak jak powinno być, a ruszyć nie chce. Będę wdzięczny za rzucenie świeżym okiem na program, bo kończą mi się pomysły co jest nie tak. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> volatile...
_delay_ms(200); //PORTA|=0xff; TWI_init_master(); // Funkcja inicjująca TWI _delay_ms(20); TWI_start(); // Funkcja wysyłająca warunek początkowy _delay_ms(20); TWI_write_address(address+write)... //_delay_ms(80); //TWI_write_data(0x80); // //_delay_ms(80); //TWI_write_data(0x02);...
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...
Atmega jest taktowana zewnętrznym kwarcem 12MHz, żeby jeden tick timera trwał ~1us. 1. Czy timer 8-bitowy przyjmujący zewnętrzne impulsy, może je przyjmować w takich samych odstępach czasowych jak 16-bitowy? Niestety na etapie projektowania nie zauważyłem, że żeby użyć 16-bit timera do przyjmowania impulsów zewnętrznych należy użyć nóżki T1, a nie T0,...
Możesz wrzucić jakiś schemat jak to masz w rzeczywistości połączone? Po za tym chyba pomiędzy, LCD_Clear(); a LCD_WriteText("Hello"); powinno być void LCD_GoTo(unsigned char, unsigned char); np. void LCD_GoTo(0,0); bo skąd ma wiedzieć w którym wierszu i kolumnie ma wyświetlić tekst? I jak to jest że u mnie po otwarciu te biblioteki z podanego przez...
[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;...
Nie miałem punku zaczepienia w poszukiwaniu odpowiedzi na to pytanie, bo nie wiedziałem jaka jest przyczyna takiego zachowania wyprowadzeń portu C. Ale już wszystko wiadomo. Bardzo dziękuję za szybką i skuteczną pomoc. Problem rozwiązany, zamykam. Dar.El
Żadna. Możesz jeszcze napisać PORTA |= 1<<6; I tak sprowadzi się to do sbi 0x1B, 6 lub jak kto woli do "0xDE 0x9A" w pamięci programu. W przypadku ATMEGA32 oczywiście.
Reset i Set odnoszą się tylko do Bitów. W przypadku kiedy nie podajesz który bit to przy Reset zostanie skasowany tylko najmłodszy czyli Tobie nic nie da bo z, na przykład, 65535 zrobi się 65534. Używaj więc wersji "= 0" Do takich zadań najlepiej jest kupić na portalu aukcyjnym klon Saleae za około 30zł. Zmierzysz sobie dokładnie ;)
No to proste:] Coś zrąbałeś w sprzęcie. Sprawdź czy coś Ci się nie zwarło (zwłaszcza reset z czymś)... Oprócz tego pomierz napięcia zasilania, sprawdź czy 100nF nie odpadło.
Witam witam załóżmy teoretycznie że na procesory: Atmega 8 , STM32F100x, STM32F102x, STM32F103x, LPC214x gram identyczny kod który ma za zadanie tylko zmieniać stan portu A while(1) //pętla nieskończona { PORTA = 0xFF; //ustaw stan wysoki PORTA = 0; // ustaw stan niski } Jaka byłaby częstotliwość zmian PORTU A? przy założeniu że wyżej...
Witam, mam problem z połączeniem po USARCIE tych dwóch procesorów. Sprawa wygląda następująco: atmega1284p ma być docelowo masterem, wysyła ramkę i w odpowiedzi dostaje ramkę zwrotną od atmega8. Obsługa ramek nie jest jeszcze napisana, na razie wysyłam 8 bajtów atmegą1284p i jeżeli wszystkie bajty zostają poprawnie odebrane, to atmega8 odsyła mi 11...
Wszystko zależy jak długo była pod te 10V podłączona, jak krótko, to możliwe że jest ok, jak długo to pewnie jest usmażona. Popularna diagnoza to test termiczny, atmega podczas normalnej pracy (jeżeli nie zasilasz nią 10 led'ów po 20mA) nie powinna być nawet ciepła. Jeżeli jest gorąca lub parząca, jest uwalona. W dużej mierze tyczy się to wielu układów...
Pobór prądu mierzę z odpiętym programatorem, obniżam napięcia do 2.2V (mniej nie mogę bo wyłącza się lcd) W programie mam tak : [syntax=basic4gl] $Regfile="m169def.dat" $Crystal=1000000 $hwstack=40 $swstack=16 $framesize=32 config portf=input set portf config porte=input set porte config portb=input set portb config portg=input set portg config portd=input...
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
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...
Powinny być raczej wszystkie połączone. A jeżeli ktoś chce wiedzieć po co jest kilka wyprowadzeń Vcc i GND to proponuję poczytać trochę o technologii wykonywania układów scalonych. Przy dużym poborze prądu przez uC możesz przepalić połączenie pomiędzy nóżką obudowy a strukturą półprzewodnikową bo jest robiona z bardzo cienkiego drutu (do produkcji tych...
atmega porta klawiatura atmega porta input blaupunkt porta
fajka świecy rezystancja instalacja elektryczny ciągnik centrale instrukcja paradox
Automatyka do kotła podłogowego Protherm – wybór regulatora eBUS, sensoHOME, VRC 720, MiGo Link Xerox WorkCentre 6605 – ile gramów tonera wsypać do kasety? Napełnianie czarnej i kolorowej