Atmega 8 und Attiny 26 verbinden

Gast #2788376
Lesenswert?

Hallo,

wie kann ich am besten einen Datenübertragung zwischen einem Atmega 8 
und einem Attiny 26 realisieren?

Der Attiny 26 hat ja einen USI Interface mit dem man TWI oder SPI 
implementieren könnte. Wäre das die einfachste Lösung oder gibt es noch 
eine besser?

Wichtig wäre mir das die onboard ISP Funktionalität für beide Controller 
erhalten bleibt.

Gruß
Gast #2788380
Lesenswert?

Es geht eigentlich nur um die Übertragung von Messwerten vom Attiny26 
zum Atmega8. Übertragung findet nur einseitig statt.

Bin schon auf die Idee gekommen folgendermaßen 5 Pins zu verwenden:

Am Attiny 4 Pins als Ausgang für die Übertragung und 1 Pin als Ausgang 
für die Ausgabe eines Taktes bzw. Synchronisationssignals.

Am Atmega8 löst dann der vom Attiny26 ausgegebene Takt einen ext. 
Interrupt aus und es wird von den vier Datenausgängen ein halbes Byte 
eingelesen.

Was haltet ihr von dieser Lösung?
#2788384
Lesenswert?

Also ich würde TWI nehmen. Alles andere ist für so ein paar Bytes doch 
völlig überkandidelt. Obwohl SPI ist natürlich etwas einfacher für den 
Slave. TWI ist manchmal etwas frickelig beim AVR. Such dir was aus. Mit 
USI ist das schnell gemacht. Ist jedoch nur so "halb-hardware" da noch 
einiges in Software gemacht werden muss, was der Mega in Hardware macht. 
Steht aber ja alles im Datenblatt.
#2788482
Lesenswert?

Meier schrieb:
> Übertragung findet nur einseitig statt.

SW-UART:
1
#define F_CPU           8e6
2
#define BAUD            9600
3
#define STX_PORT        PORTB
4
#define STX_BIT         0
5

6
#include <util/delay.h>
7
#include <avr/io.h>
8

9
void sputchar( uint8_t c )
10
{
11
  c = ~c;
12
  STX_PORT &= ~(1<<STX_BIT);            // start bit
13
  for( uint8_t i = 10; i; i-- ){        // 10 bits
14
    _delay_us( 1e6 / BAUD );            // bit duration
15
    if( c & 1 )
16
      STX_PORT &= ~(1<<STX_BIT);        // data bit 0
17
    else
18
      STX_PORT |= 1<<STX_BIT;           // data bit 1 or stop bit
19
    c >>= 1;
20
  }
21
}

Peter

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