Atmega64 als TWI Slave programmieren

OP #2775220
Lesenswert?

Hallo Leute,
ich brauche dringende Hilfe.
Ich muss den Atmega64 als Slave programmieren. Er soll vom
Master(Aardvark) Daten empfangen und wieder an den Master senden. Weil
mir das Ganze aber leider sehr neu ist weiss ich nicht wie ich da
vorgehen soll :(
Kann mir da jemand helfen??

VG
Gast #2775293
Lesenswert?

>Ich muss den Atmega64 als Slave programmieren. Er soll vom
>Master(Aardvark) Daten empfangen und wieder an den Master senden. Weil
>mir das Ganze aber leider sehr neu ist weiss ich nicht wie ich da
>vorgehen soll :(

Nimm einen ATega644p und benutzt den zweiten UART.
I2C ist doch Müll.
OP #2775312
Lesenswert?

spess53 schrieb:
> Hi
>
>>Ich brauche einen
>>fertigen Code, das in Eclipse oder Atmel Studio funktioniert, damit ich
>>den ganzen Aufbau nachvollziehen kann...
>
> Gibt es bei Atmel:
>
> http://www.atmel.com/Images/doc2565.pdf
> http://www.atmel.com/Images/AVR311.zip
>
> Außerdem Datenblatt ab S.219.
>
> MfG spess

Zunächst mal vielen Danke für die beiden Links, aber ich krieg mehrere 
Fehlermeldungen :((


Warning  1  ignoring #pragma vector  [-Wunknown-pragmas]

#pragma vector=TWI_vect
__interrupt void TWI_ISR( void );

Warning  3  implicit declaration of function '__enable_interrupt' 
[-Wimplicit-function-declaration]

 __enable_interrupt();

Warning  4  implicit declaration of function '__sleep' 
[-Wimplicit-function-declaration]

__sleep();

Warning  5  implicit declaration of function '__no_operation' 
[-Wimplicit-function-declaration]

 __no_operation();

Warning  6  'dont_sleep' defined but not used [-Wunused-variable]

static unsigned char dont_sleep = 0;
Gast #2775321
Lesenswert?

Hi

>Zunächst mal vielen Danke für die beiden Links, aber ich krieg mehrere
>Fehlermeldungen :((

Etwas Hirnschmalz musst du schon reinstecken. Die Beispieldateien sind 
für den IAR-Compiler. Da gibt es irgendwelche Differenzen zum 
GCC-Compiler. Allerdings bin ich da überfragt, da ich kein C benutze.

MfG Spess
OP #2775453
Lesenswert?

Also ich habe für

#pragma vector=TWI_vect
__interrupt void TWI_ISR( void );

==>  ISR(TWI_vect){}

__enable_interrupt();

==>  sei();

__sleep();

==>  cli();

__no_operation();

==>  asm volatile("NOP");

eingegeben, aber ich kann trotzdem keine Daten mit dem Master 
austauschen :-/
Gast #2775511
Lesenswert?

xxx yyy schrieb:
> Ich muss den Atmega64 als Slave programmieren. Er soll vom
> Master(Aardvark) Daten empfangen und wieder an den Master senden. Weil
> mir das Ganze aber leider sehr neu ist weiss ich nicht wie ich da
> vorgehen soll :(
> Kann mir da jemand helfen??

So eine Frage gab es schon letztens aber für einen anderen atmega, 
sollte also bei Benutzung der Suche zu finden sein. Aber hier nochmal:

Nimm am besten eine fertige Bibliothek die du nur in dein Programm 
einbinden musst, da weißt du wenigstens, dass die Software für die 
Schnittstelle funktioniert. Hier findest du eine schon mehrfach 
getestete Lib für einen atmega als TWI-Slave: 
http://www.jtronics.de/avr-projekte/library-i2c-twi-slave.html
Gast #2775520
Lesenswert?

Hi

>hmm... low-power mode() vielleicht???

Ich habe die Links nur gepostet, nicht angesehen. Du wolltest ja nur

>Ich brauche einen
>fertigen Code, das in Eclipse oder Atmel Studio funktioniert, damit ich
>den ganzen Aufbau nachvollziehen kann...

Ich hoffe, das du das auch so gemeint hast.

MfG Spess
OP #2775521
Lesenswert?

ja das habe ich auch schon getestet der hat mir aber dinge geliefert, 
die ich nicht haben wollte.. hab schon so einiges ausprobiert, aber 
irgendwie ging alles nicht bis auf das Beispiel von spess, bei dem Bsp 
weiss ich noch nicht was ich für __sleep(); in eclipse / atmel studio 
eingeben soll :-/
Gast #2775545
Lesenswert?

Hi

>aber das was du gepostet hast macht genau das was ich
>wollte, von daher vielen dank spess :))

Atmel hat einen Haufen interessanter Appnotes. Ich frage mich immer, 
warum das nicht die erste Anlaufstelle ist.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren