Witam. Z PWM nie mam zbyt wielkiego doswiadczenia aczkolwiek wydaje mi sie ze PWM nie dziala na pinach ktore sobie sam ustawisz tylko na pinach OC1A i OC1B. Mam dla ciebie program do obslugi PWM ktory miga diodami LED. $regfile = "m16def.dat" $crystal = 8000000 Config Pind.4 = Output Config Pind.5 = Output Config Timer1 = Pwm , Pwm = 8 , Compare...
Powinno być PORTD
powinno byc: #include <avr/io.h> void ustawienieportow(void) { DDRA=0x00; PORTA=0xFF; DDRD=0xFF; PORTD=0xF0; } void main(void) { ustawienieportow(); while(1) { if ((PINA&0x01)!=0x01) PORTD=0xFA; if ((PINA&0x02)!=0x02) PORTD=0xF5; } }
przykład : Config Debounce = 30 Config Portd.1 = Output 'tx do vfd Config Portd.6 = Input 'enkoder Config Portd.7 = Input Set Portd.6 Set Portd.7 Config Portd.0 = Input 'przyciski po koleji : -v , +v , +/-a , wyświetlacz Config Portd.2 = Input Config Portd.3 = Input Config Portd.4 = Input Set Portd.0 Set Portd.2 Set Portd.3 Set Portd.4
...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...
Najprościej odpalić timer i w przerwaniu wystawiać dane i przełączać segmenty przykład: ISR(TIMER1_COMPA_vect) { switch(wysw) { case 0: PORTD = 0b1111110; PORTB=cyfra[jednosci]; wysw++; break; case 1: PORTD = 0b1111101; PORTB = cyfra[dziesiatki]; wysw++; break; case 2: PORTD = 0b1111011; PORTB =...
Reset Portd.3 ustawia wejście d.3 w stan wysokiej impedancji. Z tego powodu być może wejście to nigdy nie osiąga stanu wysokiego np. zwierane przez wysoką rezystancję układu sterującego (o którym nic nie wiem). Może należy włączyć podciągane (Set Portd.3).
Kolega napisał Lcd podłączony i skonfigurowany na Portd.7, Portc.2, Portc.3, Portc.4, Portc.5, Portc.6 (takie miałem wolne). Drugi kolega napisał Mega 16 ma wyłaczony jtag? Pomyśl trochę...
Witam, zwracam się do was z wielką prośbą o sprawdzenie schematu, ponieważ ja jestem dopiero początkujący i nie chcę nie potrzebnie zniszczyć elementów. W razie wątpliwości i niejasności proszę pytać. http://obrazki.elektroda.net/63_12486903... http://obrazki.elektroda.net/23_12486907... http://obrazki.elektroda.net/45_12486908...
Wszystkie piny ustawiłem na stan wysoki komendą DDRD = 0xFF czyli 11111111 a więc wszystkie linie portu D są wyjściami ze stanem wysokim. DDRD to rejestr ustawiający kierunek działania portu wpisanie do niego jedynek ustawia piny portu jako wyjścia ale wcale nie oznacza to że będziesz miał na tych wyjściach stany wysokie. Jak chcesz mieć stany wysokie...
(at)MacFis: sądzę, że jest dobrze, ale kondensator 1mF jest trochę na wyrost jeśli z 5V będziesz zasilal tylko elektronikę. 47 lub 100uF sądzę, że by wystarczyło. Ja bym czujniki podłączył do portu A - bo na 18. i 19. nóżce masz wyjścia 16bitowego PWMa. A na porcie A masz przetwornik A/C, którego 2 kanały i tak Ci zostaną wolne (a nawet 4 jeśli czujniki...
No fakt, popatrzyłem na pierwsze 4 if. Można za to zrobić tak: [syntax=c]PORTC = PORTC & ~0xf3 | zmienna & 0xf0 | zmienna >> 2 & 0x3; PORTD = PORTD & ~0x3f | zmienna << 6;[/syntax]
if(!(PINA & 0x04)) PORTD |= (1<<4); else PORTD &= ~(1<<4);
No to wyrzuć zmienną S na wyświetlacz, bo ona zapewne nie będzie wynosić 30 przy temperaturze 30. Ale to tak dla pewności. Do zmiennej T nie możesz się odnieść, bo jest rozdzielona przecinkiem, a właściwie to zapewne dlatego, że jest zmienną string. Ale Twój program nie działa z prostszego powodu. Piny pojedyńczo konfiguruje się używając "config pind.7"...
Przecież ten program działa. Może wymuszasz zbocze na PORTD zamiast na PIND albo na złym pinie.
Zmieniłem program na ATmega8 ( bo ATmega16 nie posiadam ) [syntax=basic4gl] '$regfile = "m16def.dat" $regfile = "m8def.DAT" $crystal = 8000000 Config Pind.7 = Input Config Pinc.0 = Output Set Portc.0 Set Portd.7 Do If Pind.7 = 0 Then Portc.0 = 0 Else Portc.0 = 1 End If Loop End [/syntax] wgrałem, program działa dobrze. Bascom DEMO 2.0.7.1
Witam Koledzy jak napisać obsługę wyświetlacza 2x8 w trybie 8 bitowym? PortC w mikroprocesorze ATMEGA16 jest podłączony do wyświetlacza, PORTD,6 jako RS a PORTD,7 jako E. RW zwarte do masy. Chodzi mi o napisanie inicjacji, i wyświetleniu jakiegoś znaku w języku C. Sam już się męczę z tym 3 dzień. Niby po uruchomieniu się wyświetlacza powstaje u góry...
"Db6 = Portd.4 , Db7 = Portd.4" A co to jest w Twoim kodzie?
'///////////////////////////////////////... '// Police Alarm With ATmega8 (Use 4%) // '// Compiler: Bascom 1.11.9.0 // '// Programmer: Behnam zakizadeh // '// Web: www.avr64.com // '// Email: Behnamzaki(at)hotmail.com // '///////////////////////////////////////...
Są różne schematy i pewnie różne kody co stwarza zamieszanie. Połączenia na stronie skąd pochodzi kod są ok. Napisałem " No to jeśli PORTA to i DDRA.(wczoraj jakby było inaczej) " odnośnie : "Analogicznie musiałem zmienić w kodzie tylko porty PORTC na PORTD i DDRC na DDRA."
Zakładam że kompilujesz w takim GCC jak ja. Spróbuj tego: #include <avr/io.h> //#include <stdio.h> niepotrzebne, bez tego też działa #include <avr/interrupt.h> //#include <avr/signal.h> tej biblioteki się nie stosuje - patrz gcc-libc ISR(TIMER0_OVF_vect) //po co tam miałeś INT0_vect? { PORTD ^= 0xFF; //będziemy mieli...
Z racji tego, że raczkuję w BASCOM potrzebował bym podpowiedzi od was jak zabrać się za funkcję która ma za zadanie: - zliczać impulsy z portu (INT0)PORTD.2 i przeliczać je na obroty (1 impuls = 1 obrót) - na wyświetlaczu LCD ustawiać za pomocą przycisku wartość obrotów przy których zapali się dioda LED (wartość ustawiana byłaby poprzez przytrzymanie...
Czyli przykładowo tak?: if (strcmp_P(buffer, PSTR("komenda1")) == 0) { PORTD|= (1<<PORTD6); //przypisanie "1" na portD6 } else if (strcmp_P(buffer, PSTR("komenda2")) == 0) { PORTD&= ~(1<<PORTD6); //przypisanie "0" na...
Sprawdz to: $crystal = 1000000 Config Pind.7 = Output Do Reset Portd.7 Wait 1 Set Portd.7 Wait 1 Loop End Pozdrawiam
Zrób to inaczej - pin, który ma odpowiadać za generowanie przerwania zdefiniuj jako wejście z podciągnięciem do VCC czyli: DDRD &= ~(_BV(2)); PORTD |= _BV(2); wywołasz przerwanie zwierając pin do masy.
Jak nie wierzysz to wrzuć w symulator i zobacz. Po za tym ja dałem ci przykład a nie gotowiec :!: $sim Dim X As Byte Config Pind.7 = Input Set Portd.7 Config Pind.6 = Input Set Portd.6 Dim Flaga As Bit Flaga = 0 X = 0 Do Debounce Pind.7 , 0 , Up , Sub Debounce Pind.6 , 0 , Dw , Sub Locate 1 , 1 Lcd X Loop Up: If Flaga = 0 Then 'to znaczy że x=0...
Witaj. Delphi nie znam, wiem że jest to program bardzo podobny do VB. Ma wiećej możliwości oczywiście, myślę że jednak nie o to chodzi. DO RZECZY Chodzi Ci o to by np. po naciśnięciu przycisku program wysłał kod (jaki to teraz nie ma znaczenia) , a BasCom ma go odebrać. Poczym uC ma wykonać określoną czynność. Jeśli chodzi co o to ?? , sprawa jest prosta....
Witam Mam problm z wyświetlaczem LCD. Pisze nstp program i wyswietlacz jest martwy:( Uzywam Atmega16 Config Lcdmode = Port Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portb.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.3 , Rs = Portd.0 cls Lcd "Bla bla bla Lowerline Lcd "bla bla end Czy popelniam jakis blad ?
Kod jest poniżej, a co watchdoga to nie za bardzo wiem który fusbit jest od niego. Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111111 Portd = &B1110111 Do Portd.0 = 0 Waitms 1000 Portd.0 = 1 Waitms 1000 Loop End
Co rozumiesz przez pojecie "nie od tej strony co trzeba"? używajac funkcji define przypisywałem wartość do np. wyjscia typu: #define PORTD 0xff; ale do czego jest to PORTD2? i po co ta 2?
Witam Mam problem z prawidłowym wygenerowaniem nośnej 36kHz dla diody IR. Otóż mam taki prościutki programik który powinien taką nośną generować: $regfile = "M16def.dat" Pwm1a = 55 Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1 ale tego nie robi. Na wyjściu OC1A (portd.5) nie występuje żaden przebieg, dlaczego?
Witam. Niedawno kupiłem sobie ATMegę 16, płytkę i inne dodatki do tego. Dopiero chcę zacząć przygodę z mikrokontrolerami a tu już w powitalnym układzie niemiła niespodzianka. Na wyjściu PD6 i PD5 (mierząc woltomierzem) naprzemiennie pojawia mi się stan wysoki (5V) i niski. Mam pod te wyjścia podłączone dwie diody z rezystorami 1k. Mimo wszystko diody...
Co zrobi pulsein/pulseout jeśli czas mierzony wyniesie np 10sekund? Pozdrawiam Po czterech poprawkach warunkowo dopuszczam formę powyższego cytatu. Następnym razem proszę cytować poprawnie wraz z nickiem autora. PULSEOUT nic nie liczy, to polecenie generuje przebieg, przykład migawka diody połączonej do portD.1 [syntax=basic4gl]Do PULSEOUT portD, 1,...
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...
Obydwie diody powinny zaświecić się, gdy trzymasz przycisk, jak puścisz mają zgasnąć. Napisałem teraz ten kod sprawdź czy jest dobry. #include <avr/io.h> #define klawiszD DDRD #define klawiszP PORTD #define klawiszI PIND #define sw1 PD3 //zapalanie diod #define LED_1PD4 #define LED_2PD5 int main (void) { DDRD |= (1<<LED_1)...
dziwne ze nikt nie napisał dlaczego nie przechodzi do podprogramu :/ Otóż jest to częsty błąd jak sterujesz to podajesz Portd.6 = 1 ale jak czytasz to Pind.6 = 0 :)
Więc tak, kod w bascomie wygląda następująco: $regfile = "m8def.dat" 'tu oczywiście w zależności czy 8 czy 16 $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2 Do Cls Waitms 100 Lcd "napis" Waitms 100 Loop End Pisałem że banalny...
Niestety nie mam schematu urządzenia - robiłem płytkę "z głowy". Na płytce procesor atmega16 do portu a podłączona klawiatura 4x4, portc oraz portd7 wyjścia, portd - LCD, portb programowanie + 1wire. Na płytce jeszcze układ stabilizujący napięcie, wyprowadzenia ledów (równolegle z wyjściami) i kwarc 8mhz plus kond. 22 . A układ wykonawczy zrobiony na...
Nie do końca rozumiem, to ma się odbyć też przy pomocy funkcji „getkbd”??? bo jak na PD4-7 ma być stan niski to musi być wyskoki Czy może coś takiego: config portd = &b00000000 portd = &b00000000 if pind.0 = 0 and pind.4=1 path wykonywanie 0 end if
Proszę bardzo, masz tu program który obsługuje impulsator. Cha Alias Pind.2 Chb Alias Pind.5 Config Cha = Input 'wej.kanał A encodera INT0 procesora Config Chb = Input 'wej.kanał B encodera Config Pind.4 = Output 'wyjście + Config Pind.3 = Output 'wyjście - Config Pind.6 = Output 'sygnalizator impulsów LED Config Int0 = Falling Const Debouncetime =...
Wyświetlacz LCD możesz podłączyć do dowolnych portów tylko w programie umieść: Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portd.6 Pozdrawiam, Konrad
Kompilator domyślnie nie inicjalizuje zmiennych lokalnych które zadeklarujesz w funkcyjkach właśnie inicjalizujesz niezainicjalizowaną wcześniej zmienną , za to dostaniesz warninga, że zainicjalizowałeś i nic więcej z tą zmienną nie robisz... Zamień tą linijkę na [syntax=C] PORTD=zmienna; [/syntax] i podziwiaj wrzaski kompilatora ;]
Zacznij może od "posprzątania" Config Portb = &B11111111 Portb = &B00000000 ' Ustawione stany na 0 Config Portd = &B1111111 'siedem bitów ustawionych- a ósmy? Portb = &B11111111 ' a teraz po ustawieniu kierunku PORTD ponownie ' ustawiamy stan portb- ale na 1- a portd nie ustawiony Config Porta = &B11111111 Porta = &B11111111 I tu też coś dziwnego: Case...
...OK dorzuciłem komendę Initlcd zaraz po config i dalej to samo :( Ponieważ w bibliotece lcd4.lbx , podłączenie wyświetlacza jest zdeterminowane w samym kodzie , to Twoje podłączenia są niezgodne z lcd4.lbx. Masz 2 wyjścia: 1)Usuń w kodzie linię $lib "lcd4.lbx" 2)Zmień połączenie LCD na takie , jakie są opisane w tej bibliotece , czyli : ;Rs = PortD.0...
DDRD = 0x00; PORTD = 0xFF; if(!(PIND & 0x20)) { _delay_ms(20); ... while(!(PIND & 0x20)) {} } Czy dobrze obsługuje uSwitch na pinie PD6 w Atmega16, bo mam problemy?
Hm, a jak sobie zrobić samemu tego PWM'a? Skoro na nożkę mogę dać 1 lub 0. w najprostszej postaci, można chociażby tak: while(1){ PORTD |= (1 << DIODA); _delay_ms(30); PORTD &= ~(1 << DIODA); _delay_ms(80); } opóźnienia przypadkowe
Witam ! Wgraj ten kod: $regfile = "m16def.DAT" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.2 , Rs = Portb.0 Cls Lcd "cos tam" End Pozdrawiam. Stefan
witam nie wiem jak wysłać coś na RS napisałem program wysyłający "123" i bascomowy terminal nie widzi nic a seriarwotcher odbiera tylko śmieci uruchamiałem przykłady z funkcją print (dostosowywałem $regfile,$crystal,$baud ) i nic nie działa czy bascomowe przykłady nie działają ????? ( kabelek ok po zwarciu echo jest ) $regfile = "m16def.dat" $crystal...
Chciałem to jakoś zrobić na zasadzie, jeśli dioda ostatnia (tam pierwsza to PORTD.0, skolei ostatnia to PORTD.7), to ma zmienić kierunek. Niestety jest to nie możliwe, bo procesor nie sprawdza stanu Nie sprawdza stanu :?:
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ę...
Niestety dałem też przycisk na PB0 i nie działa dalej. Wiem, że diody z PORTD odrazu się palą, ale o to też mi chodzi. Jeżeli by zgasły oznaczało by to, że licznik zwiększa swoją wartość. Podejrzewam, że chodzi o błędy w kodzie?
Witam ma kod do obsługi LCD 1x16 z strony : http://radzio.dxp.pl/hd44780/hd44780_avr... Kod użyty razem z Atmega16 z kwarcem 14.745600Mhz konfiguracja LCD : #define LCD_RS_DIR DDRD #define LCD_RS_PORT PORTD #define LCD_RS (1 << PD7) #define LCD_E_DIR DDRC #define LCD_E_PORT PORTC #define LCD_E (1 << PC2) #define...
"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...
1. INT0 i INT1 muszą być skonfigurowane jako wejścia (DDRD). Nie znam schematu, ale można też podciągnąć je wewnętrznie do plusa (PORTD). 2. Testowanie w takim układzie należy wykonać ściągając wejście do masy, bo taki sygnał jest na wyjściu detektorów TFMS przy odbiorze paczki impulsów.
To jak skonfigurować PWM na Timer0 lub Timer2?? Może takie coś? : $regfile = "m16def.dat" 'Deklaracja rodzaju procesora Ddrd = B00110000 'Porty pełniące funkcję Timera powinny być skonfigurowane jako wyścia Tccr1a = &HA3 'Phase correct PWM mode ,PWM = 10 bit Tccr1b = &H5 'Prescale 1024 Do Pwm1a = Pwm1a + 1 'Ten program powoduje cykliczną zmianę...
Witam, Opiszę może krótko sytuację: mam atmega16, na timer1 mam ustawiony tryb pracy pwm, używam kilku pinów na PORTD i PORTA do sterowania mostkamiH. Potrzebuję odmierzanie czasu 10ms i chciałem to zrealizować przy pomocy przepełnienie od timera0 lub timera2. Niestety kiedy chcę obsługiwać przerwanie od przepełnienia T0 lub T2, to całkowicie psuje...
Witam. Potrzebowałem sterowania silnikiem bezszczotkowym, a dokładniej jego regulatorem. Zbudowałem prosty sterownik na Atmega16. Programowo pwm mam podpięty pod PORTD.0 i wewnętrzny zegar na 1Mhz ( nie wiem jak to się zmienia, po kupie nic nie ruszałem). Potrzebuję program który z częstotliwością 50Hz po włączeniu zasilania przez 3 sekundy będzie generował...
[syntax=c]int main(void) { /* Wszystkie linie portu D beda wyjsciami */ DDRD = 0b11111111; /* 0xFF binarnie 1111 1111 */ /* Poczatek nieskonczonej petli */ while(1) { PORTD = 0b10101010; /* 0xaa binarnie 1010 1010 */ /* opóznienie 0.33 sek. */ _delay_ms(330); PORTD = 0b01010101; /* 0x55 binarnie 0101 0101 */ /* opóznienie 0.33 sek. */ _delay_ms(330);...
Witam W prockach dopiero raczkuje. Robię obrotomierz do samochodu (choć można zastosować to wszedzie). Oparłem to na atmega16 bo taki akurat teraz mam, ale docelowo ma byc na 2312.Na razie jest wszystko w fazie testowej na biurku, ale założenia są takie: na kole zamachowym umieszczam siakiś czujnik, podaje to na układ formowania impulsu, z którego będę...
spróbuj tak: $regfile = "m16def.dat" $crystal = 1000000 Config Portd = Output Portd = &B0000000 'config pind.7 = input 'przycisk alias pord.7 'dim as a=byte 'set przycisk 'Do 'if przycisk=0 then 'do 'loop until przycisk=1 'a=a+1 'end if 'if a=1 a=2 a=3 then Waitms 2000 Toggle Portd.5 Waitms 2000 Toggle Portd.5 Waitms 1500 Toggle Portd.5 Waitms...
Moja duża wina i niedopatrzenie. Rzeczywiście oprócz GIMSK miałem również Makefile ustawionego na ATmega8. Poniżej wklejam prosty działający kod na obsługę przerwań w Atmega16. #include <avr/io.h> #include <avr/interrupt.h> ISR(INT0_vect){ PORTA = 0xFF; } ISR(INT1_vect){ PORTA = 0x00; } void init(void){...
Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 , Rs = Portc.2 ktore miejsca dokladnie zmienic w programie,nie moge sie wszystkich pinow doczytac niestety :(
[syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #define D7 7 //dioda podłączone do pinów portu D unsigned int counter=10110; int main(void) { DDRD = (1 << D7); PORTD=(1 << D7); // tutaj sobie zaświecasz diodę, ale do pojedynczych bitów to używaj "|=" zamiast samego...
witam, Na początku zaznacze,że metody które znalazłem na elektrodzie nie pomogły(może źle napisałem kod programu??). Chcę zwiększać jednym przyciskiem dwukrotnie prędkość pulsowania diodek.Problem tkwi w tym ze raz diodki przyspieszaja raz zwalniaja a raz nic nie robia. Procedura w celu eliminacji drgania stykow wyglada nastepujaco: 1.sprawdz czy S=0;...
Witam, Proponuje takie rozwiązanie: int main( void ) { PORTB |= (1 << PB0); //wewnetrzny rezystor podciagajacy na T0 DDRD = 0xFF; PORTD = 0xFF; //wygaszenie diod TCNT0 = 0x00; TCCR0 = ((1 << CS01) | (1 << CS02)); while(1) { PORTD = ~TCNT0; } } Powinno wszystko działać...
Jak w temacie zastanawia mnie napięcie na pinach procesora Atmega16. Po zaprogramowaniu następującym kodem: '$regfile = "m16def.dat" '$crystal = 4000000 Config Porta = &B11111111 Porta = &B11111111 Config Portb = &B11111111 Portb = &B11111111 Config Portc = &B11111111 Portc = &B11111111 Config Portd = &B11111111 Portd = &B11111111 Do Porta...
Witam...podaje napisany kod KOD #include <avr/io.h> #include<util/delay.h> int main(void) { DDRD = 0xFF; while(1) { _delay_ms(550); PORTD= 0xFF; _delay_ms(550); PORTD= 0x00; } return 0; } Sprawa wyglada nastepujaca...jak nalezy skonfigurowac uC a dokladnie Fusse bit?? POsiadam Atmega16...
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...
Witam jeśli pisze w niewłaściwym dziale to przepraszam. Mój problem polega na tym ze na wyjściach atmega16 są dziwne stany (czy jest spalona czy o co chodzi) mianowicie zadaje programem coś takiego a na wyjściach mam tak: PC.0- działa dobrze według programu PC.1- działa dobrze według programu PC.2- jakieś 2V PC.3- jakieś 2V PC.4- nic PC.5- nic PC.6-...
Jako młody wiedzą i stary wiekiem chciałem potwierdzić formę zapisu konfiguracji portów PWM w Bascomie .W wersji 1.11.7.4 " config timer ...prescale =1" musi być wpisane w jednej linijce inaczej się nie da. ATmega8 bardzo dobrze sobie poradził z tym przebiegiem. Korzystając z okazji znawców tematu zadam pytanie nad którym spędziłem trochę czasu: wjaki...
Zip już lepszy :) Masz źle zdefiniowany port dla linii sterujących w nagłówku biblioteki. Skoro linie sterujące przeniosłeś teraz na port D to popraw: #define LDP PORTD//define MCU port connected to LCD data pins #define LCP PORTD// bylo PORB!!! #define LDDR DDRD//define MCU direction register for port connected to LCD data pins #define LCDR DDRD//bylo...
układ narazie jest zmontowany na płytce uniwersalnej, nie mam do niego schematu. Zaczne go robic na gotowo jak juz dopracuje całość. Napisałem że procesor działa prawidłowo, zakłócenia jak odpalanie, gaszenie auta, dmuchawa itp nie powoduja zachwiania działania tylko jedynie włączenie lamp xenonowych... co mnie bardzo dziwi gdzyz pobierają mniej pradu...
Dobry wieczór, krótko : - program z wykorzystaniem ATmega16L + hc-sr04(ultradźwiękowy czujnik odległości) - mam problem z wyświetlaniem znaków bo powinno pisać : CIRCUIT DIGEST/DISTANCE=[i tu odleglosc w cm] - jest napisane CKSCWKT DKGGST/DKSTCOCG?33CM - na schemacie jest ATmega32 ja mam ATmega16 - http://circuitdigest.com/fullimage?i=cir...
$regfile = "m16def.dat" $crystal = 16000000 Config Portd = Output Portd = &B01111111 Config Timer1 = Timer , Prescale = 1024 On Timer1 Sekunda Enable Interrupts Enable Timer1 Load Timer1 = 15625 Do Loop End Sekunda: Load Timer1 = 15625 Rotate Portd , Left Return i drugi $regfile = "m16def.dat" $crystal = 16000000 Config Portd...
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...
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...
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...
[syntax=c] DDRC = 0xFC; //klawiatura PORTC = 0xFF; [/syntax] Wg. schematu przyciski masz na PORTB. Zrób eliminację drgań styków (sprawdzenie stanu, jeżeli niski poczekaj 20ms, jeżeli dalej niski - wykonaj) A na początek w pętli zrób załączanie i wyłączanie silnika bez obsługi przycisków [syntax=c] while(1) { OCR1A =0x100; _delay_ms(2000); OCR1A =0x00;...
Mam problem otóż wpisując w hyper terminalu 'n' procek tego nie wykrywa zapaleniem diody na porcie D7 połączenie jest bo jeśli zrobie tak: SIGNAL(SIG_UART_RECV) { sbi(PORTD,7); } to dioda zapala się. kwarc jest 16MHz czyli UBRR = 25(UBRRH =0x00, UBRRL =0x19) dla 38,4Kbaud #include <avr\io.h> #include <avr\interrupt.h> #include <avr\signal.h>...
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...
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ą...
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...
Chcę zrobić zęby po naciśnięciu 1switcha dioda zapalała sie z po naciśnięciu 2switcha gasła oto kod który kompiluję i wgrywam to atmegi lecz dioda po załączeniu odrazu świeci a nie jak program kaze powinna nie swiecić dopiero po naciśnięciu switcha, dla czego tak się dzieję? $regfile = "m16def.dat" 'najpierw określamy typ proca $crystal =...
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ł...
Dzieki za pomoc :) udało mi sie wyszperać co trzeba i załadować bootloader, ale coś nie pyklo, postanowiłem spróbować czegoś innego, BASCOM'a.. co Ciekawe bascom-avr wykrywa mi układ jako ATMEGA16A co jest dla mnie trochę dziwne mimo ustawienia na "16" (może coś nie tak?) prubuje uruchomic wyswietlacz LCD i mimo sprawdzenia schematu (tak samo podlaczalem...
Przy kompilacji kodu na atmega8 wychodzą mi błędy;ADC_MUX entry not found in dat file. Ten sam kod działa na atmega16 oczywiście po zmianie wyprowadzeń. $regfile = "m8def.dat" $crystal = 8000000 Config Lcdpin = Pin , Rs = Portd.2 , E = Portd.3 , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.0 Config Lcd = 16 * 2 Cls Cursor Off...
Witam. Walcze z tematem drugi dzień, starałem się znaleźć odpowiedź na pytanie, jednak nigdzie nie znalazłem zbliżonego problemu. Atmega16, LCD 4x20 YM-2004a (wg sprzedawcy zgodny z hd44780), programator (i zasilanie całego układu ) USB, kwarc wsadzony w programator ma napis u góry 8.000 - domyślam się że jest to 8MHz. LCD podłączony pod port D, z portu...
Błąd tu: #define LED_ON DDRD |= _BV(1);PORTD &= _BV(1) #define LED_OFF DDRD |= _BV(1);PORTD |= _BV(1) moim skromnym powinno to być tak: #define LED_ON DDRD |= _BV(1);PORTD &= ~_BV(1) #define LED_OFF DDRD |= _BV(1);PORTD |= _BV(1) W zasadzie to dioda powinna się zapalać na stałe. Dodano...
Po podłączeniu LEDów do portu D zamiast wyświetlacza mam coś takiego : LED0 czyli RS nie świeci LED1 - E - świeci stale LED2 - DB4 miga z częstotliwością 1Hz LED3 - DB5 świeci stale LED4 - DB6 miga tak samo jak LED2 LED5 - DB7 świeci stale Przy resecie procesora LED0 też mignie. Napisałem prosty program PORTD = PINB;i działa. Edit : Pojawił się przełom....
siema, napisalem probny progamik zeby nauczyc sie wprowadzac procka w rozne stany uspienia,..., chyba cos mi sie nie wlacza ten POWER DOWN, prosze o podpowiedzi. Nie masz przerwania INT0 , bo go nie włączyłeś.Pondto , "nasadziłeś" w kodzie takich "kwiatków" , że głowa mała ;) GIFR=0x00; // co chcesz osiągnąć wpisując 0x00 do GIFR ??? tryb=++tryb; //...
Chcę wysterować silnik krokowy 6 przewodowy. Jest to niewielki silnik o napięciu 3,5V i prądzie 0,95A. Sterowanie robię poprzez Atmega16, a następnie układ ULN2803. Schemat wziąłem ze strony: http://robotika.yweb.sk/skola/Krokove%20... chociaż jest wiele podobnych schematów. Oczywiście...
Oki... a teraz cd Zaczynam się wkręcać w AVR i mam pytanie: SREG|=0x80; GICR|=0x40; GIFR|=0x40; Czy po tych istrukcjach nastapi uaktywnienie przerwania od int0 podciagnietego do vcc, za pomoca rezystoa?? Jak zrobic podciagniecie softwerowe, zeby nie wywolac przerwania?? (pierw podciagniecie PORTD|=0x04 ??) Dlaczego przerwanie na makiecie zadzialalo...
Może prościej będzie jeżeli zamieścisz schemat, niż żebyśmy Ci mówili gdzie szukać błędu. Z tego co wiem Bascom jeżeli chodzi o LCD jest banalny i niezawodny. Więc może o ile jesteś pewien co do połączeń i programu, to jednak nie do końca są to sprawne wyświetlacze. Niedawno sam miałem problemy z LCD ale w C. Pod Bascomem mi śmigał. Zamieszczam "program"...
Cały psikus polega na tym że AVR-y nie mają pull-down ale mają za to pull up. Podłącz więc twój przycisk z jednej strony do uc na porcie B a z drugiej do masy. Twój program po tej modyfikacji powinien wyglądać tak: $regfile = "m16def.dat" $crystal = 1000000 Config Portb = Input Portb = &B00000001 Config Portd = Output Portd = &B00000000 Do...
Myślłem, że tak może być, ale przy każdym wyjściu z przerwania przywracany jest stan Input na INT0. Błąd w sofcie jest jak najbardziej możliwy, ewentualnie w jakichś ustawieniach procesora. Dziwne jest jednak to, że to się nie trafia na każdym procesorze. Obsługa przerwania to raptem tyle co poniżej, w Bascomie. Linia: Set Portd.3 'to jest drugi pin...
Zbudowałem sobie taki oto układ termometru i zegara oparty na atmega16 i wyświetlaczu lcd. I wszystko działa jak należy ale nie do końca. Temperatura wyświetlana na lcd strasznie skacze po różnych wartościach w przeciągu paru sekund tzn. jak np. w pokoju jest 20 stopni to on wskazuje raz właśnie te 20 raz 19 czasami 21 albo 14 15 czy 16 stopni celcjusza....
Powiem odrazu że moje doświadczenie z elektroniką jest raczej marne. Tworzę właśnie sterownik do lampki. Ma on przyciemniać i rozjaśniać światło. Problem zaczął się gdy przyciski (reseciki) podpiąłem do portu D Zaprogramowałem wszystko następująco: Config Portc = &B10001000 Config Portd = &B01110000 Portc = &B11111111 Portd = &B11001111 Portc.3 = 0...
Nie nic nie zmienialem - moze atmel walniety? $regfile = "m16def.dat" $crystal = 1000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B11111111 Portd = &B11111111 Config Portc = &B11111111 Portc = &B11111111 Config Porta = &B11111111 Porta = &B11111111 Config Rc5 = Pind.6 Dim Address As Byte , Command As Byte Declare Sub N...
Podejrzewam, że błąd będzie gdzieś w samym schemacie/płytce, ponieważ przed chwilą złożyłem na stykówce na szybko układ: - Atmega8 - 1x DS18B20 - dioda led i wrzuciłem w niego program: Dodano po 3 Problem z wykrywaniem czujnika rozwiązany. Powodem całego kłopotu okazało się jedno ze złączy (przy magistrali 1Wire), które było uszkodzone i nie stykało....
Witam Koledzy mam taki "program" który zapala i gasi diodę led w odstępach około 1sekundowych: Do Set Porta.3 Wait 1 Reset Porta.3 Wait 1 loop end I taki programik działa jak należy ale dlaczego po dodaniu przerwania od timera0 które zmienia stan portu z określoną częstotliwością polecenie wait 1 trwa ponad minutę? Mam taki program: $crystal = 4000000...
atmega portd portd atmega88 portd atmega8
zwiększenie przyłącza gramofon technics cicho podswietlanie wyswietlacza
piekarnik parowy piekarnik parowy
Pomylenie biegunów akumulatora w Renault Espace 4 Pikający sygnał w radiu Peugeot 407 kombi