Vývojová deska ATMEL včetně AVR ATmega16 v2
(Rozdíly mezi verzemi)
(→Na desce modulu je:) |
|||
Řádka 20: | Řádka 20: | ||
==Na desce modulu je:== | ==Na desce modulu je:== | ||
[[Soubor:ATmega32-logo.jpg|120px|link=AVR|AVR]] | [[Soubor:ATmega32-logo.jpg|120px|link=AVR|AVR]] | ||
− | * Mikrokontrolér: [[AVR]] ATMEGA16 16PU | + | * Mikrokontrolér: [[AVR]] ATMEGA16 16PU (ATmega32) |
* Quartz rezonátor: 16MHz | * Quartz rezonátor: 16MHz | ||
* Tlačítko RESET | * Tlačítko RESET | ||
Řádka 46: | Řádka 46: | ||
* USB-RS232 - postaven na systému FR232RL | * USB-RS232 - postaven na systému FR232RL | ||
* Napájecí zdroj (usměrňovač most, filtr kapacitní, stabilizátor 7805 | * Napájecí zdroj (usměrňovač most, filtr kapacitní, stabilizátor 7805 | ||
− | * 132 podložky pro vlastní potřebu - univerzální deska: | + | * 132 podložky pro vlastní potřebu - univerzální deska: |
==Fotografie:== | ==Fotografie:== |
Verze z 31. 1. 2013, 17:44
Univerzální modul je vhodný pro výuku programování mikroprocesorů ATMEL řady AVR řady.
Obsah |
Na desce modulu je:
- Mikrokontrolér: AVR ATMEGA16 16PU (ATmega32)
- Quartz rezonátor: 16MHz
- Tlačítko RESET
- Konektor pro programování ISP
- Potenciometr pro napětí Vref
- Vyvedení všech portů mikroprocesoru
- HD44780 2x16 LCD s podsvícením
- LCD displej na konektoru - možnost výměny
- Nastavení kontrastu displeje LCD
- MMC / SD karta s vyhazovačem
- Multiplexní 7-segment LED 4ks
- LED 8 ks
- 8ks tlačítka mikrospínače klávesnice.
- Čtyři potenciometry pro nastavení napětí kapaliny 0-5V
- Výkonové tranzistory s otevřeným kolektorem (8 výstupů) ULN2803
- Reproduktor - bzučák
- Digitální teploměr DS1820 1-wire
- TSOP4836 infračervený přijímač
- Hodiny reálného času PCF8583
- I2C sběrnice s restorami 4K7
- Sériové paměti EEPROM 24C16
- Převodník RS485 - SN75176
- Baterie - baterie CR232
- USB - možnost napájení modulu
- USB-RS232 - postaven na systému FR232RL
- Napájecí zdroj (usměrňovač most, filtr kapacitní, stabilizátor 7805
- 132 podložky pro vlastní potřebu - univerzální deska:
Fotografie:
Postup:
- Bootloader - je program kterým je ATmega naprogramovaný z výroby. Tento firmware umožňuje nahrát vyvíjenou aplikace do paměti Flash pomocí seriové linky USB.
- Konfigurace musí být nastavena propojkami u FT232 Txd<-->PD0 a Rxd<---> PD1
- Nainstalujte si program MegaLoad
- Po spuštění vyberte soubor formátu *.hex, kterým chcete naprogramovat MCU, vyberte příslušný port (např. Port11) a nastavte přenosovou rychlost 57 600bps. Pozn. Správný port najdete ve WIN ve správci zařízení v řádku Porty (COM a LPT)
- K naprogramování mikroprocesoru, stiskněte tlačítko RESET
www:
Prodej: Gotronik.pl Carpro.cz
Ukázkové programy:
Blikání LED
Řízení LED podle tlačítka
#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <util/delay.h> void delay(int); int main() { DDRB = (1<<PB5); // put PortB bit 5 as output GIMSK |= (1<<INT0); // Enable INT0 External Interrupt MCUCR |= (1<<ISC01); // Falling-Edge Triggered INT0 sei(); // Enable Interrupts for(;;){ // nothing happens. } } SIGNAL(SIG_INTERRUPT0) { // this function is called when INT0 bit (PD2) is interrupted. // You can also use INTERRUPT() function instead. // SIG_INTERRUPT0 -> INT0 (PD2) // SIG_INTERRUPT1 -> INT1 (PD3) // While Button is pressed, LED is on PORTB |= (1<<PB5); // Put PortB bit 5 HIGH delay(1000); PORTB &= ~(1<<PB5); // Put PortB bit 5 LOW delay(1000); } void delay(int ms) { ms /= 100; char i; for(i = 0; i < ms; i++){ _delay_ms(100); // max is 262.14 ms / F_CPU in MHz } }
zdroj informací: Control LED by pressing button (using interrupts function in AVR)
Počítadlo impulsů
Chyba při vytváření náhledu: Soubor patrně chybí: /var/www/wiki.sps-pi.cz/www/images/2/27/VYV50_pocitadlo_impulsů.jpg
/* * impulzy.c * * Created: 13.4.2012 10:28:29 * Author: Novotný Jan D4 2012 * Brána A bity 3 -0 řídí Anody * Brána C řídí jednotlivé segmenty v pořadí: -GFEDCBA na bitech 7 až 0 (7. bit neobsazen) * Vstup počítadla 0.bit na PORTB * Reset 2. bit na bráně PORTD */ #define F_CPU 16000000 #define SETBIT(BRANA, BIT) ((BRANA) |= (1<<(BIT))) #define CLRBIT(BRANA, BIT) ((BRANA) &= ~(1<<(BIT))) #define NEGBIT(BRANA, BIT) ((BRANA) ^= (1<<(BIT))) #define TESTBIT(BRANA, BIT) ((BRANA) & (1<<(BIT))) #include <avr/io.h> #include <avr/interrupt.h> #include <stdint.h> #include <stdlib.h> void napiscislo(uint8_t numero); volatile uint32_t pocet=0; volatile uint8_t digits[4]={0,0,0,0}; void LED_Print(uint32_t num); int main(void) { DDRC=0xff; DDRA=0xff; PORTC=0xff; PORTA=0xff; SETBIT(PORTB,PB0); SETBIT(PORTD,PD2); MCUCR|=(1<<ISC01); GICR|=(1<<INT0); TCCR1B|=(1<<WGM12)|(1<<CS11); TCCR0|=(1<<CS01); TIMSK|=(1<<TOIE0)|(1<<OCIE1A); OCR1A=19999; sei(); while(1) { } } void napiscislo(uint8_t numero) { if (numero==1) PORTC=0b11111001; else if (numero==2) PORTC=0b10100100; else if (numero == 3) PORTC=0b10110000; else if (numero==4) PORTC=0b10011001; else if (numero==5) PORTC=0b10010010; else if (numero==6) PORTC=0b00000010; else if (numero==7) PORTC=0b11111000; else if (numero==8) PORTC=0b10000000; else if (numero==9) PORTC=0b10010000; else if (numero==0) PORTC=0b11000000; } void LED_Print(uint32_t num) { cli(); uint8_t i=0,j; while(num) { digits[i]=num%10; i++; num=num/10; } for(j=i;j<4;j++) digits[j]=0; sei(); } ISR(INT1_vect) { pocet=0; } ISR(TIMER1_COMPA_vect) { static char port=0; port*=2; if (!TESTBIT(PINB,PB0)) port+=1; if(port==0x07) pocet++; LED_Print(pocet); /* if (pocet==10) pocet=0;*/ } ISR(TIMER0_OVF_vect) { static uint8_t display=0; PORTC=0xff; PORTA=0x00; switch (display) { case 4: display=1; PORTA=0b1110; napiscislo(digits[0]); break; case 1: display=2; PORTA=0b1101; napiscislo(digits[1]); break; case 2: display=3; napiscislo(digits[2]); PORTA=0b1011; break; case 3: display=4; PORTA=0b0111; napiscislo(digits[3]); break; default: display=4; } }