Atmega16 - programuje się, ale nie działa.

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
patyk12343
-
Posty: 5
Rejestracja: 28 lut 2010, 10:37
Lokalizacja: Z-ne

Atmega16 - programuje się, ale nie działa.

Post autor: patyk12343 » 28 lut 2010, 10:39

Witam!

Męczę się już od paru dni nad tą atmegą16. Podłączam ją w ten sposób:

Pin 9 (RESET) => 10kOhm => VCC programatora
Pin 9 (RESET) => 100 nF => GND programatora (przycisk)

Pin 10 (VCC) => 100 nF => VCC programatora
Pin 11 (GND) => 100 nF => GND programatora
Obrazek

Pin 30 (AVCC) => VCC programatora
Pin 31 (GND) => 100nF => GND programatora
(Podobnie jak na obrazku powyżej.)

Pin 32 (AREF) => 100nF => GND programatora

Potem podpinam programator (USBasp):

Pin 6 (MOSI) => MOSI programatora
Pin 7 (MISO) => MISO programatora
Pin 8 (SCK) => SCK programatora
Pin 9 (RESET) => RST programatora

VCC programatora podłączyłem do VCC układu, to samo z GND.

Potem dołożyłem diodę (sprawdzałem osobno - działa):

PA0 (krótsza nóżka diody) => 1kOhm => VCC układu.

Piszę program w C:

Kod: Zaznacz cały

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

int main(void) 
{ 
 DDRA = 0xFF; 
  
  

 while(1) 
 { 
  
  PORTA = 0x00; 

 } 
  
}
Wysyłanie programu przez WinAVR bez błędu:

Kod: Zaznacz cały

> "make.exe" program
avrdude -p atmega16 -P usb -c USBasp    -U flash:w:led.hex 

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9403
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "led.hex"
avrdude: input file led.hex auto detected as Intel Hex
avrdude: writing flash (140 bytes):

Writing | ################################################## | 100% 1.03s

avrdude: 140 bytes of flash written
avrdude: verifying flash memory against led.hex:
avrdude: load data flash data from input file led.hex:
avrdude: input file led.hex auto detected as Intel Hex
avrdude: input file led.hex contains 140 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.82s

avrdude: verifying ...
avrdude: 140 bytes of flash verified

avrdude done.  Thank you.


> Process Exit Code: 0
> Time Taken: 00:03
Jednak dioda się nie świeci... Docelowo chciałem sterować uC wyświetlaczem LED, jednak skoro nie mogę zapalić jednej diody to raczej będzie trudne. Dlatego proszę o pomoc.


Programator działa, ponieważ wcześniej programowałem nim atmegę8 i działała.

Z góry dziękuję za odpowiedzi
Patyk12343

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 28 lut 2010, 11:27

Wypadałoby i AVCC podłączyć.

patyk12343
-
Posty: 5
Rejestracja: 28 lut 2010, 10:37
Lokalizacja: Z-ne

Re: Atmega16 - programuje się, ale nie działa.

Post autor: patyk12343 » 28 lut 2010, 11:31

patyk12343 pisze:
Pin 30 (AVCC) => VCC programatora
Pin 31 (GND) => 100nF => GND programatora
(Podobnie jak na obrazku powyżej.)
To o to chodzi?

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 28 lut 2010, 11:36

Ups, nie zauważyłem :). Sprawdź woltomierzem jaki masz stan na tej nodze. Jak 0 to powinno świecić. Chyba że pomyliłeś anode z katodą w diodzie.
Ostatnio zmieniony 28 lut 2010, 11:49 przez snow, łącznie zmieniany 1 raz.

patyk12343
-
Posty: 5
Rejestracja: 28 lut 2010, 10:37
Lokalizacja: Z-ne

Post autor: patyk12343 » 28 lut 2010, 11:40

Sęk w tym, że takowego nie posiadam. A po obróceniu dioda dalej nie świeci...

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 28 lut 2010, 11:45

Spróbuj tak:

Kod: Zaznacz cały

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

int main(void)
{
 DDRA = 0xFF;
 
 PORTA = 0x00;

 while(1)
 {
 
 }

return 0; 

}

patyk12343
-
Posty: 5
Rejestracja: 28 lut 2010, 10:37
Lokalizacja: Z-ne

Post autor: patyk12343 » 28 lut 2010, 11:47

Działa! Dziękuję serdecznie i miłej niedzieli życzę :)

EDIT: Chyba znów mam problem... wgrałem program, który poradził mi użytkownik z innego forum:

Kod: Zaznacz cały

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

int main(void) 
{ 
 DDRA = 0xFF;      // all o/p's 
 while(1) 
 { 
  PORTA = 0xFF;     // all LEDs off 
  _delay_ms(500); 
  PORTA = 0x00;     // all LEDs on 
  _delay_ms(500); 
 } 
  
}
Wgrało się, mruga. Lecz gdy chcę wgrać Pański, to dioda dalej mruga zamiast świecić ciągle...

EDIT2: Już działa, zapomniałem wykonać Make Clean:) Jeszcze raz serdecznie dziękuję:)

ODPOWIEDZ