This is the version 5e41baf4ce4a3041a3526b89 from 2020-02-10 20:20:04 comment: 'stuff...'
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:
- gcc-avr
- avr-libc
- avrdude
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
- -p m8 wählt den ATMega8 aus
- -c usbtiny wählt den ISP-Stick zum Senden aus
- 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 D5 -|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