mikrocontroller.net

Forum: Compiler & IDEs I²C über USI, Attiny45


Autor: Simon H. (der_hier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche eine I²C Kommunikation mit dem ATtiny45 als Master 
hinzubekommen. Habe aus anderen Beiträgen bereits die Atmel Bibliotheken 
entdeckt (http://www.atmel.com/dyn/resources/prod_documents/AVR310.zip) 
und Teilweise auf avrstudio umgemünzt (inavr.h und ioavr.h durch 
avr/io.h und util/twi.h ersetzt und die definitionen der ports aus der 
IF abfrage direkt genutzt). Ich bekomme beim Projekt compilieren 
allerdings noch zur Zeile
__x unsigned char USI_TWI_Start_Transceiver_With_Data( unsigned char * , unsigned char );
 die Fehlermeldung:
../USI_TWI_Master.h:91: error: expected '=', ',', ';', 'asm' or 
'__attribute__' before 'unsigned'

Werde daraus nicht wirklich schlau. hat jemand eine Idee??

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach das __x mal weg
In der IAR Doku steht:

__x, __z __x_z, __z_x
The compiler defines the function type attributes __x, __z __x_z, and 
__z_x which are used by parts of the runtime library. These attributes 
can give very efficient code in a local perspective, but should be used 
with care as they change the calling convention and may have a negative 
effect on the size of the entire application.

__x  The first pointer in the parameter list is placed in register X

Bei AVR-GCC hat dies glaub ich eine etwas andere Bedeutung

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. schrieb:
> Bei AVR-GCC hat dies glaub ich eine etwas andere Bedeutung

Offensichtlich gar keine, deshalb gibt es ja die Fehlermeldung.

Autor: Simon H. (der_hier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, der Fehler is weg, neuer taucht auf. diesmal kennt er __delay_cycles 
nicht. jemand ne Ahnung welche delay fkt ich dafür nutzen kann dazu ist?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei AVR-GCC gibts z.B. delay_ms und delay_us.
Du musst also nur schauen wie lange man versucht mit der __delay_cycles 
zu warten

Andreas B. schrieb:
> Timmo H. schrieb:
>> Bei AVR-GCC hat dies glaub ich eine etwas andere Bedeutung
>
> Offensichtlich gar keine, deshalb gibt es ja die Fehlermeldung.
Oh, doch. Schaut man z.B. in die math.h von der avr-libc sieht man 
sowas:
double   cos (double __x)
double   sin (double __x)
double   tan (double __x)
double   fabs (double __x)
double   fmod (double __x, double __y)
double   modf (double __x, double *__iptr)
float   modff (float __x, float *__iptr)

Autor: Simon H. (der_hier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also rein Fehlertechnisch ist es nun okay, obs funktioniert lass ich 
euch noch wissen. Google hat mir verraten das es in der delay_basic.h 
den Befehl _delay_loop_1() und _delay loop_2() gibt, die 3 oder 4 Zyklen 
per Wert aussetzen. Hab die __x 2 mal gelöscht und Zeilen wie
__delay_cycles(var)
 durch
if (var%2){ _delay_loop_1(var/3);}
else {_delay_loop_2(var/4);}
 ersetzt. Ist nur bei Werten die nicht durch 3 oder 4 Teilbar sind 
ziemlich doof. Also Werte von Hand berechnet und siehe da es waren 4 und 
6
=> 4 durch  _delay_loop_2(1)
 und
=> 6 durch delay_loop_1(2)
ersetzt

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. schrieb:

> Oh, doch. Schaut man z.B. in die math.h von der avr-libc sieht man
> sowas: double   cos (double __x)

Ein lokaler Name für einen Parameter. Na und?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.