USI Verbindung von ATmega 1284p zu Attiny2313A

OP #4568112
Lesenswert?
• ▲
▼
Hallo
versuche eine Verbindung zwischen einem ATmega 1284p(Master) zu einem 
Attiny2313 (Slave) mit I2C bzw USI zubekommen. Verwende dazu die Datein 
vom Martin Junghanns. Als Sender nutze ich das folgende:
1
void s_write1 (void)              // schreibe Daten von Master zu Slave
2
    {
3
    i2c_start(slave_adresse);        // Slave ist bereit zum Schreiben
4
    i2c_write(0x00);                        // Buffer Startadresse setzen
5
    i2c_write(42);                          // ... 42-44
6
    i2c_stop();                             // Zugriff beenden  
7
    }
DerAufruf erfolgt damit. Zur Kontrolle lasse ich mit die Tasten 
anzeigen.
1
if (!(PINC & (1<<PINC2)) )      // Taster T1
2
      {                  // Wenn T1 gedrückt...
3
      PORTA &=~(1<<PA7);        // LED Kontrolle ein  
4
      s_write1();            // Schreib-Funktion aufrufen
5
      }
6
    else
7
      {
8
        PORTA |=(1<<PA7);        // LED Kontrolle aus
9
      }
Beim Slave werte ich damit ais bzw. versuche in buffer zu schreiben.
1
for (int i = 0; i < 4; i++)         // rxbuffer[0-3] (Receiving/Empfangen)
2
  rxbuffer[i] = i + 20; 
3

4
byte1 = rxbuffer[0];
5
    byte2 = rxbuffer[1];
Damit möchte ich eine LED als Anzeige nutzen
1
if (!(byte1==43))
2
      {                  
3
      PORTD &=~(1<<PD3);        // LED Kontrolle ein
4
      PORTD |=(1<<PD4);        // LED Kontrolle aus
5
      }
6
    
7
    
8
    if (!(byte2==42))
9
    {
10
      PORTD &=~(1<<PD4);        // LED Kontrolle ein
11
      PORTD |=(1<<PD3);        // LED Kontrolle aus
12
    }
Leider erfolgt kein Empfang von Daten bzw keine änderung.
Danach soll das senden vom Slave zum Master erfolgen.
Könnte mal jemand drüber schauen, was ich falsch mache.
achim
Persönliche Seite #4568694
Lesenswert?
• ▲
▼
Hallo,

Als erstes was allgemeines: Nimm wann immer es geht nur einen 
Controller. Das nimmt einem viel Arbeit ab, zB weil man nicht auf 
den/die Partner warten muss.
Und wenn es doch sein muss und es nur wegen fehlender Pins ist, könnte 
man über SPI/I2C Portexpander nachdenken.

Aber jetzt zu deinem Code.
(Ich kenne deinen Code zur Ansteuerung nicht und kann ihn mir wegen 
Zeitmangel auch nicht runterladen)

Selbst wenn du in einem ungenanntencodestück was in rxbuffer schreibst, 
spätestens hier überschreibst du die ersten 4 Byte mit 20, 21, 22 und 23

Achim S. schrieb:
> for (int i = 0; i < 4; i++)         // rxbuffer[0-3]
> (Receiving/Empfangen)
>   rxbuffer[i] = i + 20;

Das bedeutet was immer du sendest geht gar nicht in deine Berechnung 
beim Slave ein. (Falls ich keine Tomaten auf den Augen habe)

Mfg
N.G.
#4568724
Lesenswert?
• ▲
▼
Achim S. schrieb:
> Beim Slave werte ich damit ais bzw. versuche in buffer zu schreiben.for
> (int i = 0; i < 4; i++)         // rxbuffer[0-3] (Receiving/Empfangen)
>   rxbuffer[i] = i + 20;
>
> byte1 = rxbuffer[0];
>     byte2 = rxbuffer[1];


Damit ist Byte1 20 und Byte2 21 wenn du damit nichts mehr machst dann 
treffen beide Bedingungen der If Abfragen zu.  Die zweite überschreibt 
aber die erste.

Gruß JackFrost

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.