Datum:
Hat jemand ein Beispiel (in C) für eine I2C Schnittstelle bei einem ATtiny13? Der Controller soll ein Slave sein.
Datum:
Hallo Christian, ich glaube kaum, daß diese CPU mit ihren 64 Byte RAM sich in C programmieren läßt. GCC unterstützt diese CPU jedenfalls nicht. Außerdem wäre das gesamte I2C- (rsp. TWI-) Protokoll in Software zu implementieren - bloß um wenige Cent gegenüber einer CPU zu sparen, die sowohl C als auch TWI versteht! Grüße Bernhard
Datum:
Der Tiny13 lässt sich wunderbar in C programmieren! Und das "ein paar Cent mehr ausgeben" Argument macht auch nur bei Hobbyanwendung Sinn... Gruß Fabian
Datum:
Bernhard Reichenbach wrote: > Hallo Christian, > ich glaube kaum, daß diese CPU mit ihren 64 Byte RAM sich in C > programmieren läßt. Wieso nicht? Was hat der RAM Verbrauch mit C zu tun?* > GCC unterstützt diese CPU jedenfalls nicht. Vielleicht solltest du deinen GCC mal updaten?* > Außerdem wäre das gesamte I2C- (rsp. TWI-) Protokoll in Software zu > implementieren - bloß um wenige Cent gegenüber einer CPU zu sparen, die > sowohl C als auch TWI versteht! Nimm den Tiny25, der hat wenigstens ein USI. Damit ist es nicht mehr ganz so schwer ein I2C zu programmieren. Aber so komfortabel wie das "echte" I2C Interface in größeren AVRs ist das nicht. *
C:\Documents and Settings\sk>avr-gcc -v
Using built-in specs.
Target: avr
Configured with: ../gcc-4.1.2/configure --prefix=/c/WinAVR --target=avr --enable
-languages=c,c++ --with-dwarf2 --enable-win32-registry=WinAVR-20070525 --disable
-nls --with-gmp=/usr/local --with-mpfr=/usr/local --enable-doc --disable-libssp
Thread model: single
gcc version 4.1.2 (WinAVR 20070525)
C:\Documents and Settings\sk>avr-gcc --target-help
Target specific options:
-mcall-prologues Use subroutines for function prologues and
epilogues
-minit-stack=STACK Use STACK as the initial value of the stack
pointer
-mint8 Use an 8-bit 'int' type
-mmcu=MCU Select the target MCU
-mno-interrupts Change the stack pointer without disabling
interrupts
-mno-tablejump Do not generate tablejump insns
-mshort-calls Use rjmp/rcall (limited range) on >8K devices
-msize Output instruction sizes to the asm file
-mtiny-stack Change only the low 8 bits of the stack pointer
AVR options:
-mmcu=[avr-name] select microcontroller variant
[avr-name] can be:
avr1 - AT90S1200, ATtiny1x, ATtiny28
avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22
avr3 - ATmega103, ATmega603
avr4 - ATmega83, ATmega85
avr5 - ATmega161, ATmega163, ATmega32, AT94K
or immediate microcontroller name.
-mall-opcodes accept all AVR opcodes, even if not supported by MCU
-mno-skip-bug disable warnings for skipping two-word instructions
(default for avr4, avr5)
-mno-wrap reject rjmp/rcall instructions with 8K wrap-around
(default for avr3, avr5)
Known MCU names:
avr1 avr2 avr3 avr4 avr5 avr6 at90s1200 attiny10 attiny11 attiny12
attiny15 attiny28 at90s2313 at90s2323 at90s2333 at90s2343 attiny22
attiny26 at90s4433 at90s4414 at90s4434 at90s8515 at90s8535 at90c8534
at86rf401 *attiny13* attiny2313 attiny261 attiny461 attiny861 attiny24
attiny44 attiny84 attiny25 attiny45 attiny85 atmega603 atmega103
at43usb320 at43usb355 at76c711 atmega48 atmega8 atmega83 atmega85
atmega88 atmega8515 atmega8535 atmega8hva at90pwm1 at90pwm2 at90pwm3
atmega16 atmega161 atmega162 atmega163 atmega164p atmega165 atmega165p
atmega168 atmega169 atmega169p atmega32 atmega323 atmega324p atmega325
atmega325p atmega329 atmega329p atmega3250 atmega3250p atmega3290
atmega3290p atmega406 atmega64 atmega640 atmega644 atmega644p atmega128
atmega1280 atmega1281 atmega645 atmega649 atmega6450 atmega6490
atmega16hva at90can32 at90can64 at90can128 at90usb82 at90usb162
at90usb646 at90usb647 at90usb1286 at90usb1287 at94k atmega2560
atmega2561
|