AVR ATMega ed

Mikrocontroller programmieren... hier ein ATMega8a über Linux.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Voraussetzungen ed

ISP-Stick ed

http://www.ehajo.de/baus%C3%A4tze/programmieradapter/avr-isp-stick.html

(unter Links gibt es Anleitungen)

Software ed

zu installieren:

make ed

...noch nicht angeschaut... einfach standard Makefile genommen... erzeugt eine .hex Datei

beschreiben ed

sudo avrdude -p m8 -U flash:w::i -P usb -c usbtiny

oder (usbtiny)
sudo make flash
sudo make fuses

Pins ed

pins...
  C6 -|1  U 28|- C5 / ADC5
  D0 -|2    27|- C4 / ADC4
  D1 -|3    26|- C3 / ADC3
  D2 -|4    25|- C2 / ADC2
  D3 -|5    24|- C1 / ADC1
  D4 -|6    23|- C0 / ADC0
 VCC -|7    22|- GND
 GND -|8    21|- AREF
  B6 -|9    20|- AVCC
  B7 -|10   19|- B5
  B5 -|11   18|- B4
  D6 -|12   17|- B3
  D7 -|13   16|- B2
  B0 -|14   15|- B1

digitale Ausgänge ed

#include <avr/io.h>

int main (void)
{
    DDRB  = 0xFF;
    PORTB = 0x03;
    while(1)
    {
    }
    return 0;
}

Register:

Name	Bits	Bedeutung
DDRA	8	Richtung des PortA (0=Eingang, 1=Ausgang)
DDRB	8	...
DDRC	8	...
DDRD	8	...
PORTA	8	Ausgabe PortA (Pull-Up-Widerstände, falls Eingang)
PINA	8	Eingabe PortA

digitale Eingänge ed

#include <avr/io.h>

int main (void)
{
    DDRB  = 0x00;
    PORTB = 0xff;
    while(1)
    {
       if ((PINB & 0x01) > 0)
       {
       }
    }
    return 0;
}

Register:

Name	Bits	Bedeutung
DDRA	8	Richtung des PortA (0=Eingang, 1=Ausgang)
DDRB	8	...
DDRC	8	...
DDRD	8	...
PORTA	8	Pull-Up-Widerstände an/aus
PINA	8	Eingabe PortA

analoger Eingang ed

Register:

ADCSRA	8	AD Control/Status
 ADEN	1	7) Enable
 ADSC	1	6) Start
 ADFR	1	5) Free Running
 ADIF	1	4) Interrupt Flag
 ADIE	1	3) Interrupt Enable
 ADPS2	1	2) Prescaler (Takt)
 ADPS1	1	1)
 ADPS0	1	0)
ADMUX	8	...
 REFS1	1	7) Referenz Spannung...
 REFS0	1	6) 01 = AVCC
 ADLAR	1	5) Left Adjust
 MUX0-4	1	0-4) PortA Pin Index
ADCW	16	Daten

ein paar Funktionen ed

loop_until_bit_is_set(PIN, BIT)
loop_until_bit_is_clear(PIN, BIT)
_delay_ms(MS)
_delay_us(US)

USB ed

faster clock ed

12MHz oscillator with 2x 27pF capacitors between ground and B6,B7 pins (9,10):

write fuses
avrdude -p m8 -P usb -c usbtiny -U hfuse:w:0xdb:m -U lfuse:w:0xef:m

Categories: Computer