[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;
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%)...
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; }...
Reakcja na przycisk na pewno jest. Wstaw sobie tam jakiegoś wait'a i mignij diodką. Może po prostu program wykonuje się kilka lub kilkaset razy po naciśnięciu przycisku i nie zauważasz działania. Najlepiej załącz całość, inaczej nic nie wywróżymy. No i schemat. Dziwne jest to że poprzedni kod działał na Atmega48. Jaką masz wersję bascoma? Może czas...
Tak kup sobie USBasp dobry tani programator z taśmą ISP Polecam gorąco sam go używam i nie mam problemu znajdziesz je na wszystkich portalach aukcyjnych,zaprogramujesz tym programatorem bardzo dużo układów i zasilisz płytkę bez problemu
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
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...
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))
Kolego wyłącz JTAGA w fusebitach i będzie śmigać. Pozdrawiam
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
ż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?
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 ?
Dziękuje za kod bacznie się mu przyjrzę ale w międzyczasie napisałem coś takiego i chciałbym byś powiedział czy taka definicja ma szansę zdziałać.. Nie, bo próbujesz w tablicy umieścić instrukcje, a nie konkretne wartości. Najbliżej tego co chciałeś uzyskać jest tablica wskaźników na funkcje, ale to już inna bajka.
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,...
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...
W sumie strzelam na oślep, nie ma tam czegoś takiego jak np. define EXTENDEDRAM=16384 ? inne słowa jakie przychodzą mi na myśl to EXTRAM, RAMSIZE RAMEND SRAMEND... He he na oślep, a w tarczę trafił :wink: ->astral Nic prostszego nie udało mi się wymyślić :( Const Extramend = 262144 / 8 -1 Const Extramstart = _ramsize '_ramsize to stała "wewnętrzna"...
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...
Nie masz podciągnięcia pod zasilanie. Podłącz na próbę rezystor 1k między wejście portu a zasilanie i wtedy sprawdz czy jest ok. Inna przyczyna to być może pomyliłeś rejestry PIN i PORT - częsty błąd.
Odlutuj diody DZ1 i DZ2 i zobacz czy działa. U mnie akurat padła dioda
nie ma znaczenia gdzie? , wystarczy tylko zdefiniować port? To po co w notach katalogowych porty c4 i c5 są opisane dla i2c? Użuwasz Arduino, Bascoma? Jak już ci kolega napisał, masz wtedy obsługę programową - dłuższy, mniej optymalny kod, brak wsparcia hardwarowego, czyli najpewniej nie jest zaimplementowana pełna funkcjonalność I2C (zwykle nie przeszkadza),...
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
$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
Tak sobie pozwolę strzelić: 1. nie zapisujesz projektu przed kompilacją lub 2. nie kompilujesz projektu w ogóle :)
Nie działa tylko PORTA? Jeśli tylko PORTA, to podłącz AVCC do reszty zasilania.
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...
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...
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_...
(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.
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ć...
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...
BTW, zainstaluj sobie jakieś normalne IDE, np. Atmel Studio, bo programmer's notepad, szczególnie dla osoby początkującej to raczej porażka.
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...
Za mało kodu, ale proponuję usunąć wszystkie _delay_ms() i wstawić jedno, bezpośrednio przed return. O ile w ogóle jest potrzebne.
Takich nakładek do AVRDude jest sporo, np. ta ma taką opcję: https://blog.zakkemble.net/avrdudess-a-g... https://obrazki.elektroda.pl/3570448700_... Opcja portable działa po rozpakowaniu. W Avrlab faktycznie faktycznie nie widzę takiej opcji i już jej raczej nie zobaczymy.
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]
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...
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.
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 =...
Wywaliłem wyłączanie tych 3 pinów przed pętlę. Masz wyświetlacz ze wspólną anodą, stąd włączenie diody następuje w przypadku podania zera na pin wyjściowy, do którego podłączony jest dany segment. Szkoda, że nie piszesz w komentarzach do instrukcji co według Ciebie ona wykonuje. [syntax=c] PORTD &= ~(1<<PD2); //włącz diodę na pinie PD2 PORTD...
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...
Załóżmy, że to też błąd przy wklejaniu kodu (inaczej asembler zgłosiłby błąd). Powinno być R21 , a nie R121 . Być może to też błąd przy wklejaniu. Bity WGM12 , CS12 oraz CS10 nie znajdują się w rejestrze TCCR1A tylko w TCCR1B . Istotne jest jednak to, że ustawiając tylko bit WGM12 ustawiasz TIMER1 w tryb 4, czyli tryb CTC, w którym timer liczy od 0...
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.
Lepiej dodać scalaczek ( 4066) i przełączać klawiaturki, po co tracic cały port procesora. Może w niedalekiej przyszłości sprawdzę czy rzeczywiście się nie da tego zrobić na dwóch portach.Zawsze jest jakieś wyjście z sytuacji. ( wstawka asemblerowa.....) Pozdrawiam
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
Spróbuj tak:[syntax=c]#include <avr/wdt.h> void main( void ) { DDRA=0xff; PORTA=0x00; PORTA=0xff; while(1){wdt_reset();}; } [/syntax]
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...
>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ą...
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...
K_o_n_r_a_d wielki dzięki!!!:D Jak ma teraz odczytać te dane mój Atmega128? bo jeden UART już wykorzystuje do komunikacji z komputerem i ma on taką postać: $regfile = "m128def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 32 Dim A As Byte Dim Message As String * 16 Config Lcd = 16 * 2 Config Lcdpin = Pin ,...
krótko : piszesz config porta.xx a nie config pina.xx i będzie działać
Panowie, dziękuje za pomoc. Kupiłem na znanym portalu aukcyjnym na A dwa chińskie klony Arduino Nano oparte na Atmega 328PB, przełożyłem procka do mojej płytki (na której wcześniejszy procek przestał się zgłaszać po zaprogramowianiu fusebitów) i pomimo tego że nie ruszałem zupełnie nic można programować fuse bity i na internal oscylator i na zewnętrzny...
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
Podłaczenie to: Atmega128L, port PB6-rezystorek-dioda(katoda w stronę procka-zasilanko 5V int main(void) { // konfiguracja portów we/wy DDRE=0xFF; PORTE=0xFF; DDRB=1<<PB6; TCCR1A|=1<<COM1A1|1<<WGM10; TCCR1B|=1<<WGM12|1<<CS0; TIMSK=1; TCCR0=7; sei(); // inicjalizacja LCD lcd_init(); LCDclr();...
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...
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 !! Mam pytanie a nawet prośbe o pomoc jeśłi chodzi o atmege8535 i lcd. Kupiłęm sobie ostatnio tego procka zaprogramowałem go ale lcd nie dostaje odniego instrukcji. Na wyjsciach portów danych sa poziomy napięc ale stałe i sie nie zmianiaja, prosze pomózcie, co moge zrobic alby mi to zaczeło działać. Może gdzięs cos trzeba zmienić?? Dziekuje[/b]
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...
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...
[syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { /* Wszystkie linie portu D będą wyjściami */ DDRD = 0xFF; /* 0xFF binarnie 1111 1111 */ DDRC = 0xFF; DDRB = 0xFF; DDRA = 0xF0; PORTB=0x00; PORTC=0x00; PORTD=0x00; PORTA=0x00; /* Początek nieskończonej pętli */ while(1) { PORTB=0x00; PORTC=0x00;...
Witam 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...
Witam, Z racji tego ile już zrobiłem na atmegach to aż wstyd pisać taki post, ale ręce już mi opadają.... Mam układ ATmega1284p, na który przenoszę kod obsługi modbus'a RTU który już skutecznie odpaliłem na kilku innych atmegach. Ta jednak jest oporna. Drogą śledztwa doszedłem, że winny jest niedziałający timer0. Zacząłem więc go rozbierać na czynniki...
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...
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...
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]
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;...
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...
Ż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.
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,...
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.
Nie są uszkodzone, na tych liniach układy mają JTAG, który jest fabrycznie włączony. Musisz wyłączyć odpowiedni fusebit.
1. Nie definiuj zegara w kodzie tylko w opcjach kompilatora: http://mikrokontrolery.blogspot.com/2011... 2. Problem natomiast pojawia się wówczas, gdy funkcja obsługi przerwania wykonuje się długo. Docelowo będzie sterować portami przez około 16 sekund. Przerwanie ma się wykonywać krótko i tego zawsze się trzymaj, bo łatwo...
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...
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
Kod najprostszego programu na którym testuję i ustawienia fusebitów http://obrazki.elektroda.pl/9318663700_1... : [syntax=basic4gl]$regfile = "m16def.dat" $crystal = 2000000 Config Porta.4 = Output Config Porta.5 = Output Config Portd.0 = Output Led1 Alias Porta.4 Led2 Alias Porta.5 Led3 Alias Portd.0 Do Set Led1 Set Led2 Set Led3 Wait...
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...
atmega porta input blaupunkt porta porta vector
nissan primera rozrusznik obliczać obwód metoda oczko tranzystory mutujące
najlepsze czaty delonghi caffe corso
Zwarcie na kablu wentylatora Indesit – dwa plusy na przewodach, przyczyny i diagnostyka Neoplan N316 – brak kontrolek na desce, nie działają kierunkowskazy, MOKI, przekaźnik X, bezpieczniki