Skocz do zawartości

Microboard M328-pierwszy program


cybermech

Pomocna odpowiedź

Witam, niedawno kupiłem płytkę Microboard M328(Atmega328-P) i postanowiłem wgrać najprostszy program z książki Mirosława Kardasia-migająca dioda led (musiałem zmienić PC7 na PC5). Diodę podłączyłem w następujący sposób: PC5-katoda-anoda-rezystor-5v. Problem w tym, że dioda świeci zamiast migać. (Korzystam z USBASP, ECLIPSE, zasilanie z programatora) Gdzie może być błąd? Jak sprawdzić czy płytka jest dobra? Z góry dzięki za pomoc.

 */
#include <avr/io.h>
#include <util/delay.h>


// definicje dla preprocesora
#define LED_PIN (1<<PC5)			// definicja pinu do którego podłączona jest dioda
#define LED_ON PORTC &= ~LED_PIN	// makrodefinicja – załączenie diody
#define LED_OFF PORTC |= LED_PIN	// makrodefinicja – wyłączenie diody
#define LED_TOG PORTC ^= LED_PIN	// makrodefinicja – zmiana stanu diody

// ********************************************************* 1-sza wersja
int main(void)
{
// ****** inicjalizacja *********
DDRC |= LED_PIN;		// kierunek pinu PC5 – wyjściowy

// ****** pętla główna programu  *********
while(1)
{
	LED_ON;				// zapal diodę
	_delay_ms(1000);	// oczekiwanie 1s (1000ms)
	LED_OFF;			// zgaś diodę
	_delay_ms(1000);	// oczekiwanie 1s
}
}
Link do komentarza
Share on other sites

Przede wszystkim napisz jak podłączyłeś tę diodę naprawdę. Bo jeśli jest tak jak mówisz (anoda do portu, katoda przez opornik do plusa), to nie powinna świecić w ogóle. Płytka ma na pokładzie stabilizator +5V i z tego co widzę na schemacie nie powinna być zasilana z zewnętrznych 5V podawanych np. na pin. 2 programatora. Jest to raczej wyjście do wykorzystania przez inne układy - proste stabilizatory nie lubią zasilania "od tyłu". Tak więc najbezpieczniej byłoby zasilać ją z 7-12V podanych na pin VIN (to piszą w Botlandzie na stronie produktu, nie wspominając o opcji czystych 5V) a programator zezworkować tak, by nie zasilał programowanego procesora, może natomiast swobodnie z otrzymanych 5V korzystać - jeśli potrzebuje. Czy symbol PC5 ma na pewno wartość 5 a nie np. 0b00100000?

Link do komentarza
Share on other sites

Co chcesz przełączać na VIN bo nie bardzo rozumiem? Czyżby diodkę? Nigdy więcej nie rób takich rzeczy bezmyślnie zanim nie pomyślisz lub nie popytasz kolegów. Gdyby Twoja płytka była zasilana prawidłowo jak nakazuje producent (tj. np. z 12V podanych na VIN) to po przełączaniu anody diody LED na VIN prawdopodobnie miałbyś już spalony pin procesora.

Czy mógłbyś się odnieść do tego co napisałem o obecności stabilizatora i poprawnym zasilaniu tej płytki?

Nie obchodzą mnie napisy na płytce. PC5 jest użytym przez Ciebie symbolem w programie. Musi mieć wartość 5 żeby symbol LED_PIN miał wartość 0x20 i był prawidłową maską dla operacji na rejestrach portów. Czy tak jest?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Acha, czyli niczego nie zrozumiałeś. Przecież pisałem Ci, że zasilanie tej płytki ze złącza programatora nie jest dobrym pomysłem. Masz jakieś kłopoty z czytaniem? Z czego zasilasz swój układ teraz? Jakim napięciem? Masz jakiś miernik? Mierzyłeś napięcie na pinach Vcc procesora? Przestań pleść o taktowaniu, zacznij od podstaw albo najlepiej odłóż tę płyteczkę na półkę (bo za chwilę będzie nadawała się do kosza) i na spokojnie przemyśl to co robisz.

Link do komentarza
Share on other sites

Nie, jeśli na pinie 5V jest 5V to OK - nie musisz upewniać się, że ścieżki na płytce są dobre.

Nie możesz płytki zasilać z programatora - czy zmieniłeś zworki (lub cokolwiek co tam masz) na nim?

Tym bardziej nie możesz zasilać jej z dwóch źródeł na raz: programatora i zasilacza podłączonego do VIN.

Po tym jak płytka NIE jest zasilana z programatora, możesz podłączyć zasilacz wyłącznie do VIN. Rekomendowane napięcie to 7-12V. Stabilizator 78M05 musi mieć margines min. 2V żeby poprawie zrobić 5V.

Gdy powyższe warunki będą spełnione i upewnisz się raz jeszcze, że na pinach 5V jest rzeczywiście 5V±0.1V, zmień dla pewności linię w kodzie na:

#define LED_PIN 0x20

Czy Twój programator poprawnie zapisuje kod do pamięci programu? Czy masz włączoną weryfikację? Czy dostajesz potwierdzenie prawidłowego zapisu?

Po programowaniu/resecie procesora wszystkie porty są domyślnie wejściami i gdyby procesor był np. niezaprogramowany, diodka nie powinna świecić. Zrób taką próbę: skasuj FLASH bez wgrywania jakiegokolwiek kodu. Jeśli diodka będzie świecić, masz problem z montażem (zwarcie?) lub uszkodzony pin procesora.

Link do komentarza
Share on other sites

Chyba ten pin jest uszkodzony. Zmiana w kodzie nie pomogła (dioda miga z dużą częstotliwością niezależnie od zmian w kodzie). Programator używałem wcześniej więc raczej jest dobry. Po zakończeniu zapisu otrzymuję powiadomienie.

Link do komentarza
Share on other sites

Jeśli IDE masz ustawione 16MHz to wszelkie niezgodności z rzeczywistym taktowaniem procesora skutkowałyby tylko wolniejszym niż zakładany 1Hz mruganiem, bo ATmega i tak szybciej nie umie a domyślnie przychodzi od ATMELa z ustawieniem 1MHz. Wtedy mrugałoby raz na 16 sekund. Prawdopodobnie jednak producent płytki ustawił taktowanie na zewnętrzny kwarc 12MHz choć jest też 50% szans, że dostarcza płyteczki z "gołym" procesorem, czyli taktowanym z wewnętrznego generatora 1MHz i żeby odpalić kwarc trzeba przestawić fuse bity. Właściwie ich sprawdzenie powinno być pierwszą czynnością po podłączeniu do programatora. Dziwię Ci się, że tego nie zrobiłeś i że nawet nie zmieniłeś ustawień środowiska IDE na 1 lub 12MHz - bo raczej tylko te dwie opcje wchodzą w grę.

W każdym razie mruganie diodki świadczy o tym, że pin jest raczej dobry. Moim zdaniem pachnie mi to wciąż problemami z zasilaniem, np. jest tak słabe, że procesor rusza ale zapalenie diodki (jaki masz opornik?) powoduje zapaść poniżej 4.5V i RESET procesora, ponowny restart, zapalenie diodki itd... To jak w końcu masz teraz to zasilanie zrobione, ale już tak dokładnie?

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.