Hat jemand ein Beispiel (in C) für eine I2C Schnittstelle bei einem ATtiny13? Der Controller soll ein Slave sein.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.