TWI zwischen 2 Atmea 8 Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
|
|
|
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: 916 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.
|
|
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 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 10 Beiträge verfasst © x sparkkelsputz Besucher : 182398227 Heute : 5424 Gestern : 7548 Online : 580 25.11.2024 17:52 6 Besucher in den letzten 60 Sekunden alle 10.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0283169746399
|