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

Pins ed

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)

Categories: Computer