Co mam poustawiać aby piny z tematu można było używać jako zwykłe wyjścia. Napisałem w bascomie taki prosty programik: Config Portd = Output Set Portd.3 Set Portd.4 Set Portd.5 Set Portd.6 Do loop I po włączeniu układu na pinach PD.1 (TxD) i PD.2 (INT0) mam cały czas 0 a na PD.3 i PD.4 mam 5 V. Jeśli natomiast usune linijki Set Portd.3 Set Portd.4 to...
źle się wyświetlają, bo są źle zdefiniowane. Jedynka od siódemki powinna różnić się jednym segmentem, a u Ciebie różni się pięcioma. Definicje 7, 8 i 9 są błędne. A poza tym - wrzuć definicje cyfr w tabicę stałych i wyżwetlaj jedną instrukcją, bez switch() PORTD = ~cyfry[i];
Nie wiesza się tylko nie zdążysz zobaczyć. ADC chodzi na tyle szybko, że instrukcje PORTD = 0xAA; PORTD = 0x55; Wykonują sie ale zaraz po nich wykonuje sie instrukcja PORTD = B2; i oko ludzkie tego nie wychwytuje
bo nie masz wygaszania diodek: if (pomiar < 250) { PORTD |= (0<<PD5);//zapalamy pd5 PORTD &= ~(1<<PD6);//gasimy pd6 } else { PORTD |= (0<<PD6);//zapalamy pd6 PORTD &= ~(1<<PD5);//gasimy pd5 } delay_ms(10); PS. czemu nie używasz biblioteki util/delay.h...
while(1) { PORTD = _BV(5); PORTD = _BV(6); PORTD = _BV(7); PORTB = _BV(0); PORTC &= ~_BV(0); } W ten sposób przez przypadek powstanie coś na wzór pwm na pinach. PortB będzie trzymał wartość, podobnie PortC, ale do PortD są 3 przypisania (nie ustawienia bitu), pierwsze przypisanie ustawi jedynkę...
Nie rozumiem po co dioda LED ukazująca stan nawiewu jest podłączona do osobnego pinu. Nie ma takiej potrzeby, a nawet jest to nie wskazane. Stan wejściowy pinu portu D, nawet kiedy w DDRD jest on ustawiony jako wyjście, można odczytać z rejestru PIND, natomiast wyjściowy z PORTD - tak, ten rejestr można również odczytywać. Nie programuję w Bascom, ale...
Może być np tak: $regfile = "m8def.dat" Config Portd = Output Portd = &B00000000 Dim D As Integer , D1 As Byte D = 0 D1 = 0 Do If D = 0 Then Portd = &B00000000 If D = 1 Then Portd = &B00000001 If D = 2 Then Portd = &B00000011 If D = 3 Then Portd = &B00000111 If D = 4 Then Portd = &B00001111 If D = 5 Then Portd = &B00011111 If D = 6 Then Portd...
Ma to być mniej-więcej tak: Config pind.5 = input set portd.5 s1 alias pind.5 do if s1 = 0 then ------------------ end if loop masz coś takiego? Bardzo ważny jest układ nazw PIND i PORTD Wyjście za przyciskiem bezpośrednio do masy. Masz tak? Jeśli nadal nie działa może być konieczne podanie schematu i wsadu. Dodano po 1 A skonfigurowałeś pin diody jako...
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...
Witam. Dla czytelności Waszych kodów... Autor tematu: michas: michas powiedział chyba wszystko, co trzeba było powiedzieć co do samego kodu i kilku zawartych w nim błędów, a ode mnie jeszcze pytanie - czy zadbałeś o filtrację zasilania Twojego uC ? Jest to wbrew pozorom bardzo ważny temat jeśli chcesz, żeby nawet takie proste miganie LEDem działało...
Po pierwsze to zobacz, wykonujesz tu aż 8 operacji odczytu dokładnie tej samej wartości - tracąc niepotrzebnie czas: [syntax=c] PORTD |= ((pgm_read_byte( &cyfry[cy1] )&(1<<7) )>>4); PORTD |= ((pgm_read_byte( &cyfry[cy1] )&(1<<6) )>>5); PORTD |= ((pgm_read_byte( &cyfry[cy1] )&(1<<5) )<<1); PORTB...
$regfile = "M8def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 32 $framesize = 32 '---------------------------------------... Dim Adc_data As Integer Dim S As Single Dim L As Long Dim Text As String * 30 '---------------------------------------... Portb = &B00000000...
Zwłaszcza że pewne inklinacje do C już posiada. Cały program w nawiasach klamrowych. Baskom nie burzył się o to? I co wniosłeś do tej dyskusji oprócz złośliwego sarkazmu??? Do autora watku: Zakładam że posiadasz Silnik jak na schemacie z 1-go postu, razen z płytką ULN połączone ze sobą wtyczką bez zmian w konfiguracji połączenia. Korzystając do pewnego...
Nie korzystałem nigdy z trybu asynchronicznego, ale właśnie w tym, że jest on asynchroniczny wydaje mi się, że leży Twój problem. W szczególności myślę tutaj o dostępie do rejestrów timera w tym trybie. Poszukaj na ten temat informacji. Może tu coś znajdziesz: http://www.atmel.com/dyn/resources/prod_... Drobna rada: [syntax=c]//zamiast...
A masz oscyloskop zeby steirdzic ze rzeczywiscie sie nic nie dzieje? Ja wrzucilem taki program do megi16 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT SIGNAL(SIG_OVERFLOW0) { PORTD=0xFF; } int main(void)...
No przedefiniuj sobie #define SCLK_RF_PORT PORTD.5 //wyjście SCLK na #define SCLK_RF_PORT PORTD //wyjście SCLK A definicje wyjść daj przykładowo: #define aa (PIND | _BV(PD2) I wtedy jeśli np w kodzie użyjesz potem SCLK_RF_PORT = aa; PORTD powinien ustawić bit 2 nie zmieniając stanu pozostałych bitów. Tylko UWAGA. Powyższy kod napisałem z...
Pisane "z palca" i nie sprawdzane: [syntax=c]unsigned int ledy[100][2]={{1,2},{3,4}... i tak dalej}; //pierwsza liczba w {} to piny portu D, druga liczba to czas opóźnienia, kolejna klamra to kolejna para liczb //100 to ilość par for(unsigned char i = 0; i<100; i++){ PORTD = ledy[i][0]; _delay_ms(ledy[i][1]); }[/syntax] Możesz także umieścić tablicę...
Proponuję: if (r >=g && r >= b) PORTD |= _BV(PD4) Analogicznie dla "g" i "b". Należy także gasić wszystkie diody przed sprawdzaniem warunków. Założyłem, że stan wysoki na porcie zapala diody. Jeśli zachodzą warunki podane przez kolegę Andrzej_S , to zapalają się te diody, które są równe pod warunkiem, że są to wartości największe.
Witam. Po pierwsze, zegar procesora definiuj w opcjach projektu, każdy tutaj na forum Ci to powie. Po drugie: spójrz na tę linijkę: [syntax=c]while(liczba_cykli=zmienna)[/s... program nigdy nie wejdzie w tą pętlę z paru powodów: liczba_cykli = 10, natomiast inicjalizacja zmiennej: zmienna = 0, co oznacza, że nigdzie nie zwiększana zmienna nigdy nie...
Dałem pętlę while(1) w main i dioda nadal nie miga. Gdze ją dodałeś? U mnie działa. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define LED_PIN (1<<PD7) #define LED_TOG PORTD ^=LED_PIN volatile int licz; int main(void) { DDRD |= LED_PIN; TCCR0 |= (1<<CS02); TIMSK |= (1<<TOIE0);...
Czy jest możliwość, aby po powrocie z przerwania na PORTC pojawiła się ostatnia wartość sprzed wywołania tegoż przerwania? O ile dobrze zrozumialem twoj problem to rozwiazanie jest proste - na poczatku przerwania zapamietaj stan PORTD w jakiejs zmiennej i odtworz go na koncu obslugi przerwania. Co do delay w przerwaniu to sie nie przejmuj tym co pisza...
Propozycja zmian $regfile = "m8def.dat" 'program jest pisany na procesor atmega8 $crystal = 8000000 'procesor będzie pracował z kwarcem bądź na wewnętrznym oscylatorze 8Mhz '---------------------------------------... Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc. 4 , Db6 = Portc.3 ,...
Nie wiem w jakim celu wyłączasz timer na czas obsługi przycisku. Procedura obsługi przerwania powinna być jak najkrótsza. Niepotrzebnie wywołujesz za każdym razem funkcję setNum(). Warto byłoby ją wyrzucić do pętli głównej i wykonywać tylko w momencie zmiany prędkości. Utwórz sobie tablicę trzech elementów, w których przechowywał będziesz kolejne cyfry....
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...
ustaw sobie przerwanie od np. TIMER2 co 10ms i sprawdzaj 4 ostatnie stany przycisku. teoria: http://mikrokontrolery.blogspot.com/2011... powyższe zaadoptowane do A8: [syntax=c] //**************definicja przycisku************** #define _Key _BV(PD7) #define Key_PIN PIND #define Key_DDR DDRD #define Key_PORTPORTD...
Witam. .............. Program testowy ma działać tak, na początku na sekundę wyświetla 36 na wyświetlaczach (i to zawsze się dzieje), później ma liczyć od 00 do 99, i tak w kółko. Pozdrawiam Zmieniłem trochę twój code. -Nie testowany.... (tylko symulator)........ [code][syntax=basic4gl] ' Example for 2 digit LCD display (Common Anode) ' Anodes are...
Jeżeli przycisk miałby podciąganie to zawsze byłby w trybie gaszenia a po wciśnięciu i zwarciu do masy 0 czyli tryb rozjaśniania tu mi już coś nie pasuje! Dodano po 20 [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 Config Pinb.1 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale =...
A więc tak. 1. ATmega8 nie posiada linii PC7. 2. Linia PC6 jest wykorzystywana jako reset. Żeby użyć jej jako linii IO należy przestawić odpowiedni fusebit. Jednak wtedy tracisz możliwość programowania ISP - wtedy pozostaje tylko programator równoległy. Być może wiesz o tym, ale skoro już piszę to warto było wspomnieć. 3. PORTC = 0xff; Ustawiając port...
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...
proponuje cos takiego: #include <avr/io.h> #include <avr/delay.h> #include "io.h" void USART_Init( unsigned int baud ) { //ustawienie portu DDRD &= 0xFE ; DDRD |= 0x02 ; PORTD |= 0x03 ; /*set baudrate*/ UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; /*enable receiver and transmitter*/ UCSRB = (1<<RXEN)|(1<<TXEN);...
Nie wiem, w jaki sposób Twój kompilator zapisuje liczby binarne, ale lepiej zmień na hex. DDRD = 0xFF; /* Początek nieskończonej pętli */ while(1) { PORTD = 0x2; _delay_ms(530); PORTD = 0; _delay_ms(530); }
Widzę że muszę trochę sprostować. 1. Nawet kosmicznie często wywoływane przerwanie zdąży się wykonać choć by nie wiem jak długo ono trwało, bo przerwania po wejściu w obsługę jakiegoś przerwania są blokowane i odblokowywane są dopiero po zakończeniu się obsługi tego przerwania. Więc twierdzenie że przerwanie nie zdąży się wykonać w ciągu 128us bo samo...
Jest parę błędów które widzę już teraz. Pozwoliłem sobie wstawić to w syntax bo nie dało się czytać :) unsigned char ilosc_imp=0; powinno zostać opatrzone jeszcze etykietką volatile. Czyli: [syntax=c] volatile unsigned char ilosc_imp=0; [/syntax] Volatile wyłącza dla tej konkretne zmiennej optymalizację. Jest to konieczne jeżeli korzystasz ze zmiennej...
Wklejam ten kod [url=http://bascom-forum.de/showthread.p... właściwego postu . [syntax=basic4gl]'----------------------... ' Dateiname : TEA5767-TP.bas ' Revision : 1.0 19.08.2012 ' Controller : AVR ATmega8 ' Autor : Thomas Palluthe (www.tp-homesoft.de)...
Ten powinien działać musisz wszystko wykonywać w odpowiedniej kolejności. A wspak to on może też czytać sensu to nie będzie miało (2 znacznie nawet objaśnienie :D )musisz zmienić na adres-1, kierunek musi być dodawany zakres adresu dla zmiany kierunku zamienione miejscami i adres musi się zaczynać na 80. A Pętla for next jest tylko po to aby wykonać...
Niech kolega sprawdzi, bo nie testowałem, ale powinno działać co 0,1°C. [syntax=basic4gl]'Regulowany termostat cyfrowy 'Projekt wykonał Krzysztof Gońka $regfile = "m8def.dat" $crystal = 1000000 Config Portb = &B11000001 Portb = &B11111111 Config Portd = &B11111111 Portd = &B11111111 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3...
$regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Pwm , Pwm = 8 , Compare B Pwm = Clear Down , Prescale = 1 Config Portb = 255 Config Portc = 255 Config Portd = 255 Portb = 0 Dim A As Byte 'Czerwony Dim B As Byte 'Zielony Dim C As Byte 'Niebieski Dim D As Byte 'Czas A = 0 B = 255 C = 255 D = 4 Zolty: Do Pwm1b = A Set Portb.4 Waitms...
Obiecałem działający programik. Działa na 100%. Jest to progrtam, który wysyła stan temperatury z DS18B20 do kompa, ale dla Ciebie najistotniejszy jest sposób komunikacji. Jest wysyłane zapytanie i uC zwraca odpowiedź. Jak uporasz się z krzaczkami, to program Ci się przyda. Można zrobić bardzo prosty protokół wymiany informacji. #include <avr/io.h>...
Ale litości. Wstaw ATTiny2313. Po co aż ATMega32? ATMega8 to by było przegięcie a co dopiero 32. $crystal = 4000000 Config Lcd = 16 * 1a Cursor Off Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Counter Dim Temp As Byte Dim R As Byte Dim Freq_compare As Word Dim Metal_type As Bit Dim Freq As Word Dim Dif As Word Dim Temp2 As Byte Dim Prescale...
Tutorial do avr taki znalazłem: http://avr.elektroda.eu/?q=node/8 Jak byś czegoś w sieci szukał, to raczej unikaj tutoriala z patron.net, uczy złych nawyków i jest nieco nie na czasie. Pomiar częstotliwośći na AVR realizuje się w miarę łatwo, przy wykorzystaniu timerów, jeden timer pracuje jako licznik impulsów z zewnątrz, a drugi odmierza czas, mozna...
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).
Witam. Chcę przedstawić szopkę Bożonarodzeniową. http://obrazki.elektroda.pl/9749389200_1... Całość wykonana własnoręcznie z pomocą kochanej żonki. Opiszę co i jak. Szopka ma ruchomy żłobek, dwie pochodnie i ognisko, na filmikach wszystko widać. Opiszę konstrukcję, do sterowania wszystkim użyłem Atmegi8. Trzy sprzętowe kanały PWM posłużyły...
http://obrazki.elektroda.pl/9389203100_1... Witam. Projekt potencjometru cyfrowego zrodził się po tym, jak analogowy potencjometr wieloobrotowy uszkodził się. Nie chciałem, aby ponownie coś takiego się stało (te potencjometry są dość drogie ;P około 30zł), więc postanowiłem wykonać coś lepszego. Założenia regulacja rezystancji od 0-100...
http://obrazki.elektroda.pl/5336859500_1... Projekt został zrealizowany na potrzeby sterowania urządzeniami zasilanymi z sieci 230V , świetnie nadaje się jako sterownik do wytrawiarki lub innych tego typu urządzeń, w których konieczne jest utrzymywanie stałej temperatury. Układ oparty jest o mikrokontroler ATmega8 firmy Atmel , który...
http://obrazki.elektroda.pl/5826537700_1... Poniższy opis prezentuje jak, krok po kroku, skonstruować prosty termometr oparty na mikrokontrolerze. Układ ten mierzy i wyświetla temperaturę powietrza. Nie jest to może najdokładniejszy termometr świata, ale jest dobrym projektem który zrealizować można w domu ucząc się jednocześnie np....
g_06 Zmieniasz z ATMEGA8 na ATMEGA8535 $regfile = "m8def.DAT" To można zostawić: $lib "lcd4busy.lbx" Const _lcdport = Portd Const _lcdddr = Ddrd Const _lcdin = Pind Const _lcd_e = 3 Const _lcd_rw = 2 Const _lcd_rs = 1 LCD tak podpinasz: DB7 = PD.7 DB6 = PD.6 DB5 = PD.5 DB4 = PD.4 E = PD.3 RW = PD.2 RS = PD.1
Witam, mam następujący problem na porcie D mam założoną klawiaturę 4x3. Używam polecenia GetKBD() programu BASECOM do odczytów naciśniętych klawiszy (oczywiście wcześniej zadeklarowałem Config Kbd = Portd ) Okazuje się, że nie mogę przeczytać linii podpiętych do PortD.0 i PortD.1 a pozostałe linie czytam dobrze. Problem nie polega na podłączeniu gdyż...
Witam. Znalazłem coś innego i po modyfikacji działa jak powinno . Przypisany jeden klawisz pod PB.2 wysyłający LewyALT + Q. Jest też zmiana u gnieździe usb D- PD.3 na PD.4. [syntax=vbnet] 'Author : Rick Richard 'www : http://www.sloservers.com/swusb 'Created : Jul 29, 2009 'Version : 1.00 '***************************************...
(at)ElektrodaBot /* Program realizujący obliczanie i wysłanie przez moduł HC-05 (Bluetooth z interfejsem SPP, czyli RS-232) wyniku funkcji kwadratowej y = 0.3187x^2 + 2x - 7 na podstawie x odebranego wcześniej także za pomocą HC-05. Szczegóły: http://mikrokontrolery.blogspot.com/...
Witam :). Mam ty prosty program do atmega8 i prosił bym o wytłumaczenie po słowie "for" co każda linijka znaczy a szczególnie co znaczy _delay_ms(1000); i PORTD &= 0xaa; int main(void) { /* Wszystkie linie portu D będą wyjściami */ DDRD = 0xFF; /* Początek nieskończonej pętli */ for(;; ) { PORTD = 0x0f; /* Ładuje do PORTD wartość...
6941560200_1426611911|2CzVFDZXUE Witam, Mam problem z obsługą przetwornika A/C. Po umieszczeniu w Atmega8 programu: [syntax=jezyk_programowania] /* * odczyt.c * * Created: 2015-03-15 17:07:13 * Author: PC */ #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> /*Co ważne, konwersja nie dokonuje się błyskawicznie, bo przetwornik...
Witam Chodzi o "rozbicie" na poszczególne (dowolne) porty : Dataport = Portd , Controlport = Portb Pozdrawiam Jacek
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Wgrywam ten kod i ciągle pali mi się 1 dioda led. Dlaczego? [syntax=c] #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> #include <math.h> #include "HD44780.c" int main(void) { DDRD = 0xFF; DDRC = 0x00; PORTC = 0x0f; while(1) if(!(PINC&(1<<PC4))) PORTD = (1<<PD0); if(!(PINC&(1<<PC2))) PORTD...
Sprawdź jaki procesor masz ustawiony w opcjach bascoma... pewnie jakiś attiny2313 i bascom kompiluje program pod ten właśnie procesor. I spróbuj zaprogramować tym: $regfile = "m8def.dat" Config Portd = Output Config Portb = Output Do Toggle Portb Toggle Portd Waitms 200 Loop : End
Ja pierniczę. A ustawiłeś typ procesora? Ustaw na ATTiny2313 albo ustaw ATMega8 i pozamieniaj wszystkie PortA na PortD na przykład. PS. Fotografia ślubna? Rispekt ;p
A może tak? [syntax=c] void USART_Transmit( unsigned char data ) { if (flaga_odebrano_znak) return; PORTD |= (1<<PD2); //kierunek - wysyłanie while ( !( UCSRA & (1<<UDRE)) ); UDR = data; while ( !( UCSRA & (1<<UDRE)) ); PORTD &= ~(1<<PD2); }[/syntax]
Wstęp Modelarstwo rakietowe to piękny sport uprawiany przez nielicznych. Jego piękno tkwi w modelach rakiet oraz wielu silników rakietowych które tworzą amatorzy tego sportu. Elektroniczne moduły zapalające silniki są nieodzownym elementem stanowiącym bezpieczeństwo tego sportu. Moja propozycja timera (spark ignition system) do silników rakietowych...
[syntax=c]int main(void) { DDRD = 0b01100000; PORTD = 0b01000000; while(1){} }[/syntax] Dioda świeci.
To coś jest nie tak, i to bardzo... Spróbuj zmodyfikować kod tak, on powinien działać... [syntax=c] DDRD = 0xFF; DDRC = 0; PORTC = 0; PORTD = 0; while(1) { PORTD = PINC; } [/syntax] A skoro napięcie spada, to może włącz pociągnięcie PORTC = 0xFF.... Jeżeli to nie pomoże, to piny atmegi mogą byś uszkodzone, podepnij czujnik pod POTRC.2, a wyjście na...
Można programowo, jeśli wiesz jak teoretycznie powinien działać ten zegar i jak sterowanie są lampy. Niewielkim problemem może być sterowanie jasnością jeśli użyjesz wyjście bez sprzętowego pwm. Na początek przepisz sobie operacje typu SIAT_P=0xfe; na bardziej dla Ciebie czytelne, możesz użyć kalkulatora. W przykładzie wpisujesz do portu P wartość 11111110,...
PORTC.1 - 1wire PORTC.0,1,2 - multiplexowanie wyświetlaczy PORTD - segmenty
Witam Jestem w trakcie robienia zagara nixie ze strony http://mirley.firlej.org/zegar_nixie Mikrokontrolerem jest Atmega8 a wkład zrobiony na Bascomie. Potrzebuję dodać opcję chwilowego wyłączenia lamp, w celu zabezpieczenia lamp przed zatruciem. Bardzo proszę o pomoc. To kod: '************* Konfiguracja uC ***************** '***************************************...
Fredy tak, portD jest 8 bitowy Jest atmega8 atom1477, rzeczywiście to jest Ostrzeżenie. I da się to skompilować Ale dlaczego pojawia się taki błąd?
Nie napisałeś nawet czym przejawia się to dziwne zachowanie uC, może program jest ok, a po prostu Ty nie wiesz czego chcesz? Kropka na wyświetlaczy świeci się, bo PB0 jest zerem logicznym, kiedy nie naciskasz przycisku, a co się stanie, gdy przytrzymasz ten przycisk dłużej? PORTB = B&11111111 - tutaj masz jeszcze literówkę. EDIT: Poza tym PORTD w Atmedze8...
To ma prawo zadziałać (dla LED o napięciu przewodzenia większym niż 2V) To jest charlieplexing. Właśnie jego idea polega na wykorzystaniu każdego przewodu do sterowania zarówno kolumn jak i wierszy, co Ty nazywasz zwarciem. [syntax=c] DDRD = Bx00000011; PORTD = Bx00000010; DDRD = Bx00010001; // I w tym miejscu jest kłopot: // zwierasz bit 4 do masy,...
nie zapomnij że można wybierać zmienną z tabeli inną zmienną np portd = kolumny(k) a nawet bity portd = kolumny(k).b gdzie k i b to zmienne typu byte Możesz więc stworzony tekst umieścić w tablicy a potem np zmieniając początkową wartość zmiennej k robić przesuwanie tekstu. Ogólnie żeby nie smużyło to tak: portb = zmienna(1) stan na 1 kolumnie czas...
[syntax=bascom] Waitms 500 Portb = &B00010010 Portc = &B00001000 Portd = &B00001000 Waitms 150 Portb = &B00000100 Portc = &B00000001 Portd = &B00010001 Waitms 150 Portb = &B00001000 Portc = &B00000100 Portd = &B00100010 Waitms 150 Portb = &B00010010 Portc = &B00001000 Portd = &B00001000[/syntax] Zmienione, nadal to samo.
daj częstotliwość na 8000000. Gdzie podłączasz diodę? btw Config Portb = Output Config Portc = Output Config Portd = Output to jest nie potrzebne
Aby sprawdzić stan wejścia czyta sie PIND, a nie PORTD.
Jak dioda ma migać to trzeba ją cyklicznie włączać i wyłączać. Ty ją tylko cyklicznie włączasz. [syntax=c]while(1) { PORTD = 0x01; _delay_ms(330); PORTD = 0x00; _delay_ms(330); } [/syntax]
Witam mam identyczny problem z moim ATmega8, mam płytkę testową ZL2AVR + programator ZL2PRG. Wgrywanie i odczytywanie programów działa bez problemu na ustawionym kwarcu zewn. czy na oscylatorze wewn. Ale wykonać jakiegokolwiek polecenia z programu nie chce (milczy) na żadnym zaprogramowanym wyjściu nie zmienia się stan, wszystko jak przy pustej pamięci....
Tak jest ok? [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main() { DDRD = (1<<PD3)|(1<<PD1)|(1<<... PORTD = (1<<PD2); PORTB = (1<<PB0); MCUCR |= (1<<ISC01) | (0<<ISC00); GICR |= (1<<INT0); sei(); while(1) { } } ISR(INT0_vect) { if(PINB & 1)...
PORTD |= (1<<CLOCK); clock? masz błąd w programie. zmień na PORTD |= (2<<CLOCK); to na 1 min sprawdzania :).
nic w nim nie kombinowałem oprócz skrócenia. Chodziło mi raczej o to że nie zmieniałem pinów wyjść, tylko usunąłem obsługę drugiego silnika. Edit: cały kod jakby komuś był potrzebny [syntax=c] #include <avr/io.h> #include <util/delay.h> /* definicje pinów sterujących */ #define WE_A PD0 #define WE_B PD1 #define WE_C PD2 #define WE_D PD3...
Tak wiem że jest to większości podstawowych kursów programowania avr bo je wykonywałem z powodzeniem ale mam problem z załączeniem innej diody z tego przycisku jak już włączyłem nim pierwszą może to i głupie pytanie ale z tym mam problem gdzieś tu na forum znalazłem taki kod ale nie potrafię zrobić żeby ta dioda po naciśnięciu nie gasła tylko zapalała...
Mnie ten program działa. Miałem tą samą płytkę uruchomieniową niestety nie mama zbyt dobrych wspomnień... jak podłączyłem do niego układ ethernetowy to układy nie pracowały zbyt dobrze (nie wiem dokładnie dlaczego) [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0xFF; while(1) { PORTD...
Witam zaczynam programować i mam problem.Potrzebuje zaprogramować atmege8. Założenia po załączeniu przycisku ma dać stan niski i po jakimś czasie ma ponownie dać stan wysoki 2 razy. $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output Config Pinb.0 = Input Przycisk Alias Pinb.0 Do Portd = &B11111111 Przycisk = 0 Waitms 30 Portd = &B00000000...
Wgraj ten program: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 Config Portd = Output Do Portd.0 = 1 Loop end [/syntax] Napisz co się dzieje ?
to jest kod "programu" #include <avr/io.h> void main(void) { DDRD &= (1<<6); // while(1) { PORTD |= (1<<6); // zapal diodę LED2 } }
Prosze napisane : MAm ustawione atmega8 na 8Mhz dlatego dluzszy delay. [syntax=csharp]/* * main.c * * Created on: 15 lip 2015 * Author: Rafal */ #include <avr/io.h> #include <avr/delay.h> int main(void){ DDRD |= (1<<PD0); while(1){ PORTD |=(1<<PD0); _delay_ms(8000); PORTD &= ~(1<<PD0); _delay_ms(8000); } } [/syntax]
Dziękuję za odpowiedź. Nie wiedziałem ze muszę podawać wartość OCR1A w przerwaniu bardziej wydawało mi się że trzeba zerować. Chcę użyskać przerwanie do 1 sekunde, 8000000/256=31250 jest dobrym obliczeniem? Taktowanie procka 8 Mhz. [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> // dioda LED #define LED_PIN (1<<PD7) #define...
W VB mam takie funkcje do wysyłania i odbierania danych RS232 Dodano po 1 Zmieniłem funkcję odbierania danych w VB i zaczęło się ściągać. Dodano po 1 W zasadzie opanowałem transfer danych w obie strony. Pozostał problem z wyświetlaniem na wyświetlaczu LCD kodów znaków zamiast znaków (funkcja 'itoa (data,str,10);LCD_WriteText(str);' ).
$regfile = "m8def.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował Config Portd = Output Portd = &B00000000 Portd.0 = 1 Waitms 500 Portd.1 = 1 Waitms 500 Reset Portd.1 Reset Portd.0 End To kod programu. Raczej wszystko się zgadza. Pozdrawiam Maciek
Witam. Chciałem uruchomić rejestr przesuwowy 74hc595 na sprzętowym SPI, ale coś nie działa. Mianowicie uC się wiesza, przesyłanie raz działa raz nie, podłączyłem diode do jednego wyjścia tak żeby jej stan zmieniał się co 0,5s i efekt jest taki, że mignie raz i się świeci, albo jest zgaszona. Podłączenie jest raczej dobre, podłączony programator USBAsp...
Ponieważ napisałeś do mnie na PW to odpowiadam: - bardzo dobrym programem (niestety płatnym) jest mkavrcalculator, jednak w Twoim przypadku (atmega8) możesz go użyć - wersja demo obsługje w całości ten procesor - chwalę sobie AVRBurn-O-Mat - nakładka graficzna na avrdude - KhazamaAVRProgrammer Tylko nie rozumiem zbytnio po co chcesz ich używać skoro...
Witajcie Mam zadanie zrobić sterownik z czterema czujkami DS1820. Żadna nowość, napisałem kod, by nie bawić się z ID kolejno konfiguruję 4 piny na 1wire bo portów mi nie żal. Uruchomiłem na testerze, działa. Gdy zacząłem rozbudowywać menu zaczęła mi przeszkadzać konwersja czujek (4x Waitms 650). Zupełnie przypadkiem zamiast Waitms użyłem pętli For T...
Problem polega na tym ze dioda świeci kiedy nie trzeba sama z siebie. Bez mikro kontrolera jest tak samo co jest powodem ? http://obrazki.elektroda.pl/9583782400_1... Program: #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD |= _BV(0)|_BV(1); PORTD |= _BV(0);...
W całym kodzie widzę wyłącznie PORTD = 0X20; // PD5->1,czyli Enable->1 a nigdzie nie widzę PORTD &= ~0X20; // PD5->1,czyli Enable->0 Piotrek
Niekoniecznie... Kod jak najbardziej prawidłowy, sprawdzający stan wyjścia PORTD1 , chociaż optymalniej byłoby całość obsługi przerwania zminimalizować, usunąć to co już i tak wynika z automatycznej natury przerwań (cli/sei) i unowocześnić w/g manuala avr-libc :[syntax=c]ISR(TIMER2_COMP_vect){ PORTD ^= (1<<PORTD1) }[/syntax]
Witam, napisałem program sterowania stralką automatyczną w BASCOM pod mikrokontroler Atmega8 i jest z tym programem tylko jeden problem, podczas wykonywania nie wczytuje stanu wejść (czyli pinów od pinb.0 do pinb.7), jeżeli zadam stany logiczne przed włączeniem zasilania to program się wykonuje ale przecież trzeba odczytać wielokrotnie stan presostatu...
Witam. Czujnik DS18B20 [syntax=c] #define THERM_PORT PORTC #define THERM_DDR DDRC #define THERM_PIN PINC #define THERM_DQ PC5 [/syntax] A LCD [syntax=c] #define LCD_PORT PORTC // port for the LCD lines #define LCD_DATA0_PORT PORTD // port for 4bit data bit 0 #define LCD_DATA1_PORT PORTD // port for 4bit data bit 1 #define LCD_DATA2_PORT PORTD // port...
Witam nie moge sobie poradzic z napisaniem programu. Mam napisane zapalanie przyciskami ale nie moge sobie poradzic w napisaniu funkcji : -mam 4 przyciski i zapalaja 5 diod -jak przytrzymam 1-przycisk 2sek to maja sie zapalic wszystkie diody -jak przytrzymam przycisk 4- 2 sek to ma sie zapalic 1 dioda pomoze mi ktos? $regfile = "m8def.dat" 'informuje...
[syntax=c]if(!(PINB&0x40)) PORTD = 0x80; // jeżeli przycisk PB1 jest wcisnięty, pali się pierwsza lampka[/syntax]PINB & 0x40 maskuje szósty bit, a nie pierwszy. W następnym warunku też źle. [syntax=c](0<<PD0)[/syntax]Nie wiem jaki cel Ci tu przyświecał, ale jeśli chcesz wyzerować PD6, to robi się to tak: PORTD &= ~(1<<PD6). Nie...
Tak na szybkiego coś na bazgrałem. Diody podłączasz anodą do + a kadotdą do mikrokontrolera. $regfile "m8def.dat" $crystal = 8000000 Config Pinb.0 = Input 'Do tego portu podłączamy switcha Config Portd = Output 'Do pinów tego portu będą podłączone diody Set Portb.0 'Włączenie rezystora podciągającego Switch Alias Pinb.0 'Zamiast wpisywać Pinb.0...
Pozwoliłem sobie zrobić schemat tego Mrugacza : //Poprawiony// http://obrazki.elektroda.pl/5132131800_1... Zasilanie pod nóżkę 7 VCC a mase pod 8 i 22 GND. Jeżeli miałbym się przyczepić to popraw komentarze bo masz PORTD a wykonujesz na PORTB.
Nie piszę w C, ale czy nie powinno być tak? define F_CPU1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0xFF; while(1) { PORTD = 0xFF; _delay_ms(500); PORTD = 0x00; _delay_ms(500); } return 0; }
Przeznaczenie: Przerywa działanie programu na określony czas. Składnia: WAITMS czas gdzie: czasliczba określająca czas opóźnienie w milisekundach, od 1 do 65535. To jest z polskiego helpa do bascoma. W starym bascomie bylo do 255. Co do programu to spróbuj taki, u mnei dziala: $regfile = "m8def.dat" $crystal = 8000000 Config Portd...
Komparator dziala caly czas, tylko za pierwszym razem ustawia 0xFD na porcie, pozniej tego nie zmieniasz(!!), a jak przychodzi kolejne przerwanie to znowu ustawia 0xFD - czyli de facto nic sie nie zmienia. Proponuje w obsludze przerwania wstawic negacje pinu z dioda led. Nie wiem czy ja sie napewno zrozumiale wyrazilem. Wlaczasz zasilanie - PortD =...
dzięki, zaraz spróbuję to poprawić Dodano po 55 Działa http://obrazki.elektroda.pl/1238000800_1... Jeszcze raz podziękował :)
portd atmega8 atmega8 dioda portd atmega8 bascom portd
alpine kostki dht22 wilgotność pompa spustowy pralka
electrolux plyta indukcyjna electrolux plyta indukcyjna
Gaźnik Keihin CVK PZ-19 skuter 4T 80 – ile obrotów śruby mieszanki ustawić? Klixon w lodówce: jak bezpiecznie zewrzeć i sprawdzić – test, diagnostyka, wymiana