TWI zwischen 2 Atmea 8

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 29 3 2024  15:54:34      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
TWI zwischen 2 Atmea 8

    







BID = 956244

Bobbybau91

Gerade angekommen


Beiträge: 3
 

  


Hallo zusammen,

ich sitze nun am selben Problem wie damals Micha in dem Beitrag (klick mich). Wir sollen ebenfalls zu Anschauungszwecken eine TWI-Verbindung zwischen 2 Atmega8 herstellen. Leider ist im Forum nicht das genaue Ergebnis ersichtlich und wir kommen nicht mehr weiter (eigentlich haben wir auch keine besonders große Ahnung )

Es trat kein Fehler beim kompilieren auf, das Programm wurde gebrannt, die Controller an den SDA und SCL-Pins verbunden.

Folgende Frage zu diesem Code:
- Ist dieser Code für Master und Slave? Wenn ja, was muss beim Master und Slave angepasst werden?




Code :


/* Anfang main.c */
#include "twi.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <inttypes.h>
#define ADRESSE 32
#define SLAVE_ADRESSE 54
#define EVENT_KEY_PRESSED 0b10101010
#define F_CPU 3686400

volatile uint8_t i2c_flag;

int main(void)
{
DDRB = 0b00000001; // Eingänge und Ausgänge definieren
PORTB = 0b00000010; // PORT 0 Ausgang / PORT 1 Eingang BYTE B

i2c_switch_slave(ADRESSE<<1); // Slave Modus starten

for (;;)
{
if( i2c_flag )
{
PORTB |= (1<<PB0);
i2c_flag = 0;
}
else
{
PORTB &=~(1<<PB0);
}

if (! (PIND & (1<<PB1)))
{
i2c_switch_master(calc_SCL_freq(100000));
i2c_start();
i2c_transmit(SLAVE_ADRESSE<<1); /* ohne +1, es wird ja geschrieben, und nicht gelesen... */
i2c_transmit(EVENT_KEY_PRESSED);
i2c_stop();
i2c_switch_slave(ADRESSE<<1);
}
}
}
/* Interrupthandler für TWI */
ISR(TWI_vect)
{
/* setze Flagge */
i2c_flag = 1;
}
/* Ende main.c */




Danke im Vorraus
Gruß Bob

BID = 956255

sub205

Schriftsteller



Beiträge: 915
Wohnort: Gründau

 

  

Nenn das Kind doch beim Namen und schreibe I²C (I2C) im Betreff/Text. TWI ist weniger gebräuchlich.

Hast du die Pullup-Widerstände an SDA und SCL vergessen?

_________________
gruß, Stephan

sudo make me a sandwich

BID = 956274

Bobbybau91

Gerade angekommen


Beiträge: 3


Zitat :
sub205 hat am 13 Mär 2015 15:09 geschrieben :

Nenn das Kind doch beim Namen und schreibe I²C (I2C) im Betreff/Text. TWI ist weniger gebräuchlich.

Hast du die Pullup-Widerstände an SDA und SCL vergessen?



Ok danke, muss ich nachher mal nach schauen, wenn ich zu Hause bin.
Aber was muss denn dann noch in dem Programm geändert werden? Der Master kann doch nicht genau das gleiche Programm wie der Slave haben, oder?

BID = 956291

Bobbybau91

Gerade angekommen


Beiträge: 3

Habe nachgesehen, die PullUps sind gesetzt.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag       heute wurden bisher 16 Beiträge verfasst
© x sparkkelsputz        Besucher : 180692556   Heute : 8457    Gestern : 12674    Online : 375        29.3.2024    15:54
6 Besucher in den letzten 60 Sekunden        alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0291950702667