Zrób do testowania w programie głownym. Przekopiuj to co w przerwaniu zablokuj przerwania a w petli daj opoznienie 1-2 sek. 5 sek roboty:-) Dodano po 1 Sprawdz jak właczasz anody bo z obrazka wynika ze jak bys właczał przeciwnie to by wszystko grało. Chyba ze sie myle. Dodano po 8 #define funkcja_ON PORTC |=(1<<5); //wlaczenie odpowiedniego wyswietlacza...
Przykładowy program który wyświetla jakąś liczbę: [syntax=c]volatile uint16_t disp=0; uint8_t buff[]={0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000, 0b10001000, 0b10000011, 0b11000110, 0b10100001, 0b10000110, 0b10001110}; ISR(TIMER0_OVF_vect) { static uint8_t dig=0; static uint16_t...
A czy czasem w tym procku na PORTC nie jest domyślnie włączony JTAG?
for (i=1 ; i<=NWW; i++) { if (i%(NWW/li_A)== 0) PORTC |=0x02; if (i%(NWW/li_B)== 0) PORTC |=0x08; if (i%(NWW/li_C)== 0) PORTC |=0x20; if (i%(NWW/li_D)== 0) PORTC |=0x80; // zerowanie pinów ABCD PORTC &=0x55; // opóźnienie _delay_ms(czas_kr/NWW); } Wszystko...
Dawno nic nie skrobałem dla AVR, poniżej kod który skompilował się lecz nie ma jak przetestować. Do sprawdzania wciśnięcia klawiszy powinieneś napisać funkcję, która będzie to robić zamiast ciągłego wstawiania prawie tego samego kodu. [syntax=c] #include <avr/io.h> #include <util/delay.h> /* definicje dla preprocesora */ // klawisze #define...
Wcale nie pisałem że trzeba to robić w kodzie, tylko na wypadek gdyby ktoś nie umiał ustawiać fusów. Co do dokumentacji to do tej też trzeba podchodzić trochę z dystansem i zaczynać czytać od erraty (przykład - atmega128). Pozdrawiam Kamil
ale z tego co się już dowiedziałem nie będzie działać na mojej płytce Nie prawda, będzie działał po zmianie kilku linijek kodu. [syntax=basic4gl]$regfile = "8515def.dat" $crystal = 10000000 [/syntax] To zmień na swojego procka i częstotliwość oscylatora, jaki Masz. Na przykład [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 [/syntax] Tą...
Wykombinowałem coś takiego :), przykład można uruchomić w symulatorze (dane wejściowe np. porta.1): EDIT: poprawiłem mały błąd w przykładzie, bity można nawet kopiować jeżeli port źródłowy i docelowy jest ten sam [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 64 $swstack = 64 $framesize = 64 $baud = 57600 Dim Src_port_str As...
Zamieszczam przyklad programu napisanego na kolanie, zmienia stan lini PC3 co okolo (LicznikMax*10ms ) - wychodzi co ok. 100 ms Gdybyś miał wątpliwości to podniosłem moje kości z krzesła przed komputerem po płytkę z AtMega32 i sprawdziłem w ukladzie - DZIAŁA! Kompilowany pod ICC626, polecam "Wizarda" ,pomaga w minute ustawić co potrzeba bez sięgania...
...To mi troche komplikuje:( To włącz JTAG-a fusami żeby debugować/programować proca , a wyłączaj go programowo , zanim użyjesz LCD na PORTC. Piotrek
Co do Twojego pierwszego problemu to prawdę mówiąc nie wiem, ale zwróć uwagę na to że po zakończeniu obsługi przerwania zawartośc R16 i R17 jest zamieniona: ... .org 0x0012 rjmp t1Ovf ... t1Ovf: push r16 push r17 in R16, PORTC ldi R17, 0b00000011 eor R16, R17 out PORTC, R16 pop r16 ; R17 pop r17 ; R16 reti ... Może to wina własnie tego. Co do Towjego...
OCR0=0x20; /// podobno mozna zjechac do 0 i otrzymac fck/2 Zjechać może i można, ale chyba tylko do sprzętowego przełączania pinu. bo obsługa przerwania w 1 cyklu jest niemożliwa. void timer0_comp_isr(void) { PORTC ^= BIT(0); } Wrzuć co kompilator wyrzuca do assemblera do kompilacji. W sumie na obsługe jest 32 takty razem...
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.
A co z linią R/W? R/W->pc1 Daj na początku funkcji main: DDRC |= _BV(PC1); PORTC &= ~_BV(PC1);
Witam. Mam problem z zegarem na wyświetlaczach 7-segmentowych. Minuty po 09 wyświetla 16 zamiast 10, sekundy tak samo. Zawsze tak się dzieje, więc musi to być błąd w programie, ale ja już się poddałem, co może być nie tak. Config PortA = Output PortA = &HFF Config Portd = Output Portd = &Hff Config Portb = Output config portc.0 = output config...
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
uart_putc(PORTC); działa - wysyła bajt o wartości 0, 1 lub 2, którego putty nie wyświetla, bo nie jest to kod widocznego znaku ASCII. Na szybko możesz napisać uart_putc((PORTC & 7) + '0'); - zadziała dla trzech bitów portu. Jeżeli użyjesz programu terminala umożliwiającego podglądanie wartości odbieranych bajtw w postaci szesnastkowej lub dziesiętnej...
I właśnie to mnie najbardziej dołuje, że próbowałem jak Panowie radzili, ale nie ma efektu. Program od P. m.bartczaka skompilował się bez błędów i bez warningów - efekt: ekran pusty. Natomiast ten drugi miał warningi dotyczące nieużywanych zadeklarowanych zmiennych oraz :'LCDstring' discards qualifiers from pointer target type. Ale wydaje mi się że...
A to ciekawe, bo mi dzisiaj podobna rzeczy się zdarzyła, tyle że z portem C na ATmega32. Próbowałem podłączyć LCD, męczyłem się całą noc, aż w miejsce LCD wpiąłem kilka diodek i się okazało, że na połowie końcówek diody nie świecą. Lecz wydaje mi się, że po prostu na króciutko zwarłem 2 końcówki portu i pewnie tym uszkodziłem port. Tak mi się wydaje......
Jeśli koniecznie w jednej to for(uint8_t x=0; x<3; x++) { PORTB |= (1<<diody[x]); zamień np na for(uint8_t x=0; x<5 x++) { if( x<3) PORTB |= (1<<diody[x]); else PORTC |= (1<<diody[x-???]);
witam Taktuję mikrokontrolerem ATMEGA32 8 Mhz . Mam problem otóż wynik pomiaru mi wychodzi 0 za każdym razem ponieważ druga dioda mi się zapala . Oto kod:[syntax=cpp]/* * main.c * * Created on: 19-03-2015 * Author: DamianB */ #include <avr/io.h> #include <avr/interrupt.h> int k =0; //zmienna pomiarowa ISR(ADC_vect) //Przerwanie ADC Conversion...
Wyłącz JTAG. W fuse bitach.
Witam Zbudowałem interfejs dla Atmega8 na 4 tranzystorach wszystko działa OK, próbowałem przerobić program dla ATMEGA32 i niestety raz działa raz nie, gdy nie działa wyskakują mi następujące błędy: Blad:1 Odp:255 lub Blad:3 Odp:1 czasem Blad:5 Odp:1 Przerobiłem konfiguracje portów czyli Config Portb = &B10111111 'dla ATMEGA32 Config Portc = &B00001010...
Witam. Kupiłem dwie sztuki atmega32 kombinowałem trochę z multipleksowaniem LED katody podłączyłem pod port C i wyszło mi że PC2..PC5 nie działają. Dla sprawdzenia napisałem sobie taki krótki kodzik:[syntax=c]#include <avr/io.h> int main(void) { DDRB |= 0xFF; PORTB &= ~(0xFF); DDRC |= 0xFF; PORTC &= ~(0xFF); } [/syntax] no i wyszło że...
Witam, Mam problem z tym wyświetlaczem AND-Graph132 i kodem (EvB). Mianowicie podświetlenie działa,piksele widać (czarne tło) ale nei ma reakcji na żaden z programów. Podłączony jak w przykładowym programie : Vcc - Vcc Gnd - Gnd Bl - Vcc Cs - Pc7 Clk - Pc6 Dat - Pc5 Res - Pc4 Na płycie EvB 5.1 v5 pod atmega32. [syntax=vbnet]$regfile = "m32def.dat" $baud...
Witam, jestem początkujący w dziedzinie mikrokontrolerów. Moja zasada działania mikrokontrolera polega na tym, że po naciśnięciu przycisku mam zapalić diode led Znalazłem przykładowy kod: http://obrazki.elektroda.pl/3615578800_1... Dodano po 2 Jak mam podłączyć piny klawiatury i LED aby program działał?
[syntax=cpp] #define LCD_DB4 (1 << PC4) #define LCD_DB5_DIR DDRC #define LCD_DB5_PORTPORTC #define LCD_DB5_PIN PINC #define LCD_DB5 (1 << PC5) #define LCD_DB6_DIR DDRC #define LCD_DB6_PORTPORTC #define LCD_DB6_PIN PINC #define LCD_DB6 (1 << PC6) #define LCD_DB7_DIR DDRC #define LCD_DB7_PORTPORTC #define LCD_DB7_PIN PINC #define LCD_DB7...
Problem rozwiazany!!!!! Racje miał "damdam" portc jako funkcje dodatkowe ma obsługe JTAG-a wystarczy w fus-bit ustawić JTAG - disable i wszystko śmiga! dzieki wszystkim za wsparcie!!
Schemat pokazałeś z podłączony LCD do PORTD a nie do PORTC na którym mógłbyś mieć ew JTAG włączony - więc fusebity nie mają tutaj żadnego znaczenia jeśli chodzi o to że ci nie działa ....
Witam, Od rana próbuję wykorzystać UART w ATmega328 do wyświetlania znaków na wyświetlaczu LCD. O ile na ATmega32 wszystko działa jak należy, tak na ATmega328P wyświetlają się już krzaki. Poniżej kod programu w C: http://obrazki.elektroda.pl/8859811000_1... Oscylator zewnętrzny 16MHz. Szukałem po elektrodzie, kolegom pomaga zmiana częstotliwości....
Ja bym dał 10k. Do tego sprawdz ustawienia TWI, moj kod nie inicjuje interfjesu, trzeba dac jeszcze ///I2C #define TWI_BAUD 153600ul // wiecej nie pociagnie jako master /// SCLf = CPUf/(16 + 2*TWBR*4^TWPS) #define TWI_CONST (F_CPU/(8ul*TWI_BAUD)-2) i potem /// TWI(I2C) dla pamieci TWBR = (unsigned char)TWI_CONST;...
OK. Poczytałem, pooglądałem i poprawiłem. Biblioteka najnowsza. Skompilowało się. Z racji zapełnienia pamięci ATmega32 do około 125% postanowiłem przejść na ATmega644. Niestety po wgraniu programu dalej nic się nie zmieniło, dlatego postanowiłem zacząć od odczytu z przykładu ze strony o funkcji f_open. Też mam z nim problem. Obecnie mam taki oto kod:...
Odpal to na symulatorze i sprawdź działanie dla Atmega32 i ATmega8. Ja właśnie walczę z uruchomieniem LCD 2*16 na PORTC Atmegi16. JTAG wyłączone (Fusami i w rejestrze), TWI też wyłączone. Na innych portach działa. Gdyby mi nie brakło wyprowadzeń to dałbym sobie spokój ;)
Witam, Mam taki problem chcę przyspiać do portu takie wartości i nie działa poprawnie: Config Portc = Output Do Portc = &B11111111 Waitms 100 Portc = &B00000000 Waitms 100 Loop End Problem polega na tym iż xx XXXX xx bity dyże X nie zmieniają stanu tylko ciągle są ustawione na stan wysoki
Opczytaj o działaniu operatorów. & to operator iloczynu logicznego, czego się spodziewasz? Ma być PORTC^=0xFF;
Dalej nic. [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include "LED.h" volatile uint8_t wysw; // zmienna oznaczająca numer aktywnego wyświetlacza // ****** definicja funkcji inicjalizującej pracę z wyświetlaczem multipleksowanym int main(void) { // ustawienie TIMER0 TCCR0 |= (1<<WGM01);...
witam Napisałem kod przy którym atmega32 odbiera wyniki pomiarów w trybie master z sonarów od atmegi8 . Podejrzewam że mam błąd przy inicjacji spi lub przy pomiarze ponieważ w obydwie diody święcą cały czas niezależnie od odległości przeszkody . [syntax=c]/* * pomiary.c * * Created: 2015-01-31 18:01:14 * Author: Damian */ #include <avr/io.h> #include...
Witam, od jakiegoś czasu walczę z ładowarką uniwersalną (klonem imax b6). Problem mam tego typu że cały czas na wyswietlaczu swieci się tylko górna linia. podstawiałem lcd, atmege i dalej to samo, wsadów kilka wgrywałem. w końcu postanowiłem zrobić eksperyment i napisać prosty program do zmiany stanow na danej końcówce portu na którym jest podpięty...
#define PORTD2 2 Po co ta definicja, jeżeli później jej i tak nie wykorzystujesz. Tym bardziej, że wg. mnie jest błędnie zapisana. TCCR0 |= (1<<=CS01) |1<<(CS00); //preskaler 64 Przesunięcie bitowe powinno wyglądać tak: TCCR0 |= (1<<CS01) | (1<<CS00); + brak ustawienia odpowiedniego trybu przerwań, w tym przypadku pewnie musiałby...
Właśnie udało mi się to zrobić po mojemu, tylko chyba program powinien działać gdy wciśnięty jest switch, a tak się nie dzieje, ale zaraz to naprawię. Oto kod: #include <avr/io.h> #include <util/delay.h> int main(void) { DDRB = 0xFF; DDRA = 0x00; PORTC = 0x01; while(1) { if(!(PINA & 0x01)) {...
Witam naskrobalem taki oto program ktory w domysle ma odbierac z btm222 wartosc 1 i uruchamiac wyjscie pc7 do sterowania tranzystorem. hardware to atmega32 , uart to 19200 , 8 bitow danych , jeden stopu bez parzystosci [syntax=c]#include <avr/io.h> #define PRZEK_PIN (1<<PC7) #define PRZEK_ON PORTC &= ~PRZEK_PIN #define PRZEK_OFF PORTC...
Amplituda impulsów wynosi 4,2-4,3 V, według oscyloskopu Vpp=8,5 V. Okres impulsów jest wybierany w menu programu, mieści się w przedziale 70-280 ms. Up taktóję kwarcem 10 Mhz. Przy nieobciążonych portach nic się nie zmienia. Poniżej wkleiłem fragmenty programu z konfiguracją portów, konfiguracją licznika, podprogramem obsługi przerwania z licznika Config...
Witam, mam następujący problem: przy podłączeniu wyświetlacza tak jak w configu stan pinu porta.0 jest zawsze niski czyli wyświetlacz cały czas jest zresetowany. Czy to jest wina zmiany pinów dataport i controlport? Zakładałem, ze można dać je dowolne tylko tak aby piny controlport były z jednego portu uC i tak samo z dataport ale, które port to wszystko...
Witam, Środowisko - AVR Studio 4 Mam problem z nie działającym wyświetlaczem LCD. Prosty program , który kompiluje się poprawnie. /* Szkielet prostego programu dla avr-gcc */ #define F_CPU 16000000UL //atmega32 #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include "HD44780.h" int main(void) {...
Witam, Moja przejściówka USB - RS232 okazała się być jakimś chińskim szajsem więc nie mogę chwilowo sprawdzić poprawności kodu. Czy ktoś mógłby rzucić okiem i stwierdzić czy poniższy kod ma szansę funkcjonować? ATmega jedynie odbiera jeden bajt po RS'sie i w zależności od tego czy jest to 1 czy 0, ustawia cały port C w stan aktywny bądź niski. Mikrokontroler:...
Problem polega na tym , że zmienna nrzn działa poprawnie tylko w ciele funkcji przerwania, w pętli programu już nie. Jej wartość wynosi 0 poza przerwaniem. //Biblioteki #include <avr\io.h> #include <util/delay.h> #include <avr\pgmspace.h> #include <avr/signal.h> #include <avr/interrupt.h> //Zmienne unsigned char znak [10]...
1. Centronics w praktyce nie wymaga ACK, a nieskuteczne testowanie ACK może sprawiać kłopoty. 2. Masz odwrócone definicje STROBE:DOWN i STROBE_UP - zamień. 3. Poprawniej będzie: [syntax=c]void wyslijznak (const int c) { PORTC = c; //wyprowadzenie danych while (BUSY); //testowanie stanu BUSY,oczekiwanie na stan niski STROBE_DOWN; //ujemny impuls na linii...
Witam Kupiłem robota klasy mini sumo. Zawiera on 2 mikrokontrolery Atmega8 służącą do obsługi dalmierzy, oraz Atmega32, która jest główną jednostką. Atmegi są połączone ze sobą przez SPI. Atmega 8 jest już zaprogramowana i wysyła przez SPI 2 bajty ( 1 dalmierz lewy, 2 dalmierz prawy), jeżeli obiekt jest w odległości 10cm to wysyła bajt o wartości 10....
Witam Mam problem przy kompilacji prostego programu. Posiadam zestaw startowy ATB 1.01 Atnela A oto program: #include <avr/io.h> #include <util/delay.h> #define LED_PIN (1<<PC7) #define LED_ON PORTC &= ~LED_PIN #define LED_OFF PORTC |= LED_PIN #define LED_TOG PORTC ^= LED_PIN int main (void) { DDRC = LED_PIN;...
może ja czegoś nie rozumiem ale ktoś podpowie dlaczego tak się dzieje bo to tu będzie problem kod nadajnika : https://obrazki.elektroda.pl/8965366800_... jeśli zmienie na 100 mil to : https://obrazki.elektroda.pl/1814768300_... Jeśli zmienię program odbiornika bez używania przerwania to timer0 pracuje poprawnie tak...
atmega32 portc portc atmega8 wysoki portc
oporność głośnik instalacja comport podłączenie wzmacniacza smartfona
układ gasikowy stycznika politechnika poznańska
Wentylator chłodzący nie włącza się: diagnostyka i rozwiązania Iveco Daily odpala tylko na plaku - przyczyny i rozwiązania