TDA2593: Odpowiedź na nurtujące Cię pytania znajdziesz w każdym podręczniku do języka C. if (!PORTD) to po prostu krótsza forma zapisu if (PORTD == 0) Wojciech: PORTD =(0<<PDx) To dokładnie to samo, co PORTD = 0 << 1000; i to samo co PORTD = 0;
Witaj. Po tym programie oczekiwałem, że po podegraniu wszystkie diody będą zgaszone, a dopiero gdy wcisnę przycisk, jedna z nich się zapali. Okazuje się, że dioda świeci niezależnie od tego, co dzieje się z przyciskiem. Nie pokazałeś schematu więc będę wróżył - brak zewnętrznego rezystora pull-up podciągającego piny przycisków do Vcc. Zamiast tego możesz...
Jtag możesz wyłączyć nawet w kodzie: [syntax=vbnet]$regfile = "m32adef.dat" $crystal = 8000000 $hwstack = 64 $swstack = 32 $framesize = 32 Disable Jtag[/syntax] Do tego wszystkie aliasy przycisków powinny się odnosić do PIN a nie PORT. W niektórych masz PINA i tam jest dobrze ale niektóre masz PORTD i tam zawsze mikrokontroler będzie odczytywał 0.
Nie czaję. Drabinkę masz na PortA czy na PortD?
[syntax=vbnet]Config Portd.2 = Input[/syntax] zamiast tego, powinno być: [syntax=vbnet]Config Pind.2 = Input[/syntax]
W pętli, po Rotate raczej nie powinno już być Portd=A.
"Portd.7 sobie "miga" z jakąś tam częstotliwością. Nie za szybko. Chciałbym zliczać te impulsy" Oczywiście że możesz je liczyć, potrzebujesz tylko zmiennej pomocniczej która będzie powodowała że program skoczy tylko raz do liczenia gdy PORTX będzie w stanie wysokim lub niskim, np: Do If Portd.7 = 0 And Zmiennapomocnicza = 0 Then Gosub Plus_jeden_czas...
witam. posiadam maly probelm z polaczenieim owych układów. Nie jestem pewien jak to ma byc polaczone z atmega.Znalazlem schemat pod procesor Atmega 103 lecz sa troszke zbierznosciw projekciei oznakowaniem dancyh w specyfikacji atmela. Jak nalezy podlaczyc ATMEGE do RTL? RTL ATMEGA D0..7 <---> PORTD A0..4<---->Port B (0..5) INT<-->...
Założę się, ze nie sprawdzałeś oscyloskopem czy analizatorem logicznym jak wydjada transmisja. Gdybyś to zrobił, to nie używał byś postu B do ustawiania a D do kasowania bitu, np [syntax=c] void FT800_PD(_Bool state) { if(state) PORTB |= (1<<PB4); //Aktywuj PDN else PORTD &= ~(1<<PD); //Deaktywuj PDN } [/syntax] Definiujesz stałe [syntax=c]...
zrob cos takiego: config pind.7= input config pind.6= input set portd.7 set portd.6 i napisz jaki efekt. albo po prostu zastap te twoje Set Pind.6 Set Pind.7 tym set portd.6 set portd.7 (jak teraz nie bedzie dzialac to zmien jezyk, bo bascom denerwuje :P )
Witam kolegów mam taki problem: mimo różnych prób nie mogę ustawić na portd.0 stanu 1. Oto kod: Konfiguracja portów: [syntax=basic4gl]Config Pinb.1 = Output Config Pinb.2 = Output Config Pind.0 = Output Config Pind.1 = Output Config Pind.2 = Input Portb.1 = 0 Portb.2 = 0 Portd.1 = 0 Portd.0 = 1[/syntax] Obsługa portu: [syntax=basic4gl]If Grzalka = 1...
Ja bym na twoim miejscu najpierw zrobil tak: - napisalbym prosty program migania ledem - w AVR studio trzeba wybrac jaki sie ma procesor i jaki kwarc (lub uklad RC) - nastepnie wyslac program do procka - tez trzeba wybrac jaki to procek Jak atmega jest nowa to nie zawsze trzeba zmieniac FUSE bity zeby zaswiecic diodke - pojdzie na wewnetrznym RC ale...
Możesz, a nawet powinieneś wywalić M103C (ustawić na 1), no i/lub spróbuj skoki zastapić bliskimi ( rjmp , rcall ). Jakby co, mieszkam niedaleko ;).
Tak też można: $regfile = "m8def.dat" Config Portd.1 = Output:Config Portd.4 = Output Portd.1 = 0:Portd.4 = 1 Do Waitms 100 Toggle Portd.1:Toggle Portd.4: Loop Nie naruszasz wtedy innych końcówek portu D, które możesz wykorzystać do innych bardziej szczytnych celów. (A z końcówkami czasem jest krucho.)
Dziekuje uprzejmie Problem rozwiazany. Config PinD.2 = Input Config PinD.13 = Output Set Portd.2 Do If PinD.2 = 0 Then Portb.5 = 1 If PinD.2 = 1 Then Portb.5 = 0 loop zmylilo mnie to podciganie rezyst portd.2
Tak - jak tylko wyjaśnisz, co to znaczy "nie przerywa warunku" i pokażesz cały program, z wywołaniem show() (skądinąd fatalnie napisana i zapewne całkowicie zbędna funkcja, bo zapewne wystarczyłoby napisać PORTD = tab[dig];).
Da się: [syntax=basic4gl] Dim Czas As ... Do ... Czas = ... Gosub Silnik ... Loop End Silnik: Portd = &B00000001 : Waitms Czas Portd = &B00000011 : Waitms Czas Portd = &B00000010 : Waitms Czas Portd = &B00000110 : Waitms Czas Portd = &B00000100 : Waitms Czas Portd = &B00001100 : Waitms Czas Portd = &B00001000 : Waitms Czas Portd = &B00001001 : Waitms...
no to właśnie chyba to - 'Config Portd = Input 'port wejściowy Sprawdzę w domu, dzięki.
Poczytaj sobie jakiś poradnik o C, np. linkowany przez kol. dondu, bo nie robisz tego, co byś chciał, np. DDRD |= ~(1<<PD3); //Ustawienie pinu jako wejście nope, powinno być DDRD & = ~(1<<PD3);, bo swoją linijką ustawiasz jako wyjścia wszystkie inne piny, a PD3 zostawiasz nietknięte... Jako że po resecie DDRD=0, to możesz myśleć, że...
w sumie to ja nigdy tego nie urzywałem ;) wiec pewności niemam ale z tego co mi sie wydaje to powinno być tak $lib "lcd4busy.lib" Const _lcdport = Portd Const _lcdddr = Ddrd Const _lcdin = Pind Const _lcd_e = 1 Const _lcd_rw = 2 Const _lcd_rs = 3 i nic wiecej konfuguracji nie potrzeba teraz hardware LCD PIN -------- AtMega PIN _______________________...
...Wyczytałem z dokumentacji że wyjście z OC1 jest na PORTD5. Sprawa jest prosta , tylko Ty nie zrozumiałeś dokładnie dokumentacji. Opis sygnału OC1A jest "zatytułowany" : OC1A - Port D,Bit 5 Nie przypadkiem słowo Port i litera D są rozdzielone , bo chodzi tu o element architektury wewnętrznej uC czyli Port nazwany "D", oraz jego elementy na zewnątz...
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...
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...
napisz config pind.1 = input config pind.0 = input do debounce pind.0,0,klawisz1,sub debounce pind.1,0,klawisz2,sub loop klawisz1: jakas akcja1 /np set pin.c=1/ return klawisz2: jakas akcja2 /np set pin.c=0/ return A zasilanie i mase musisz podpiąć też do tych 2 pinów co pisałeś. Tylko podłącz tak jak jest w programia albo zmień porty Aha mogą...
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...
Przeczytałem to co jest wyżej napisane i... nie rozumiem co chcesz zrobić :) Co to znaczy: Potrzeba mi zapamiętać max. 4 liczby które będą następować po sobie dość szybko jednak Atmega potrafi je zdekodować bo jak dobrze się przypatrzę to liczby się zmieniają dobrze, i więc właśnie niech ktoś podpowie, co dopisać by procesor zapamiętał liczby i ustawił...
To chyba powinno wyglądać tak: $regfile = "m8def.dat" Config Portb = Output Portb = &B00000000 Config Portd = Input Portd = &B11111111 Do If Pind.5 = 0 Then Portb.4 = 1 Loop End Oczywiście można i tak, ale mi działa tak jak ja napisałem. I autor tematu musi zbudowac programator STK200/300(pod LTP) lub STK500 pod USB.
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)...
Wrzucam całość [syntax=c] //=============PROCESOR ATMEGA 8 AU=============================// #include <avr/io.h> #include <avr/eeprom.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #include "mkuart.h" // biblioteka z GB //led testowy-ustawienia// #define LED_OFF PORTD...
Nie bardzo mi się chce wnikać w przyczyny , więc wrzucę Twój zmodyfikowany kod: #include <avr/io.h> #include <avr/interrupt.h> #define PWM_out(value) OCR0 = value void delay(void){ volatile unsigned int i; for(i=5000;i;i--); } unsigned char pwm=127; int main(void) { DDRD = 0x00; PORTD = 0xFF;...
nie podciągnąłeś wejścia PD2 do plusa zasilania PORTD|=_BV(2);
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...
http://elecrom.wordpress.com/2008/02/12/... Pierwszy lepszy help o portach w AVR ci to wyjaśni. (Poczytaj o różnicach między PORT a PIN).
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.0 Fusebity sa ustawione dobrze i atmega taktuje z zewnętrznym 8 MHz. Możesz mi to skompilować i zapodac hex albo bin?
Mariuszek15 znalazłem coś takiego od lcd i jak mam to zmienić na atmega 8535 i do jakiego portu podłączyć... ??? $lib "lcd4busy.lbx" Const _lcdport = Portd Const _lcdddr = Ddrd Const _lcdin = Pind Const _lcd_e = 3 Const _lcd_rw = 2 Const _lcd_rs = 1
Witam! Ja zwykle robię od razu tak: [syntax=basic4gl]Config portd = &b00001111 Portd = &b11110000[/syntax] W ten sposób łączę konfig i ustawienie pullup . W języku BASIC nie zaleca się oddzielania instrukcji dwukropkiem, zamiast: [syntax=basic4gl]If Pg = 0 Then Kier = 0 : Gosub Ruch_key End If[/syntax] Lepiej zapisać tak: [syntax=basic4gl]If Pg = 0...
Zerknij na ten artykuł [url=http://mikrokontrolery.blogspot.com... bo np. te linie kodu (i kilka innych) nie robią tego czego się pewnie spodziewasz. [syntax=c]PORTD&=(0<<LCD_DI); PORTD&=(0<<LCD_RW); PORTB&=(0<<LCD_E); PORTB&=(0<<LCD_CS1);...
To może na początek wypadałoby zdefiniować odpowiednie piny jako wejście lub przynajmniej podciągnąć rezystory :). [syntax=basic4gl]Config Pind.6 = Input ' wejście Set Portd.6 ' podciągnij rezystor Config Pind.7 = Input Set Portd.7[/syntax]
zumek, za to punkty masz ale zrobiłem to ( pind) i o to mi chodziło zamiast portd , spoko czyta, czy to atmega 16 czy 32 i pewnie kazdy inny Dodano po 50 niewiem jak je wysłać
Po restarcie mikrokontrolera i tak wszystkie piny są wejściami, zatem ustawianie PD0 jako wejście nie jest konieczne, za to może się bardziej przydać podciągnięcie tegoż wejścia programowo do VCC [syntax=c]PORTD |= (1<<PD0);[/syntax] Poza tym zamiast pisać tak: [syntax=c]DDRD = 0xfe;//IN0 ustawiam jako wejscie EICRA = 0x3;//Przerwanie ustawione...
[syntax=vb]$regfile = "m8def.dat" $crystal = 1000000 Config Portb = Input Portb = &B11111111 ' Config Portd = Output Portd = &B00000001 Do waitms 30 If Pinb.1 = 0 And Portd.0 = 0 Then Toggle Portd.0 End If waitms 30 If Pinb.1 = 0 And Portd.0 = 1 Then Portd.0 = 0 End If[/syntax]
Kiedy piszesz Config Clock =Soft to tworzone są zmienne When you use the CONFIG CLOCK (in soft or user mode) directive the compiler will DIM the following BYTE variables automatic : _sec _min _hour _day _month _year Jeśli chcesz porównywać wartość minut..to powinieneś stworzyć jakąś zmienną przechowująca wartośc poprzedniej minuty, na przykład Old_min...
Config Pind.3 = Output A zmiana na Config Portd.3 = Output nie pomaga?
Witam, Posiadam płytkę testową EVB 4.3. Za pomocą programatora na płytce chce zaprogramować ATmege8. Wszystkie połączenia wg tej [url=http://and-tech.pl/wp-content/downl... Wszystko przebiega tak jak autor miał na myśli, niestety po wgraniu mojego krókiego kodu: [syntax=c]#include<avr/io.h>...
pod portd.5 podłączyłem, żeby było ciekawiej to jak do tego pinu podłącze sam kabel to atmega coś namiętnie zlicza chyba częstotliwość sieci ( blisko mam zasilacz)
Jedyny wymóg dla Tx to taki że pin musi być skonfigurowany jako wyjście. Jeśli w dalszej części programu nie zmieniasz go przypadkiem na wejście to musi działać. Tak się składa że mam Atmegę 162 i nie zauważyłem żadnych problemów z poprawnym działaniem obu USARTów. Zastanawia mnie samo wyjście Portu PD1 które jest w stanie niskim mimo programowego ustawienia...
Błąd jest tutaj przy konfiguracji wejść: [syntax=asm]LDI R16,0X00 OUT DDRD,R16 OUT PIND,R16[/syntax] W atmega 32 rejestr PIND jest tylko do odczytu, powinno być PORTD. Nie włączyłeś podciągania poprzez wpisanie 1 na odpowiednie pozycje PORTD.
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...
Dzięki wielkie, udało się! Program odczytuje poprawnie informacje, dodatkowo ograniczyłem bufor do 1 znaku, bo Atmega wysyła znaki jeden po drugim. Poniżej zamieszczam wszystkie kody działające, dla potomnych :) UPDATE: ----------------------------------------... No i chyba poległem z wysyłaniem, nie obejdzie się...
Proszę, gotowy przyklad rozwiązania. Napisałem przy kawie i potestowałem w symulatorku czy się nie pomyliłem gdzieś ;) [syntax=basic4gl]$regfile = "m8def.dat" '$sim 'dla symulatora Config Portd.5 = Input : Set Portd.5 : Czuj_1 Alias Pind.5 Config Portd.6 = Input : Set Portd.6 : Czuj_2 Alias Pind.6 Config Portd.7 = Input : Set Portd.7 : Czuj_3 Alias...
Dzieki ekrzychoooo! Wlasnie probuje uruchomic Twoj kod na atmedze 48. Niestety pf_mount(&fs) zwraca caly czas FR_NOT_READY. W kodzie z powyzszego RARa zmienilem tylko tyle, ze w port_init() z usi.c dodalem DDRD=0xFF; i PORTD=0x00; Atmega dziala na wewnetrznym zegarze 8MHz. Lini z SD mam podlaczone bezposrednio do SPI atmegi, zwazywszy, ze wszystko zasilam...
JTAG wyłączony w fusebitach :/ Dodano po 3 Dobra, żeby nie otwierać kolejnego wątku to spytam jeszcze w tym. Udało mi się ominąć problem, przeniesieniem przycisków na portD. Z tym ze po paru przyciśnięciach przycisków, atmega przestaje reagować na te przyciski. Dopiero odłączenie zasilania i zostawienie układu na minute, skutkuje tym, że znowu reaguje,...
Wykorzystać przerwanie zewnętrzne INT0 (portd.2). W pętli głównej jeden warunek sprawdzający flagę zmienianą pod wpływem zewnętrznego przerwania.
nie wnikam w sens... ale to by było jakoś tak : Config Pind.4 = Output reset Portd.4 Config Pind.2 = Input reset Pind.4 dim a as bit dim b as bit a=0 portd.4=a do if pind.2=1 then <-- sprawdza czy jest nacisniete waitms 100 if pind.2=1 then <-- jeszcze raz sprawdza b=not a <-- zmienia stan zmiennej przypisywanej do wyjscie przekaznikowego na...
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 teraz mam dobrze? $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 Pinc.5 = output Cursor Off Cls Lcd " Witaj " ; Lowerline Wait 2 Lcd "Sterownik by Kark" Wait 5 Cls Odczyt_1czujnik:...
e marcus to jest tak jest cała linia 8-bitowa na której lecą non stop jakieś dane do różnych układów, są też dodatkowe 4 linie sterujące na której lecą tylko impulsy "0" i wtedy właśnie lecą właściwe dane które chcę odczytać AVR'em. W sumie z tych 4-linii sterujących na jednej lecą impulsy "0" 128-raz y które wywołują Czy masz jakiś powód aby tą 8-bitową...
Cześć, Napisałem prosty program LineFollowera w AtmelStudio. Atmega 328p polaczona jest ze sterownikiem silnikow l293d. Połączenia na płytce są okej, napisałem podobny program w arduino IDE i wszystko działa. W AtmelStudio też wszystko działa oprócz PWMa... Kręci się tylko prawy silnik i nie reaguje wogóle na zmiane wartości PWMa. Do atmegi nie jest...
Diodę gaś tak jak ją zapalasz. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Input Config Portb.1 = Input Config Portd.5 = Output Przycisk1 Alias Pinb.0 Dioda Alias Portd.5 Przycisk2 Alias Pinb.1 PORTB.0 = 1' to jest podciąganie do Vdd - działaj w tym celu na rejestrze 'PORTX lub PORTX.Y PORTB.1 = 1 Reset Dioda Do If Przycisk1...
Jeśli włączysz diodę to musisz ją też wyłączyć. /**************** Funkcja włączajaca port PD4 *****************/ void przycisk(uint8_t c) { if (c=='w') { PORTD |= 1<<4; } else { PORTD &= ~(1<<4); } }
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_...
Przykład z pliku Help Bascoma: " 'configure PORT D for input mode Config Portd = Input 'reading the PORT, will read the latch, that is the value 'you have written to the PORT. 'This is not the same as reading the logical values on the pins! 'When you want to know the logical state of the attached hardware, 'you MUST use the PIN register. A = Pind U...
Na stronie 16 datasheet jest opis, uproszczony przykład odczytu (żadne błędy nie są sprawdzane): [syntax=basic4gl]' przykładowa konfiguracja dla sprzętowego TWI Atmega 2561 $lib "i2c_twi.lbx" ' biblioteka obsługująca hardwarowe TWI Config Scl = Portd.0 ' konfiguracja SCL i SDA Config Sda = Portd.1 Config Twi = 100000 ' 100KHz 'Config Twi = 40000 ' 40KHz...
Tylko, że ja piszę bascomie. Ale niw wiem czy się nie muszę przestawić na inny, bo program waży powyżej 4kb. Jeżeli chodzi o program to on ma wyglądać tak? Do if pind.2 = 0,30 then portd.1 = 1 else portd.1 = 0 loop
Zmien ten fragment: \code #define OW_PORT PORTD #define OW_BIT 2 \endcode na: \code #define OW_PORT PORTD #define OW_BIT 0 \endcode bo bylo ustawione na Port D.2 - chyba, ze tam podepniesz DS'a to bedzie smigac... Pozdro! Dodano po 3 a ten plik z kad wziasc?? 1wire_lib.h To jest wlasnie ten fragment: #include <avr/io.h> #include <inttypes.h>...
Widzę, że namotałem trochę, ponieważ pomyliłem porty, przepraszam, chodziło mi o sterowanie portem D, a nie B, przepraszam .. Danych nie odbiera inteligentne urządzenie .. dołączam schemat na życzenie .. Poprawiony kod: .def chartemp =R21 .def char0 =R1 ldi chartemp, 0x55 mov char0, chartemp out PORTD, char0 LSL char0 out PORTD, char0 LSL char0 out...
Ale nadal pozostaje pytanie: Dlaczego flaga INTF1 jest ustawiona, skoro po resecie powinna być 0? Do tego momentu wejście sobie pływa i logika od wykrywania zbocz może już je rejestrować. [syntax=c]PORTD|=(1<<PD3); // podciągam do vcc[/syntax] Tutaj: [syntax=c]EICRA|=(1<<ISC11);// przerwanie na zbocze opadające EICRA&=~(1<<ISC10);//...
[syntax=basic4gl] If Alarm = 1 And Portd.0 = 0 Then Reset Alarm ' Jeśli alarm wysyła dźwięk i zostanie naciśnięty przycisk nr. 1 - wyłącz go[/syntax] powinien być Pind.0
ja właśnie steruje atmegą16 i to jest taka testowa atmega trochę przykatowana pare portów przypalonych i zmieniłem linnie danych z portub na portd i pomogło, choć czasem na 8mhz potrafi jakiegoś krzaka zrobić.
[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;...
walcze narazie z asemblerem i mam problem przy zapisie jak poniżej przy właczonej optymalizacji nie ustawia mi r16(flaga) na wartosc 0x50, dlaczego? Jak wylacze optymalizację to wpisuje. Myslalem ze optymalizacja ma optymalizowac program a nie go zmieniać register uint8_t flaga asm("r16"); ISR(TIMER1_COMPA_vect,ISR_NAKED) //ISR_NAKED...
Mam problem z uruchomieniem przerwania, kombinowałem wiele razy z różnymi ustawieniami jednak nie obserwuję zmian na porcie PD7, PWM na porcie PB3 działa (przebiegi obserwowane na oscyloskopie). Mikroprocesor to ATmega 16 taktowana z kwarcu 16 MHz. Może ktoś zerknie świeżym okiem i doradzi. #define F_CPU 16000000 #include #include #include #include...
tutaj jest cały kod: [syntax=c] #include <avr/io.h> #define F_CPU 10000000 #include <util/delay.h> int main() { int8_t i; int8_t k; int8_t m; int8_t n; unsigned char liczba_LED [10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; DDRB = 0xFF; DDRD = 0XFF; DDRC = 0xFF; for(;;) { for(i=0; i<=9; i++) { PORTC = 0xC0; _delay_ms(10);...
Możliwe że masz skonfigurowany pin z wewnętrznym podciągnięciem do Vcc - wyłącz podciągnięcie. DDRD &= 0b11111110; PORTD &= 0b11111110; Rezystor od strony masy może mieć mniejszą rez. - około 1 - 0.22MΩ, właściwie to należałoby ją wyliczyć dla prądu "ciemnego" i maksymalnego napięcia stanu niskiego na wejściu uP.
"z tym serwem są problemy" - może uszkodzone, ja mam sześć sztuk TowerPro (może nie ten model) i wszystkie działają, tylko trzeba im sygnał podać. Co do sterowania: http://mil.ufl.edu/~achamber/servoPWMfaq... Jeszcze sugestia żeby serwo i układ zasilać osobno ze wspólną masą. Kod, zaznaczam że pisany dawno i NIE PAMIĘTAM CZY DZIAŁA!! (chyba lepsze...
Uuu.. Kolego ten kod absolutnie nie nadaje się do analizy. w init_klaw piszesz, DDRD = (DDRD & 0b11111011); PORTD += (1<<PORTD2); później w init DDRD += (1<<PORTD5); DDRD += (1<<PORTD7); A teraz analizujemy: chcesz, żeby, żaden z pinów rejestru kierunkowego portu D oprócz pinu 2 nie zmienił swojej...
Udało mi się zapisać pierwszą stronę pamięci, potem modyfikowałem program i chciałem zapisać kilka stron - za każdym razem zapisywała się tylko 1 strona poprawnie aż w końcu zapisuję tylko pierwszą stronę i to błędnymi danymi. Długa noc przede mną... wrzucam w zasadzie cały testowy kod, przepraszam za bałagan bo jest w nim pełno zakomentowanych kawałków...
Zgodnie z sugestią ZbeeGin napisałem od nowa program pozbywając się większości goto, niestety dalej wychodzi na to że program w pętli głównej działa zbyt długo i nie zdąża z odczytem wartości z tabeli pomiędzy kolejnymi przerwaniami. [syntax=vbnet] $regfile = "m2560def.dat" $crystal = 16000000 '$sim Config Lcdpin = Pin , Rs = Portk.0 , E = Portk.1 ,...
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
Pierwszy przykład: dobrze. Drugi: ~0x0c=1 1 1 1 1 0 0 1? tutaj wkradł się błąd bo 11111001 = ~0x06 :). ~0x0c = 11110011. Czyli PORTD & ~0x0c = 11010001, a ( PORTD & ~0x0c ) | 1 << PD3 to poprostu zapalamy trzeci bit :) czyli: 1 1 0 1 1 0 0 1
Spróbuj tego kodu : #define F_CPU 4000000 #include <avr/io.h> #include <stdlib.h> #include <avr/io.h> #define DDR_DB4 DDRD #define PORT_DB4 PORTD #define DB4 PD3 #define DDR_DB5 DDRD #define PORT_DB5 PORTD #define DB5 PD4 #define DDR_DB6 DDRD #define PORT_DB6 PORTD #define DB6 PD5 #define DDR_DB7 DDRD #define PORT_DB7 PORTD #define...
Witam. Nie mam tego na czym obecnie przetestować, ale może spróbuj w ten sposób : $crystal = 8000000 $regfile = "m8def.dat" Config Portd.7 = Output Config Timer0 = Timer , Prescale = 64 Dim Licznik As Integer On Timer0 Timer0_int Enable Interrupts Enable Timer0 Timer0 = 6 Licznik = 0 Do Loop Timer0_int: Counter0 = Counter0 + 6 Incr Licznik...
Cały problem jest w tym żeby te dwie ATmegi się zsynchronizowały. Przerwanie od SPI występuje po zakończenia transmisji pierwszego bajtu. Zanim nastąpi obsługa przerwania to pierwszy bajt zostanie utracony. Nie mamy też gwarancji że dwie Atmegi "wystrzeliły" :) równocześnie i Slave nie czyta np. 4 bajtu nadanego przez Mastera. Jeżeli to by była np....
Generalnie w takich przypadkach nota układu twoim przyjacielem. Poczytaj to co napisałem w komentarzach. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { uint8_t i = 0; DDRD = 0xff; //TCCR2A |= (1<<WGM21)|(1<<WGM22); // źle ten tryb jest zarezerwowany TCCR2A |= (1<<WGM21) // CTC //TCCR2A |= (1<<CS20)|(1<<CS21)|(1<&l...
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...
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...
chyba mamy trop 'Odebranie jakiejkolwiek informacji z modułu GPS $regfile = "m16def.dat" $crystal = 8000000 Config Portd = Output Portd.0 = 1 Do Toggle Portd.0 Wait 1 Loop dioda świeci się 7s, gaśnie na 7s... do programatora mam wpięty kwarc 8Mhz. Czy mam rozumieć że Atmega używa wbudowanego zamiast niego? Edit: Wszystko jasne - AVRdude programował...
Bardzo chętnie zastosuję się do wskazówek,ale nie za bardzo wiem o co Ci chodzi z tym "rejestr=konfiguracja" oraz funkcjami tasiemcami. Chodzi o takie tasiemce: [syntax=c]PORTD &=~(1<<PORTD5); //podciagani do 0 PORTC |=(1<<PORTC5); // podciąganie do + PORTD |=(1<<PORTD3); // podciaganie do+ PORTD |=(1<<PORTD2); // ustawiam...
Błąd masz tego rodzaju, że przypisanie do PORTD powoduje tylko ustawienie danego pinu (jeśli bit flash.f* jest ustawiony), nie ma możliwości skasowania bitu. Musiał byś przypisania zamienić na takie: PORTD = (PORTD & ~(1 << PD3)) | (flash.f05hz << PD3); lub: if(flash.f05hz) PORTD |= (1 << PD3);...
Nie działa bo masz nie włączone podciąganie do plusa. Rejestry PIN nie służą do zapisu w tym procesorze (tylko w niektórych modelach zapis 1-dynki do nich powoduje zmianę stanu odpowiadającego bitu w rejestrze PORT). http://www.atmel.com/Images/doc2503.pdf - strona 64 Musisz dać dla każdego przycisku po instrukcji Config ... Input instrukcję Set Portd.x...
Zrobiłem jak pisał Driver, odłączyłem wejście sygnału do LM7001 i podłączyłem sterowanie nap. warikapów przez potencjometr. Przy ok.2,2V miałem f=132MHz a przy ok.7,2 f=136MHz to by było z zapasem dla odbioru i ok.11,5 f=146. Ponownie podłączyłem zgodnie ze schematem, nie zaskoczyła... Myślę że podanie częstotliwości ze skanera nie ma co sprawdzać,...
Wypróbuj ten kod: [syntax=c] #define F_CPU 16000000 #include <stdlib.h> #include <avr/io.h> #include <util/delay.h> //-------LCD------------------------ #define LCD_ADDRESS (0x7C) /* * LCD_commands */ #define LCD_CLEARDISPLAY 0x01 #define LCD_RETURNHOME 0x02 #define LCD_ENTRYMODESET 0x04 #define LCD_DISPLAYCONTROL 0x08 #define LCD_CURSORSHIFT...
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...
If pinb.1=0 then wait 5 if pinb.1=0 then Portc.0 = 0 Portc.5 = 0 Portd.1 = 0 Portd.0 = 1 end if end if
Mam podobny problem z tą właśnie Atmega i programowym PWMem. Korzystam z CTC: [syntax=c] volatile uint8_t pwm1; DDRD=0xFF; //port D jako wyjscie TCCR2A |= (1<<WGM21); //CTC OCR2A = 200; ASSR |= (0<<AS2); TIMSK2 |= (0<<OCIE2A); [/syntax] Przerwanie: [syntax=c] ISR(TIMER2_OVF_vect) { static uint8_t cnt; if(cnt>=pwm1) PORTD |= (1<<PD2);...
dzieki za program LORD_DAGOTH. Nie wiem jak to się stało, ale atmega8 mi padł...tzn mozna go zaprogramować, jednak gdy wgra sie do niego program, nie uruchamia się żadna instrukcja... testowałem to na takim programie: portd = &B01010101 rotate portd, left waitms 10 Bity portu D nie są presuwane. jutro kupie nowy uklad i bede dalej testowal :)
Trzeba uważać i czytać cały kod jeśli się go wpisuje, zwłaszcza do swojego mikrokontrolera :D Nie zauważyłeś, że ten Bootloader jest przykładowy i był użyty na takiej płycie testowej. W kodzie skonfigurowano dwie diody LED do mrugania :) I tak jak normalnie nigdy nie konfiguruję wejśc bo normalnym stanem pinu po resecie w mikrokontrolerze jest "wejscie"...
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:...
robie uklad gdzie chce wykorzystac element max6575lzut.. zapoznalem sie z dokumentacja jednakze nie otrzymuje wartosci zmierzonej.. moze wiecej szczegolow.. uklad podlaczylem do wejscia portd.2 (int0) uP atmega 8... wybralem 5us/K (przez odpowiednie polaczenie wyprowadzene ukladu max).. w programie na wstepie ustawiam port jako wyjscie i ustawiam w...
Witajcie Tak jak w temacie. Walczę z komunikacją z komputerem przez RS-232. Port COM sprawny, jak zewrę TX i RX dostaję na wejście to co wysyłam. Bezsilny zacząłem ładować przykładowe, niby działające kody w C z UARTem ale nic z tego... Atmega nie odpowiada. Czasem coś wyrzuci ale to niezgodne z tym co powinno. Dodam że wysyłając komendy by np zapalił...
portd atmega88 portd atmega8 atmega16 portd
wzmacniacz radio delta bezpiecznik klatka schodowy zwarcie wirnika klatkowego
philips d9109 mikrokomputer cobra1
Przyczyny problemów z automatycznym strojeniem tunera Czyszczenie pralki tabletkami do zmywarki - czy to bezpieczne?