Skocz do zawartości

ATmega8 - Układ nie reaguje


Skowron93

Pomocna odpowiedź

Witam.

Dziś w końcu przyszły części mojego małego programowalnego układziku, poskładałem idealnie według poniższego schematu:

Zaprogramowałem kodem:

#include <avr/io.h>
#include <util/delay.h>
#define B(x) (1<<x)

void Zapal( int p1, int p2, int p3 )
{
  if( p1 == 1 ) PORTB |= B(0);
  else PORTB &= ~B(0);
  if( p2 == 1 ) PORTB |= B(1);
  else PORTB &= ~B(1);
  if( p3 == 1 ) PORTB |= B(2);
  else PORTB &= ~B(2);

  _delay_ms(1000);
}

int main(void)
{
  DDRB = 0b111;
  while(1)
  {
     Zapal(1,0,0);
     Zapal(1,1,0);
     Zapal(1,0,1);
     Zapal(0,1,0);
     Zapal(0,1,1);
     Zapal(0,0,1);
     Zapal(1,1,1);
  Zapal(0,0,0);
  }
}

I 0 reakcji :/ Wszystko sprawdzałem z milion razy i nic ;/

Może coś nie tak ze schematem? Zrobiłem tak:

-Poskładałem układ

-podłączyłem programator

-Make All

-Make Program

i chyba powinno działać? Mój programator: allegro.pl/programator-usbasp-avr-atmel-isp-tasma-win7x64-pl-i2120160069.html

__________

Komentarz dodany przez: Treker

Link do komentarza
Share on other sites

Zobacz czy w ogóle komputer wykrywa układ.Zalecam wejść w avrdude i wpisać

avrdude -p m8 -c usbasp

Jak wykrywa to zalecam twój kod jest dla mnie trochę za długi jak na migonie diodami:

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>

#include <stdlib.h>
int main (void)
{
DDRD = 0xFF;
PORTB |= _BV(PB0);
PORTB |= _BV(PB1);
PORTB |= _BV(PB2);
}

Jak nie wykrywa to sprawdź czy nie pomyliłeś MOSI z MISO i czy masz reszte sygnałów dobrze podłączone.

Te rezystory 1KΩ powinny być chyba za diodami a nie przed i nie 1K a coś koło 300Ω

Wejście w avr dude:

1.Robisz ikone avrdude.exe na pulpit.

2.Wchodzi w właściwości i w element docelowy z przodu dopisujesz cmd np.cmd H:\AVRDUDE\avrdude.exe

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

Sprawdziłem, wszystko jest podłączone na 100% dobrze.

PORTC |= _BV(PB0) | _BV(PB1) | _BV(PB2)

Po wpisaniu tego Wyskakuje "Nazwa PORTC nie jest rozpoznawana jako polecenie wew. ani zew. Program wykonalny lub plik wsadowy." :/

[ Dodano: 21-02-2012, 17:46 ]

Masz skonfigurowany WinAVR ?

To znaczy?

Link do komentarza
Share on other sites

Zalecam przeczytać:

http://www.forbot.pl/forum/topics20/szybki-start-z-winavr-vt513.htm

Taki kod tam cos namieszałem:

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>

#include <stdlib.h>
int main (void)
{
DDRD = 0xFF;
PORTB |= _BV(PB0);
PORTB |= _BV(PB1);
PORTB |= _BV(PB2);
}
Link do komentarza
Share on other sites

Sprawdzam wszystko po kolei i widzę schemat diody RGB:

led_rgb.jpg

Tę najdłuższą podłączam do minusa a resztę do plusa nie? Bo już głupieje...

[ Dodano: 21-02-2012, 18:18 ]

Weź miernik i zobacz jakie masz napięci za rezystorami (przed diodą)

Nie zaopatrzyłem się w miernik :| Wiem, podstawa, ale niestety nie mam ;/

Link do komentarza
Share on other sites

Na odwrót najdłuższa plus najkrótsza minus.

Ja dałbym opornik 300Ω za diodą bo 1K to zbyt dużo.

Przynajmniej u mnie tak działa.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Na odwrót najdłuższa plus najkrótsza minus.

Ja dałbym opornik 300Ω za diodą bo 1K to zbyt dużo.

Przynajmniej u mnie tak działa.

O kurr...de, działa 😃 Świeci się na czerwono ;D DZIĘKI!!!

[ Dodano: 21-02-2012, 18:36 ]

Ale chwilka... mam tak:

1noga( krótka ) do masy

2( najdłuższa ), 3 i 4 przez rezystory podłączone do portów B 0, 1, 2. Świeci mi się tylko pod portem 1, na czerwono. Mam źle podłączone?

Link do komentarza
Share on other sites

Podłączone dobrze tylko musisz zmieniać stany.Nie mam diody RGB żeby to sprawdzić ale na 3 osobnych diodach działa.

#define F_CPU 1000000L
#include <avr/io.h>
#include <util/delay.h>

#include <stdlib.h>
int main (void)
{
DDRD = 0xFF;
PORTB |= _BV(PB0);
_delay_ms(100);
PORTB ^= _BV(PB0);
PORTB |= _BV(PB1);
_delay_ms(100);
PORTB ^= _BV(PB1);
PORTB |= _BV(PB2);
_delay_ms(100);
PORTB ^= _BV(PB2);
}
Link do komentarza
Share on other sites

Mam tak podłączone, chyba źle. Jeśli zamiast nóżki 1, podłączę nóżkę 2 lub 3 to pali się na niebiesko lub zielono. Może tylko ta najdłuższa nóżka jest plusem, a reszta to minusy?

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!

Gość
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.