Już chyba wiem. Musisz wyłączyć debugowanie (JTAG interfejs) w fuse bit. Domyślnie jest włączone i blokuje cztery wyjścia na porcie C. Niekoniecznie w fusach , bo JTAG-a można wyłączyć programowo :D Piotrek
Typowy problem, miałem to samo jak zaczynałem :) Musisz wyłączyć JTAGa (fusebit JTAGEN).
Jak działało poprawnie wsta drugą megę i zobacz czy będzie dobrze:> Oczywiście w FUSEach nie dłubałeś i przypadkiem Ci się jtag nie włączył?:> (PORTC)
Przed PORTC |= ... musisz go wyzerować.
Ten kod można zapisać na co najmniej n sposobów, podam tylko najlepszy (wg mnie): ISR(INT0_vect) { unsigned char pintemp = PIND & (_BV(7)|_BV(2)); if (pintemp == 0 || pintemp == (_BV(7)|_BV(2))&... PORTC++; else PORTC--; }
To jeszcze to F_CPU zdefiniuj przed zainkludowaniem delay.h - nie masz żadnego ostrzeżenia? A najlepiej zdefiniuj je w makefile. No i to badanie można skrócić do if(!(PINA & _BV(PINA0)) PORTC=0xFF; else PORTC=0x00; Te nawiasy klamrowe są niepotrzebne.
Ze schematu wynika że diody są sterowane poziomem wysokim więc zamiast: PORTC = ~rpm; powinno być: PORTC = rpm; Nie analizowałem głębiej programu, zakładam że zmienna rpm pełni rolę adekwatną do swojej nazwy. Również zamiast: else PORTC = ~255; można dać po prostu: else PORTC = 0; chociaż to jest akurat dokładnie to samo.
Cóż to jest PC1? Prawidłowe ustawienie bitu pierwszego w porcie C wygląda tak: PORTC |= (1<<1)
mi pomogło podciągnięcie portu PORTC=0xff;
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ę...
PORTC=1 ? AS co to ma robić? I gdzie definicja, że portc jest WJEŚCIEM?:)
Witam Posiadam jedynie programator JTAG ICE , zakupiony w firmie Kamami (ZL16PRG) . Czy mogę zaprogramować procesor , tym programatorem nie tracąc dostępu do PORTC który jest mi niezwłocznie potrzeny w całości ? Boje się szczerze mówiąc wgrać program z : MCUCSR |= (1<<JTD); MCUCSR |= (1<<JTD); Dzięki , i pozdrawiam
Dodam, że jak się "zadeklarowało" przycisk w ten sposób, ... DDRC &= ~KEY; PORTC |= KEY; ... to wypadałoby sprawdzać jego stan, przez odczyt PINC, a nie ... if ( !(PINA&KEY) ) Piotrek
PORTC z PORTA się pomieszały :)
A masz połączone oba zasilania Vcc Avcc i oba Gnd?,jeśli nie to portc może nie działać
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
Tak lekko zmieniłem bo może zrobiłbym to inaczej ;) [syntax=vbnet]Dim Aktywne As Byte Odbior_pilota: If Komenda = W_gore Then Incr Aktywne If Aktywne > 4 Then Aktywne = 1 Elseif Komenda = W_dol Then Decr Aktywne If Aktywne > 4 Then Aktywne = 4 End If Select Case Aktywne Case 0 Gosub Aktywuj_pc Case 1 Gosub Aktywuj_cd Case 2 Gosub Aktywuj_tuner Case...
Oczywiście te dwie linijki też dodałeś? Config Pinc.5 = Input Portc.5 = 1
Na pewno masz te 8MHz? Po za tym spróbuj wyrzucić to: Config Lcdmode = Port i to Display On oraz zamiast pisać tak: Db4 = Pc.5 napisz tak: Portc.5 . Śmiem twierdzić że połączenia sprawdzałeś kilka razy oraz sprawdziłeś czy na wszystkich końcówkach portu C pojawia się określony stan(specjalnie wykonany test).
A nie prościej napisać: [syntax=c]PORTC = zmienna[/syntax] Bez żadnych if, switch itp.?
A spróbuj tak: [syntax=c]{ _delay_ms(3); PORTC|=_BV(PC0); _delay_ms(1); PORTC&=~_BV(PC0); }[/syntax] Pamiętaj że łączny czas funkcji od momentu pzerwania do momentu powrotu z przerwania pod żadnym pozorem nie może przekroczyć 10ms. Inaczej każde następne przerwanie jest "spóźnione" o wartość nadmiarową nad te 10ms. Poza tym: [syntax=c]MCUCR|=_BV(ISC01)|_BV(ISC00);....
Ja używam takich kodów do odblokowania tych pinów, zaraz po instrukcji konfiguracji zegara programowego: 'odblokowanie pinów PC6 i 7 dla procesorów atmega16/32: Tccr2 = 0 Assr = 0 Timsk = 0 Tifr = 0 Oczywiście wszelkie dalsze konfiguracje innych timerów powinny znaleźć się po tym kawałku kodu.
Przykładowy program jest załączony do bibliotek, tam jest chyba procesor ATMEGA16, ale można zmienić na inny.
No to kupiłem drugi mikrokontroler i ISP działa. Mam pełne porty A B D ale za to nie mam PC2-PC5. Znalazłem, że to porty od JTAG i chciałem ustawić JTAGEN na 1 w AVR8 Burn-O-Mat v2 ale niestety jest on na czerwono i nie mogę go przełączyć. Czy jest jakaś możliwość za pomocą programatora ISP dokładnie usbasp wyłączyć JTAG? Może zamiast programatora...
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...
Teraz kod sprawdza przycisk co około 1,4s, a więc musisz trzymać przycisk tak długo. Nie chodzi mi o sprawdzanie co jakiś czas, tylko o wykrycie samego faktu, że na wejściu nastąpiła zmiana stanu z 1 na 0: //.... unsigned char pina_laststate = PINA; for(;;){ PORTC= 0b11111110; PORTB=LED[j]; _delay_ms(4); PORTC=0b11111101;...
Nie dodawaj żadnych rezystorów podciągających procesor już takie ma. Włącza się je programowo PORTx=(1>>Pxy); x oznacza numer portu a y numer wyjścia danego portu. W twoim przypadku to PORTC=0xff; zalącza wszystkie rezystory portu C.
Witam, Atmega16, Buzzer z generatorem na 5V podłączony do PORTC.4 ustawiony jako wyjście. Noga "+" buzzera podłączona do Vcc a masa buzzeta do portu - czyli załączanie Buzzera logicznym zerem. JTAG wyłączony. Buzzer daje dźwięk przy włączaniu układu. Dziwne.... robiw
Do jakiego portu podłączasz te urządzenia? Czy jest to PORTC? Jesli tak, to pamiętaj, żeby wyłączyć JTAGa (fuse-bitami).
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...
jesteś moim zbawcą... muszę przyznać że nie natknąłem się na ten wątek ale dzięki niemu działa już mój wyświetlacz :) ... a więc problem tkwił w tym, że w Atmega16 standardowo jest ustawiony FUSE bit JTAG, który blokuje niektóre wyjścia na PORTC ;/ .... mały niuans a zabrał mi ze 2 dni rozważań ... dziękuje wszystkim
[syntax=c]int main(void) { DDRC |= (1<<LED1) | (1<<LED2); ADCSRA = _BV(ADEN) |_BV(ADPS2)|_BV(ADPS1); ADMUX = (1<<REFS1) | (1<<REFS0) | (1<<MUX0) | (1<<ADLAR); while(1) { ADCSRA |= _BV(ADSC); while(ADCSRA & _BV(ADSC)); if (ADCW < 500) { PORTC &= ~(1<<LED1); PORTC |= 1<<LED2; } else { PORTC &=...
Witam czy mozna w atmega16 PC0(SCL), PC1(SDA), PC2(TCK) uzyc jako wejscia? Bo zostaly mi tylko te 3 wolne miejsca aby podlaczyc przyciski. I wlasnie na PC0 dziala ladnie a pozostale dwa nie. Przyciski zwieraja do masy a to kawalek kodu: while (1) { if(bit_is_clear(PINC,PC0)) /* wcisnieto przycisk */ { _delay_ms(300); /* przez ten czas powinno ustac...
ok kolego już ci pomagam! opis wyprowadzeń wyswietlacza i tak go podłącz jest to stała konfiguracja. oczywiście porty mozesz zmienić. I tak zaczynamy od wyprowadzenia nr 1 do ostatniego 14 lub 16 jeśli jest podświetlenie . 1- masa 2- +5V 3- kontrast (dzielnik napiecia PR o wartości 5k środkowa noga do wyswietlacza. Pozostałe dwie nigi : jedna do masy,...
Witam Nie moze byc reset pin, moze byc takie polecenie tzlko do koncowki pracujacj jako wyjsciowa czyli np. reset portc.3 pozdrawiam
Tak na szybko to powinno być: "Config 1wire = Portc.1" "8 MHz" "na razie" Gdzie masz "Config Lcd" i "Config LcdPin" ?
W zasadę działania programu nie wnikałem ale błędy jakie znalazłem to: 1. Masz zadeklarowaną Funkcję Sharp_Odczyt natomiast w programie wywołujesz funkcje Sharp_Odczyt1 i Sharp_Odczyt2 które nie są zadeklarowane. Proponuję funkcję Sharp_Odczyt przerobić tak: Function Sharp_odczyt(byval Kanal As Byte) As Word Stop Timer0 Sharp_odczyt = Getadc(kanal)...
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...
Witam. Chociażby zwykłym edytorem tekstu. A oto fragment kodu. [syntax=c] /* * dstemp.c * * Created: 2012-03-15 08:12:33 * Author: dsosnowski */ #include <avr/io.h> #include "dstemp.h" /* #define _1W_PORTPORTC #define _1W_DDR DDRC #define _1W_IN PINC #define _1W_PIN 6 */ #define TDDRDDRC #define TPORTPORTC #define TPINPINC #define DSPIN6 #define...
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 :(
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
no tak zapomniałem jeszcze w tym kodzie zrobić żeby ustawić PORTC jako wyjście - przecież po resecie jest wejściem czyli na początku main jeszcze: DDRC = 255;
no niestety nie wyszlo :( dalem zaraz po mainie MCUCSR |= (1<<JTD); MCUCSR |= (1<<JTD); a fuse bity ustawilem na 0xe1, 0xd9 zgodnie z http://www.elektroda.pl/rtvforum/topic80... ustawilem piny E oraz RS z PORTC na PORTA i nic nie smiga
Rozwiązałem problem z DS'ami. Głupi błąd, czytałem numery seryjne w przerwaniach. Wyłączenie przerwań na tę chwilę czytania numerów załatwiło sprawę. Wywaliłem tego ELSE przy LED. Ale dalej nic to nie zmieniło. Jasność taka sama. Kupiłem BC640 1A na zamianę tych BC557B. W tygodniu je podmienię i dam znać czy pomogło. EDIT: Tak z ciekawości sprawdziłem...
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...
PORTC=(1<<PD0)|(1<&... Dlaczego tak?? Pewnie i tak działa, ale dziwnie wygląda.
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...
cos mi tu niegra... wzgledem masy na plytce na nozkach L293d mam napiecia : Input 4 5V Input 3 4.23 V Output 4 5V Output 5 5V Enable 2 5V przy kodzie : DDRC=0xFF; DDRD=0xFF; PORTD=0xFF; PORTC=0x00; PORTC|=_BV(4); PORTC&=~_BV(3); ---edit PORTC|=_BV(4); daje mi 5V PORTC&=~_BV(3); daje mi 4.25 V (niby jak? )
A0 masz podlaczone do masy ? Jakos nie widze zebys w tym kodzie uzywal PINC a to na nim jest faktyczny stan pinów portu.Jesli czytasz z PORTC to otrzymujesz wynik zatrzasniety w latch-u portu.
Nie oczekuję gotowca, lecz podpowiedzi. Pisałem już dziesiątki wersji, ostatnia aktualna jest ta: [syntax=cpp]#include <avr/io.h> #include <util/delay.h> #define sw1 (1<<PC2) #define sw2 (1<<PC1) #define sw3 (1<<PC0) #define LED1 (1<<PC3) int main(void){ PORTC |= sw1 | sw2; DDRC |= LED1; unsigned char pass[3]; while(1){...
Witam ! Chcę podłączyć mp3/radyjko do ADC ale nie wiem jak bo za każdym razem pojawia się wysoka wartość (nie znam się ale chyba z AREF :D ). I tu pytanie: Jak to podłączyć by wyświetlało mi poprawnie na skali LED. Oto kod: [syntax=c]#include <avr/io.h> #define LED1 PC0 #define LED2 PC1 int main(void) { DDRC |= (1<<LED1) | (1<<LED2);...
Najczęstsze kłopoty z LCD to nieumiejętność konfiguracji zegara. Pokaż fusy, powróżymy... ;) Istotne też jest oznaczenie mikrokontrolera i schemat podłączeń/wyraźne zdjęcie, gdyż mogą być włączone dodatkowe funkcje np. JTAG, OCD na używanych pinach (Zwłaszcza w przypadku użycia PORTC w ATmega16/32/164/324/644/1284 ). Kod wklejaj pomiędzy tagi ] Kod...
To powinno cię zadowaolić .include"m16def.inc" ldi r16,0xff out ddrc,r16 ldi r16,low(ramend) out spl,r16 ldi r16,high(ramend) out sph,r16 PG: ldi r16,0b00000001 out portc,r16 W: rol r16 out portc,r16 rol r16 out portc,r16 rol r16 out portc,r16 rol r16 out portc,r16 rol r16 out portc,r16 rol r16 out portc,r16 rol r16...
Na podstawie artykułu: http://mikrokontrolery.blogspot.com/2011... chciałem spróbować nastawić timer1 (16 bitowy) w ATmega16. Robię to w ten sposób: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define LED1 PC0 #define LED2 PC1 volatile uint8_t cnt=0; void main(void) { DDRC |= (1<<LED1) |...
Okazało się że musiałem wyłączyć JTAG-a. Teraz już wszystko działa:) Standardowo ATMega ma go załączonego i przez to nie można używać pinów: PORTC.2 PORTC.3 PORTC.4 PORTC.5 jako wyjść. Jakby ktoś miał ten sam problem to JTAG-a wyłącza się zmieniając programatorem ustawienie bitu JTAGEN w bitach konfiguracyjnych procesora.
Podlaczylem wyseitlacz graficzny TLX-711 na standardowym kontrolerze t6963c do atmega16 w nastepujacy sposob: dane - portc CE - PB0 RESET - PB1 WR - PB2 CD - PB3 RD - PB4 Uruchomilem baskomie na standardowym programie do obslugi takiego wyswietlacza i pojawia si edziwny problem: moge ustawic kursor w dowolnym miejscu wyswietlacza ale nie moge skasowac...
Z braku czasu nie sprawdziłem rozwiązania kolegi Zumka. Małe pytanko. Czy Twoje rozwiązanie jest sprawdzone w praktyce czy tylko w symulacji, gdyż u mnie wiąże się to z reorganizacją na płytce i cięciem ścieżek. Aby przybliżyć temat zrobiłem pewne doświadczenie i obmierzyłem następujące parametry. Jak wspominałem interesuje mnie aby program w pętli...
Czy ktoś z Was spotkał sie z dziwnym działaniem portuC ATmegi16L ?? Mianowicie pisze program w C i po kompilacji tego samego programu tylko o działaniu wynikowym na portA wszystko działa OK a po kompilacji ze zmianą tylko portu na portC program nie działa. Sprawdzałem fuse-bity czy czasem debug nie jest włączony ale tam wszystko jest ok, sprawdzałem...
Witam kod do nadajnika może wyglądać tak: #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> #include <avr/interrupt.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL)&... //define receive parameters #define SYNC 0XAA// synchro signal...
Daj : SET PORTC.5 SET PORTA.7 w tym momencie podciągniesz wejścia do plusa zasilania. Zwierając teraz je do masy powinno działać lepiej.
Witam, Buduje sobie układzik, prosta zabawka która do portów ma podłączone lampeczki. Wszystkie (prawie) porty (tj. A, B, D) działają prawidłowo. Linijka taka jak wszystkie inne: PORTC = 0xFF; Wszystkie lampki powinny świecić prawda? a jednak tak nie jest... bity od 2 do 5 nie działają. Sprawdzałem na dwóch procach. Płytak 100% sprawna. Czy ktoś wie...
Bo to nie gotowiec :!: Ja preferuję debounce, mały przykład dla ciebie: Dim I As Byte I = 0 Ddrc = &B00001111 Portc = &B11110000 Do Debounce Pinc.4 , 0 , Zmien , Sub Select Case I Case 1: Set Portc.0 Set Portc.2 Case 2: Reset Portc.0 Reset Portc.2 Case 3: Set Portc.1 Set Portc.3 End Select Loop Zmien: Incr I If I = 4 Then I = 1 Return...
no to ja mam pytanie ... a gdzie jest info dla procka o liniach SDA i SCL ? sbi(PORTC, 0);// i2c SCL on ATmega163,323,16,32,etc sbi(PORTC, 1);// i2c SDA on ATmega163,323,16,32,etc albo inaczej PORTC |= 0x3; // xxxxxx11
Witam. Odnosnie pierwszego pytania to mozliwe ze i jest uszkodzony ale znacznie wieksze jest prawdopodobienstwo ze cos zle robisz. Napisz co port robi jak wystawaisz mu 0 (czyli same 0) i 255 (czyli same 1) Ja bym zrobil tak (np w bascomie) config portc = output do portc=0 wait 1 portc=255 wait 1 loop end Jak port dobry musi chodzic. Dodatkowe funkcje...
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...
W ustawieniach fusebit w programatorze ustaw źródło zegara na External XTAL. Czy procesor programuje się prawidłowo, bez błędów? Dziwi mnie, że najpierw ustawiasz porta i portc jako wejścia, a następnie używasz ich jako wyjść dla LCD. Spróbuj wstawić też Waitms 100 zaraz po Poczatek.
Witam! Mógłby mi ktoś pomóc i powiedzieć dlaczego mie nie działa ten wyświetlacz? Z góry dziekuje. .include "m16def.inc" .equ E = 0 .equ RS = 1 .equ DATA = PORTA ; do portu A podlaczona szyna danych 8 bitowa ; port C pin 0 -- E ; port C pin 1 -- RS .list .cseg .org0 ldiR16,HIGH(RAMEND) outSPH,R16 ldiR16,LOW(RAMEND) outSPL,R16 ldi R16, 0xFF out DDRA,...
Mam jeszcze jedno pytanie. Zrealizowałem przełączanie z 2 portów sygnałów do 1 portu. po naciśnięciu s1 sygnały maja przechodzić z 2 portu do 3 i po 30sec z 1 do 3. Nie działa.Dodam że działało wczoraj. Dodano po 13 ' 2 liczniki Config Portb = Input 'wszystkie końcówki jako wejścia Portb = &B11111111 'podciągnięte do + Config Portd = Input 'wszystkie...
Witam Procesor jak w temacie. Podłączyłem sygnał zmienny (fala prostokątna) do obu nóżek PortB0 (T0) i PortB1 (T1). Napisałem program w celu sprawdzenia czy oba liczniki działają: $regfile = "M16def.dat" 'Wybór kontrolera ATMega16 $crystal = 8000000 'Kwarc 16MHz Config Lcd = 20 * 2 'Rodzaj wyświetlacza Config Lcdpin = Pin , Db4 = Portc.1 ,...
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-...
Witam, Ma migać dioda na porcie. Podłączona anodą do +5V a katodą do portu przez opornik 200R . Celem było zaświecenie diody przy wysterowaniu portu zerem. Okazało się że na porcie A.5 to działa, a na porcie C.5 nie działa. Kod bascom: ----------- [...] Config Porta = Output Config Portc = Output A: Portc = &B11111111 Porta = &B11111111 Waitms 100 Portc...
Prosił bym żeby ktoś poprawił tem program tak by można zrobić test lcd w takim połączeniu: ten mi nie działa: Kod: $regfile = "m16def.dat" $crystal = 1000000 $baud = 9600 $lib "lcd4.lbx" Config Portd = Output $prog &HFF , &HE4 , &HD9 , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Porta.5...
[syntax=C]#include<avr/io.h> #include<avr/interrupt.h> //#include"avr/iom16.h" #include<util/delay.h> volatile uint8_t pwm; int main() { DDRC |= (1<<PC1); PORTC |= (1<<PC1); TCCR0 |= (1<<WGM01); TCCR0 |= (1<<CS02) | (1<<CS00); OCR0 = 39; TIMSK |= (1<<OCIE0); sei(); pwm=1; } ISR(TIMER0_COMP_vect)...
Przykładowy program realizujący przedstawiony przeze mnie sposób. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "LCD.h" volatile unsigned int adcon = 0; ISR(TIMER0_OVF_vect) { static char st; if((st++)%2) { PORTB |= 1<<0; //pb0=0 PORTB &= ~(1<<1); //pb1=1 adcon = ADC; //odczyt...
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...
Jedna sprawa - jak podłączasz LCD pod port C to wyłączasz JTAG'a? W załącznikach sprawdzone biblioteki, których używam na co dzień. Pamiętaj o zmianie pinów wg własnych ustawień. Ja zwykle mam te ustawienia w innym pliku, który zawiera cały opis połączeń procesora z peryferiami. Możesz to wkleić zmodyfikowane dla własnych potrzeb np w pliku HD44780.h...
witam.na wstępie chce zaznaczyć ze dopiero zaczynam pisać programy wiec prosze o zrozumienie. za pomocą atmegi16 prubuje wysterować 8 diod podłączonych przez rezystory do nózek procesora od 22 do 29 (pc 0 do pc7),ale coś mi nie wychodzi.sterowanie ma polegać na zaświeceniu wszystki 8 diod np na 2 sekundy i zgaszeniu i tak wkoło.ale zwykle nie wszystkie...
Witam serdecznie. Korzystam z wyświetlacza LCD 16x2 zgodnego ze standardem HD4478, program jest napisany w BASCOMIE na ATMEDZE 16 Chodzi mi co mam zrobić aby wyeliminować zakłócenia. W tej chwili jest tak że jak wyświetlę jakikolwiek tekst na LCD np "TEST" to wystarczy, że przyłożę działająca lutownicę transformatorową na odległość chociażby 30cm i...
spróbuj tego, powinno zapełnić pierwszą linie znakami "x" a następnie zamazać je zerami lub czymkolwiek innym co podstawisz jako zmienną B $regfile = "m16def.dat" $crystal = 8000000 Dim A As Byte Dim B As Byte A = 0 B = 0 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 ,...
Ja mam też podobny problem . Kontrast działa , ale wyświetla tylko górną linie (kwadracików) program się wgrywa ok przestawiam fusbity różne kombinacje a lcd nie reaguje. Dlaczego mi lcd nie wyświetla ?(na początek uruchomienia) ten kod się kompiluje poprawnie . kod: $regfile = "m16def.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdpin = Pin...
ok dzięki bardzo za pomoc ////////////////////////////////////////... Zrobiłem wszystko wg. zaleceń tmf'a i termometr działa tak jak chciałem. Mam teraz problem z "pętlą histerezy", ponieważ chcę aby teraz jak termometr wyryje temperaturę 40 i powyżej załączył się wentylator i chłodził tak długo aż temperatura spadnie do 30 i sie wyłączył, z grzałką...
Witam, posiadam http://obrazki.elektroda.net/42_12271290... http://obrazki.elektroda.net/88_12271290... Nie wiem w czym tkwi problem? Czy trzeba coś dodatkowego wstawić pomiędzy moduł a uC (konwerter/inwerter)? Procesor działa na zew. kwarcu 16mhz (fuse'y ustawione). Atmega z komputerem świetnie komunikuje się poprzez UART/max232 ale...
Witam wszystkich, Wykonałem klawiaturę matrycową, ale układ nie działa jak sobie wymyśliłem, chce aby wykonać program 1 muszę nacisnąć klawisz 1 i tak dla wszystkich programów. Ale jak wybiorę program 1 to przechodzi do programu 11. Poniżej podaje fragment moich wypocin port C zrobiłem sobie jako port pomocniczy, bo na razie nie potrafi inaczej. Proszę...
Witam próbuje zmieniać kierunek obrotu przerobionego serwomechanizmu w za pomocą pilota w kodzie RC5. Samo odbieranie kodu naciśniętego przycisku oczywiście działa. (przykład z zapalaniem diody). Jak widać na obrazku poniżej do zmiany kierunku służą wejścia układu 1A,2A,3A,4A. wszystkie są podpięte pod port C. pojedyncze ustawienie kierunku w pętli...
Witam forumowicze. Robię właśnie pracę inżynierską i mam problem z przekazywaniem zmiennej z przerwania timera do głównej pętli programu. Męczę się z tym od dłuższego czasu i moja inżynierka stoi w miejscu. ;/ Proszę o pomoc w tej sprawie. Oto część kodu z przekazywaniem zmiennej: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h>...
Witam. Nie do końca potrafię namierzyć problem. Do odczytu wartości napięć na wejściach AIN0...AIN3 układu PCF8591 stosuję procedurę: Sub Pomiar_pcf I2cstart I2cwbyte Wpcf2 Zmienna_byte$ = 64 Or Numer_wejscia$ ' wlaczenie przetwornika DA (bit 7 control byte) I2cwbyte Zmienna_byte$ I2cstart I2cwbyte Rpcf2 I2crbyte Wartosc_ac$ , Ack I2crbyte Wartosc_ac$...
Ok, w związku z tym zrealizuję ten układ :) Będę potrzebował jeszcze dwóch linii procesora pracujących jako wyjście sygnałów do tego układu też na 3.3V. Rozumiem, że wystarczy, że powtórzę ten schemat dla każdej kolejnej linii (ten włącznie z gwiazdkami)? To od razu jeszcze zapytam :) Żeby na takiej linii (już nie i2c tylko po prostu 3.3V wejście w...
Witam forumowiczów. Jestem początkujący w programowaniu w języku c, a muszę zrobić projekt w którym będę odczytywał wartość z przetwornika ADC w zakresie 0-5V i wyświetlał ją na dwóch wyświetlaczach 7 seg multipleksowanych wspólna katoda. Wejście ADC ma być na porcie PA ,Wyjście PB obsługuje wyświetlacz, a katody portC;/ . Macie jakieś przykładowe kody...
uint8_t WireReset(void) //zwraca 1 gdy po wystawieniu resetu na magistrali 1-Wire slave (w tym // przypadku termometr) zglosi swoja obecnosc; w przeciwnym razie zwraca 0 //dziala poprawnie tylko w obecnosci 1 slave'a na magistrali! { uint8_t temp=0; (DDRC |= _BV(1)); //(PORTC |=_BV(1)); ustaw_bit_na_0;...
$regfile = "m16def.dat" $crystal = 16000000 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Config Lcd = 16 * 2 Config portb = INPUT Portb = &B11111111 Cls Do If Pinb.0 = 0 Then Lcd "elektroda" Else Cls End If Loop lcd korzysta z portu C pamietaj o wyłaczeniu JTAG-a
atmega wyświetlacz PC0 RS PC1 RW PC2 E PC3 DB4 PC4 DB5 PC5 DB6 PC6 DB7 F_CPU 1000000UL JTagów nie wyłączałem, FUSEbity nie ruszane. nagłówek w bibliotece HD44780.h [syntax=c]#define LCD_RS_DIR DDRC #define LCD_RS_PORT PORTC #define LCD_RS_PIN PINC #define LCD_RS (1 << PC0) #define LCD_E_DIR DDRC #define LCD_E_PORT PORTC #define LCD_E_PIN PINC...
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...
tranzystora mocy nie musisz dawać podczas prób uruchamiania ,ani rezystora mocy , jednak tranzystor nadzoru musi być , lub jak będziesz bardzo uważał to na portC-0 podaj masę wtedy ruszy i przejdziesz do menu , można np regulować napięciem z zasilacza laboratoryjnego i obserwować jak układ działa , ja tak robię podczas uruchamiania żeby czegoś nie spalić...
$regfile = "m16def.dat" $crystal = 16000000 '---------------------------------------... Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 '---------------------------------------...
Cześć! Od jakiegoś czasu nie mogę sobie poradzić z obsługą I2C. Mam ATMege32 i podłączony do niej układ PCF8574. Chcę na początek ustawić na portach PCFa np same zera - żeby sprawdzić czy transmisja działa. No i nie działa. Oto cały mój kod (kompiluję pod winavr): #include <compat/twi.h> #define cbi(sfr, bit) (_SFR_BYTE(sfr)...
Jtag jest na Portc.Aby go wyłączyć wybierz zakładkę fuse & lockbit - będzie tam zakładka jtag enabled - zmień na disabled - write fuse i po kłopocie. Pozdrawiam.
Brakuje Ci: $regfile = "M16def.DAT" $crystal = 14745000 $baud = 38400 --------------- Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Tu konfigurujesz piny wyświetlacza LCD wartość baud musi być odpowiednio dopasowana do kwarcu, poszukaj w google jakie wartości...
lcd jest sprawny.. adc pod bascomem smiga z lcd a kazdy pin mozna przypisac... #define PORT_E PORTC #define PIN_E 3 #define PORT_RS PORTC #define PIN_RS 2 #define PORT_DB4 PORTC #define PIN_DB4 4 #define PORT_DB5 PORTC #define PIN_DB5 5 #define PORT_DB6 PORTD #define PIN_DB6 7 #define PORT_DB7 PORTA #define PIN_DB7 7 tylko ddry w mainie trzeba pozmieniac.....
Teraz mam kolejny problem bo dostaje odpowiedzi których nie mam w manualu, może ramka się "źle" zapełnia? Kod wygląda tak: $regfile = "m16def.dat" $crystal = 7372800 $baud = 9600 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.6 Config Lcd = 16 * 4 Config Com1 = Dummy , Synchrone...
Witam! Mam problem z podobną konfiguracją... Z jakiegoś dziwnego powodu, gdy wchodzi do przerwania i zczytuję UDR to te UDR wynosi nie tyle ile powinno i rzucając to na wyświwetlacz wychodzą chińskie znaczki... #define F_CPU 1843200ul #include <avr/io.h> #include <stdio.h> #include <util/delay.h> #include <string.h> #include...
atmega16 porta portc portc atmega32 atmega32 portc
schemat kontrolki rezerwy paliwa microchip toolchain sprzedawca china
czemu zalewa swiece czemu zalewa swiece
Renault Kangoo - mrugające kontrolki na desce rozdzielczej Schemat płyty Y do telewizora LG 50T5