Forum: Mikrocontroller und Digitale Elektronik I2C bei Attiny13


von Christian (Gast)


Lesenswert?

Hat jemand ein Beispiel (in C) für eine I2C Schnittstelle bei einem 
ATtiny13?
Der Controller soll ein Slave sein.

von Bernhard R. (barnyhh)


Lesenswert?

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

von Fabian B. (fabs)


Lesenswert?

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

von Simon K. (simon) Benutzerseite


Lesenswert?

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.



*
1
C:\Documents and Settings\sk>avr-gcc -v
2
Using built-in specs.
3
Target: avr
4
Configured with: ../gcc-4.1.2/configure --prefix=/c/WinAVR --target=avr --enable
5
-languages=c,c++ --with-dwarf2 --enable-win32-registry=WinAVR-20070525 --disable
6
-nls --with-gmp=/usr/local --with-mpfr=/usr/local --enable-doc --disable-libssp
7
Thread model: single
8
gcc version 4.1.2 (WinAVR 20070525)
9
10
C:\Documents and Settings\sk>avr-gcc --target-help
11
12
Target specific options:
13
  -mcall-prologues            Use subroutines for function prologues and
14
                              epilogues
15
  -minit-stack=STACK          Use STACK as the initial value of the stack
16
                              pointer
17
  -mint8                      Use an 8-bit 'int' type
18
  -mmcu=MCU                   Select the target MCU
19
  -mno-interrupts             Change the stack pointer without disabling
20
                              interrupts
21
  -mno-tablejump              Do not generate tablejump insns
22
  -mshort-calls               Use rjmp/rcall (limited range) on >8K devices
23
  -msize                      Output instruction sizes to the asm file
24
  -mtiny-stack                Change only the low 8 bits of the stack pointer
25
26
AVR options:
27
  -mmcu=[avr-name] select microcontroller variant
28
                   [avr-name] can be:
29
                   avr1 - AT90S1200, ATtiny1x, ATtiny28
30
                   avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22
31
                   avr3 - ATmega103, ATmega603
32
                   avr4 - ATmega83, ATmega85
33
                   avr5 - ATmega161, ATmega163, ATmega32, AT94K
34
                   or immediate microcontroller name.
35
  -mall-opcodes    accept all AVR opcodes, even if not supported by MCU
36
  -mno-skip-bug    disable warnings for skipping two-word instructions
37
                   (default for avr4, avr5)
38
  -mno-wrap        reject rjmp/rcall instructions with 8K wrap-around
39
                   (default for avr3, avr5)
40
Known MCU names:
41
  avr1 avr2 avr3 avr4 avr5 avr6 at90s1200 attiny10 attiny11 attiny12
42
  attiny15 attiny28 at90s2313 at90s2323 at90s2333 at90s2343 attiny22
43
  attiny26 at90s4433 at90s4414 at90s4434 at90s8515 at90s8535 at90c8534
44
  at86rf401 *attiny13* attiny2313 attiny261 attiny461 attiny861 attiny24
45
  attiny44 attiny84 attiny25 attiny45 attiny85 atmega603 atmega103
46
  at43usb320 at43usb355 at76c711 atmega48 atmega8 atmega83 atmega85
47
  atmega88 atmega8515 atmega8535 atmega8hva at90pwm1 at90pwm2 at90pwm3
48
  atmega16 atmega161 atmega162 atmega163 atmega164p atmega165 atmega165p
49
  atmega168 atmega169 atmega169p atmega32 atmega323 atmega324p atmega325
50
  atmega325p atmega329 atmega329p atmega3250 atmega3250p atmega3290
51
  atmega3290p atmega406 atmega64 atmega640 atmega644 atmega644p atmega128
52
  atmega1280 atmega1281 atmega645 atmega649 atmega6450 atmega6490
53
  atmega16hva at90can32 at90can64 at90can128 at90usb82 at90usb162
54
  at90usb646 at90usb647 at90usb1286 at90usb1287 at94k atmega2560
55
  atmega2561

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.