Frage zum TWI

OP #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
OP #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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.