Znalezione w szufladzie: AtMega32 (+DDS)

Robiąc porządki w szufladzie niespodziewanie natrafiłem na zapomnianą AtMega32 – 16PU.

AtMega32
AtMega32

No smok straszny, nóżek mnóstwo (DIP40). Nawet nie pamiętam, kiedy ją kupiłem – mogło to być naście lat temu. Nie myśląc długo, postanowiłem sobie zrobić z niej takie low-cost arduino.

Wszystkie informacje znajdziecie na doskonałym Gammon Forum. Zwróćcie jednak uwagę, że podane tam instrukcje odnoszą się do AtMega328, nie 32. Układy te różnią się rozkładem pinów!

Idea

  • Znalazłem w szufladzie AtMega32, chciałbym ją uruchomić;
  • Podłączę AtMega na płytce stykowej z minimalnym wymaganym zestawem elementów;
  • Do AtMega za pomocą kilku kabelków podłączę UNO (łacznie z zasilaniem);
  • Na UNO załaduję projekt, który posługując się interfejsem SPI spróbuje uruchomić AtMega32

Co potrzebuję?

Lista jest krótka:

  • Znalezione przypadkowo AtMega32
  • Działające UNO
  • (opcja) Generator funkcyjny
  • Płytka stykowa
  • 9 zworek
  • Rezystor 10kom
  • 7 kabelków stykowych męsko-męskich

Podłączenie

Piny AtMega różnią się od 328. Dokładną instrukcję znajdziecie tutaj. Na potrzeby tego postu wystarczy rozpiska pinów:

AtMega32 - piny
AtMega32 – piny
Pin UNO Podłącz do Mega32
5v Vcc (10), AVcc (30)
GND GND (11 i 31)
D10 RESET, podciągnięty przez rezystor 10k do Vcc
MOSI: D11 6
MISO: D12 7
SCK: D13 8
D9 13: XTAL1: wejście zegarowe
AtMega32 na płytce stykowej
AtMega32 na płytce stykowej

Projekt na UNO

Na uno wgrałem Atmega_Board_Detector, który możecie znaleźć na Forum Gammon. Postępujcie jak z każdym projektem: pobierzcie archiwum, rozpakujcie je i uruchomcie projekt z podkatalogu  arduino_sketches-master\Atmega_Board_Detector.

Zegar

Kluczowy do uruchomienia kontrolera jest zegar. Jeżeli kupicie surowego chipa z fabryki, najprawdopodobniej jego fusy ustawione są na wewnętrzny rezonator. Taki układ nie wymaga dodatkowych komponentów i powinien wystartować bez problemów. W trakcie praktycznego używania fusy są najczęściej zmieniane na – bardziej dokładne, skompensowane temperaturowo – źródła zewnętrzne, jak kryształ. Jeżeli fusy zmieniono, a na XTAL1 nie ma odpowiedniego sygnału – AtMega nie ruszy.

Używany tutaj projekt z forum Gammon generuje sygnał zegarowy na pinie D9 UNO. Podłączcie go do XTAL1 (pin13) Mega i układ powinien ruszyć. Ja do tego zadania użyłem ostatnio nabytego generatora DDS.

ATmega i generator funkcyjny
ATmega i generator funkcyjny

Przed podaniem sygnału zegarowego Mega nie było zbyt rozmowne:

Atmega chip detector.
Written by Nick Gammon.
Version 1.13
Compiled on May 9 2015 at 22:37:46 with Arduino IDE 10603.
Attempting to enter programming mode ......................................................
Failed to enter programming mode. Double-check wiring!

Po podaniu sygnału 2MHz:

Atmega chip detector.
Written by Nick Gammon.
Version 1.13
Compiled on May 9 2015 at 22:37:46 with Arduino IDE 10603.
Attempting to enter programming mode ...
Entered programming mode OK.
Signature = 1E 95 02
Unrecogized signature.
LFuse = EF
HFuse = 99
EFuse = EF
Lock byte = FF
Clock calibration = AC
First 256 bytes of program memory:
0: 0C 94 55 00 0C 94 72 00 0C 94 72 00 0C 94 72 00

atega_funcGen_1
Wygląda na to, że projekt nie obsługuje mojej AtMega32. Nie szkodzi – podłączenie przez programator ICSP nie jest już żadnym problemem.
Mission completed!

Źródła

Wspomniane forum z projektem przerabiającym UNO na programator ICSP
Dokumentacja AtMega32
Dokumentacja AtMega328

2 myśli w temacie “Znalezione w szufladzie: AtMega32 (+DDS)”

Dodaj komentarz