IC2
können über die Anschlüsse LAST[7..0] externe Verbraucher, wie Lampen oder Motorwicklungen angeschlossen werden. Je Bit von Port B kann eine separate Last geschaltet werden. Diese sind aufgrund des offenen Kollektors von IC2
bei Ausgabe einer 1 eingeschlatet und bei 0 ausgeschaltet. Auf dem Herkunftsboard AVR-Ctrl sind parallel zu diesen Ausgängen LEDs angeschlossen. Somit kann man auf diesem Board die Zustände der geschalteten Lasten kontrollieren (siehe auch Beispielprojekt: ledband).
Schaltplan angeschlossener Lasten
Die Bibliothek muß intern mit den folgenden Parametern übersetzt werden. Dies kann durch Benutzung der originalen Boardkonfiguration über --enable-board=avrctrl-8535-8mhz
erreicht werden:
AVRHAL_LIB_LED_PORT="PORTB
"AVRHAL_LIB_LED_PORT_DDR="DDRB
"AVRHAL_LIB_LED_PORT_IN="PINB
"AVRHAL_LIB_LED_OFF="0
"
#include <avrhal/delay.h>
#include <avrhal/led.h>
enum {
UP,
DOWN
} direction;
int main(void) { uint8_t led = 0x01; led_init();
while (1) { led_put(led); delay_ms(100); /* direction state machine */ switch (direction) { case UP: /* count up means * shift left */ led <<= 1; if (!led) { /* change direction */ led = 0x80; direction = DOWN; } break; case DOWN: /* count down means * shift right */ led >>= 1; if (!led) { /* change direction */ led = 0x01; direction = UP; } break; default: break; } } } /* main() */
doc/examples/led
entnommen werden.[avr@host] > avr-gcc -g -O2 -Wall -Wstrict-prototypes -Wa \ -mmcu=at90s8535 -DAVRHAL_CONFIG_avrctrl_8535_8mhz \ -c -o main.o main.c
[avr@host] > avr-gcc -Wl,-Map=led.map,--cref -mmcu=at90s8535 \ -o led.out main.o -lavrhal-avrctrl-8535-8mhz
[avr@host] > avr-objcopy -O binary -R .eeprom led.out led.out-rom.bin [avr@host] > avr-objcopy -O ihex -R .eeprom led.out led.out-rom.hex [avr@host] > avr-objcopy -O srec -R .eeprom led.out led.out-rom.s19
S00E00006C65642D726F6D2E73313936 S113000010C02AC029C028C027C026C025C024C0CB S113001023C022C021C020C01FC01EC01DC01CC0E0 S11300201BC011241FBECFE5D2E0DEBFCDBF10E060 S1130030A0E6B0E0ECEBF0E003C0C89531960D9279 S1130040A036B107D1F710E0A0E6B0E001C01D92E0 S1130050A236B107E1F701C0D3CFCFE5D2E0DEBFCE S1130060CDBFC1E08FEF87BB01E010E0C8BB84E6E1 S113007090E018D08091600090916100009751F059 S11300800197A1F7C69591F7C1E010926100109213 S11300906000ECCFCC0F51F7C0E8109361000093DF S11300A06000E4CFE82FF92F309639F0A0EDB7E0E7 S10F00B01197F1F7A8953197C9F708954E S9030000FC
[avr@host] > avr-objdump -x led.out > led.inf [avr@host] > avr-size -d led.out > led.siz [avr@host] > avr-size -x led.out >> led.siz
text data bss dec hex filename 188 0 2 190 be led.out text data bss dec hex filename 0xbc 0x0 0x2 190 be led.out