Frage zum TWI

#2895896
Lesenswert?

Hallo,
ich versuche mich grade am TWI.
Für den Anfang will ich einen ATmega168 als Master und einen ATmega8 als 
Slave verbinden.
Der Master soll auf Knopfdruck dem Slave die Zahl 77 senden, woraufhin 
dieser eine LED an macht.

Nun hab ich am Master auch eine LED, die immer an ist, aber sobald ich 
das TWI einschalte geht die LED aus. Ich mache noch nichts anderes. Kann 
mir jemand sagen warum der PIN gelöscht wird?

Master_TWI_enable:
1
#define F_CPU 8000000
2

3
#include <inttypes.h>
4
#include <avr/io.h>
5
#include <util/delay.h>
6
#include <avr/pgmspace.h>
7
#include <avr/interrupt.h>
8
#include <util/twi.h> 
9

10
int main (void) 
11
{
12
  DDRC |=(1 << PC5);//LED
13
  DDRB &=~(1 << PB1); //Taster
14

15
  while(1)
16
  {
17
    PORTC |=(1<<PC5);
18
    
19
    if((PINB & (1<<PB1)))
20
    {
21
    TWCR =| (1<<TWEN);      
22
    } 
23
  }
24
}
#2895997
Lesenswert?

Hallo!

Tasten solltest du anders einlesen, wurde schon 1000-fach hier 
durchgekaut, mach es über ne Entprellung.

Zu deinem Problem. Nach dem Code, den du hier gepostet hast, dürfte das 
nicht passieren, aber ich denke, nach den ganzen includes, die du da 
noch hast, hast du auch noch mehr Code. Zeig den ganzen Code, TWI ist 
nun wirklich kein Geheimnis.


MfG Dennis
#2896054
Lesenswert?

Hi,
ich hatte mir eigentlich die Codes so vorgestellt, wie im Anhang.
Aber da es nicht funktionierte hatte, habe ich mich auf die Fehlersuche 
gemacht und dabei festgestellt, dass der Portausgang immer gelöscht wird 
sobald ich das TWI einschalte.

Den Taster hab ich jetzt so entprellt, aber es bleibt beim alten.
1
while(1)
2
  {  
3
    PORTC |=(1<<PC5);
4
    _delay_ms(1);
5
    if( (PINB & (1<<PB1)) && list.schalter1==0)
6
    {
7
     list.schalter1=1;
8
    TWCR |= (1<<TWEN);    
9
    }
10
    if(a==500)
11
    {
12
    list.schalter1=0;  
13
    }
14
  }
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #2896069
Lesenswert?

Dshing Sung schrieb:
> PORTC |=(1<<PC5);
Hat evtl. der TWI was mit dem Pin C5 zu tun?
Was steht denn dazu im Datenblatt?
1
SCL/ADC5/PCINT13 – Port C, bit 5
2
SCL, 2-wire Serial Interface Clock: When the TWEN bit in TWCR is set (one) 
3
to enable the 2-wire Serial Interface, pin PC5 is disconnected from the port 
4
and becomes the Serial Clock I/O pin for the 2-wire Serial Interface.
disconnected from the port
Klingelt da was?

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