BÅ‚Ä…d w ATMega88

ATMega88 Mikrokontroler ATMega88 jest według mnie jednym z najbardziej udanym konstrukcyjnie układem firmy Atmel. Jest mały i wręcz idealny do zastosowań w średnio skomplikowanych aplikacjach. Posiada wewnętrzny oscylator RC, dzięki czemu może pracować praktycznie bez elementów zewnętrznych (gdy nie jest wymagana wysoka stabilność częstotliwości pracy). Wyposażony w sprzętowe interfejsy: I2C (TWI w nomenklaturze Atmela), SPI, USART pozwala na prostą implementację komunikacji z otoczeniem. Przerwania zewnętrzne dostępne praktycznie na każdym pinie dają sporą dowolność przy projektowaniu płytki drukowanej docelowej aplikacji.

Pewnie można wymienić jeszcze wiele zalet wspomnianego układu, ale czas na łyżkę dziegciu.

Ostatnio tworzyłem program, który korzystał z watchdoga będącego wewnętrzną częścią układu ATMega88. W trakcie testów okazało się, że po zresetowaniu układu przez watchdog, mikrokontroler nie chce wystartować – potrzebne jest odłączenie i ponowne podłączenie zasilania, ponieważ zewnętrzny reset nie pomagał. Długo szukałem błędu we własnej aplikacji, aż w końcu doszedłem do wniosku, że wina nie leży po mojej stronie. Okazało się, że mikrokontroler, po resecie wywołanym przepełnieniem licznika watchdoga, nie wyłączał układu watchdog, a dodatkowo ustawiał czas jego przepełnienia na najmniejszą wartość (około 15ms). Z tego powodu układ ciągle się resetował i aplikacja nie startowała (ściślej: startowała na 15ms). Mało tego, pracując w WinAVR i próbując wyłączyć watchdoga w funkcji main() problem nie znikał. I dlatego trochę zniechęciłem się do tego układu.

Na szczęście istnieje rozwiązanie, choć mam żal do projektantów układu, że popełnili taką gafę.

Aby skutecznie wyłączyć watchdoga w aplikacji pisanej pod avr gcc należy dodać następujący kod:

void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3"))); 
void get_mcusr(void) 
{ 
	MCUSR = 0; 
	wdt_disable(); 
}

Pisząc w assemblerze, wystarczy gdzieś na początku wykonywania programu wyłączyć ten nieszczęsny watchdog.

Komentarze (1) dodane przez admin October 16, 2008 (11:27AM)

Układy FPSLIC™ (AVR i FPGA)

FPSLIC Układy AT94K oraz AT94S są układami w których zintegrowano mikrokontroler AVR, pamięć oraz logikę programowalną. Producent określa te scalaki jako System Level Integrated, czyli zintegrowane na poziomie systemu. Połączenie takie daje możliwość szybkiego projektowania aplikacji złożonej z mikrokontrolera, pamięci oraz dodatkowych, dowolnych peryferiów (implementowanych w logice programowalnej przez użytkownika).

Rodzina układów FPSLIC Secure (AT94S) oferuje zabezpieczenie przed skopiowaniem aplikacji zrealizowane poprzez zintegrowanie w strukturze szeregowej pamięci konfiguracyjnej.

Dostępne układy FPSLIC posiadają:
  • od 5K do 40K bramek logicznych typu AT40K,
  • 8-bitowy rdzeÅ„ mikrokontrolera AVR (20 MIPS),
  • wiele peryferii
  • do 36KB pamiÄ™ci SRAM.
Jako pamięci konfiguracyjne do układów FPSLIC wykorzystywane są AT17LV256, AT17LV512 oraz AT17LV010. Są to układy EEPROM stosujące komunikację szeregową do konfigurowania jednego lub więcej układów FPSLIC. Pamięć może być także wykorzystana do przechowywania danych użytkownika.

Oprogramowanie projektowe FPSLIC (System Designerâ„¢) zawiera zmodyfikowanÄ… wersjÄ™ oprogramowania rozwojowego FPGA oraz AVR studio.
Obecnie dostępna jest wersja 3.1.

Komentarze (0) dodane przez admin October 9, 2008 (8:11AM)

ATtiny167 - mikrokontroler do zastosowań motoryzacyjnych (sieć LIN)

AVR automotive LIN (Local Interconnect Network) jest tanim rozwiÄ…zaniem sieciowym stosowanym w aplikacjach automotive (motoryzacja).

ATtiny167 jest pierwszym układem optymalizowanym do pracy w trybie slave sieci LIN. W połączeniu z transceiverem LIN typu ATA662x lub ATA666x stanowi kompletne rozwiązanie dla czujników skrzyni biegów, systemu wydechowego, pomp itp.

Wiele podsystemów automotive typu: centralny zamek, sterowanie oknami, wycieraczki, oświetlenie, czujniki słońca i deszczu - są połączone za pomocą sieci LIN. Potrzebny był kontroler LIN wyposażony w przetwornik analogowo-cyfrowy do konwersji sygnałów z czujników na postać cyfrową, 16-bitowy kanał PWM do kontroli sterowników silników typu ATA6831/32 lub ATA6223.

ATtiny167 posiada sprzętowy LIN UART z automatyczną synchronizacją prędkości w trybie slave. Przetwarzanie ramki wymaga tylko dwóch przerwań: jedno sygnalizujące obecność identyfikatora LIN, drugie sygnalizujące zakończenie nadawania lub odbierania pakietu.

Cechy ATtiny167:
  • 16KB ISP Flash,
  • 512B EEPROM,
  • 512B SRAM,
  • 6 lini wejscia/wyjÅ›cia ogólnego przeznaczenia,
  • 32 rejestry ogólnego przeznaczenia,
  • jeden licznik 8-bitowy z trybami porównania, jeden 8-bitowy szybki licznik,
  • uniwersalny interfejs szeregowy (USI),
  • kontroler LIN,
  • przerwania zewnÄ™trzne i wewnÄ™trzne,
  • 4-kanaÅ‚owy, 10-bitowy przetwornik analogowo-cyfrowy,
  • programowalny Watchdog taktowany wewnÄ™trznym oscylatorem,
  • trzy programowalne tryby oszczÄ™dzania energii.

Komentarze (0) dodane przez admin August 15, 2008 (1:57PM)

<< Pierwsza < Poprzednia [1 / 3] Następna > Ostatnia >>
MAGICZNY BANER darmowy system wymiany banerów