Forum: Mikrocontroller und Digitale Elektronik TWI Kommunikation gesucht in C


von Buche (Gast)


Lesenswert?

Hallo Forum,
Ich suche ein Beispielprogrammcode für die Programmierung eine TWI 
Kommunikation zweier ATMEGAs.
Der AtMega 16 soll der Master Sein und hat „erst mal“ einen Taster am 
PD7 der dann ein Signal an einen AtMega 8535 (Save) senden soll wo dann 
eine LED angehen soll am PD6.
Hat da vielleicht einer ein Beispiel in C für mich?
Habe selbst schon gesucht aber leider nur was in Bascom gefunden
Danke schonmal für eure hilfe
Gruß Buche

von Christian (Gast)


Lesenswert?


von Buche (Gast)


Lesenswert?

Hallo
ich stehe irgendwie aufn Schlauch,
könnte mir jemand zeigen wo ich den Teil mit dem Taster unterbringen 
muss und mit der LED?
wäre sehr nett und würde mir weiterhelfen

von Buche (Gast)


Lesenswert?

PUSH

von POP (Gast)


Lesenswert?

Buche schrieb:
> könnte mir jemand zeigen wo ich den Teil mit dem Taster unterbringen
> muss und mit der LED?


Oben rechts!

von Buche (Gast)


Lesenswert?

könntest du mir die Stelle im Code zeigen oben rechts kann ich mir nicht 
vorstellen.
ich will ja ´den Taster im Programm abfragen

von Buche (Gast)


Lesenswert?

hier noch der Code
1
/*******************************************************
2
 Author:          Manfred Langemann
3
 mailto:          Manfred.Langemann ät t-online.de
4
 Begin of project:      04.01.2008
5
 Latest version generated:  04.01.2008
6
 Filename:          Main.c
7
 Description:          Main routine for testing
8
               TWI_Master_main.c
9
 ********************************************************/
10
#include <stdio.h>
11
#include <avr/interrupt.h>
12
13
#include "General.h"
14
#include "RS232.h"
15
#include "Delay.h"
16
#include "TWI_Master.h"
17
/*
18
** This main programm demonstrates how to use the 
19
** implemented TWI master functions. These are:
20
**  TWIM_Init
21
**  TWIM_ReadAck
22
**  TWIM_ReadNack
23
**  TWIM_Write
24
**  TWIM_Stop
25
**
26
** For testing this program, use the program
27
** TWI_Slave_main.c in the slave uC and connect the
28
** two TWI lines properly (don't forget to also
29
** connect GND between Master and Slave!)
30
**
31
** Used uC for Master is ATMega32
32
*/
33
int main (void)
34
  {
35
  uint8_t    i;
36
  uint8_t    j=0;
37
  uint8_t    Data[8];
38
  uint8_t    SlaveAddress = 15;
39
/*
40
** Clear any interrupt
41
*/
42
  cli ();
43
/*
44
** Wait 1 second for POR
45
*/
46
  Delay_ms (1000);
47
/*
48
** Initiate RS232
49
*/
50
  RS232_Init ();
51
  printf ("Hello world...\n");
52
/*
53
** Initiate TWI Master Interface with bitrate of 100000 Hz
54
*/
55
  if (!TWIM_Init (100000))
56
    {
57
    printf ("Error in initiating TWI interface\n");
58
    while (1);
59
    }
60
/*
61
** Endless loop
62
*/
63
  while (1)
64
    {
65
/*
66
** Read byte(s) from the slave.
67
** It is implicitely assumed, that the slave will send
68
** 8 bytes
69
*/
70
      if (!TWIM_Start (SlaveAddress, TWIM_READ))
71
      {
72
      TWIM_Stop ();
73
      printf ("Could not start TWI Bus for READ\n");
74
        }
75
    else
76
      {
77
      for (i=0;i<7;i++)
78
        {
79
            Data[i] = TWIM_ReadAck ();
80
        printf ("Reading Byte %d: %d\n", i, Data[i]);
81
        }
82
          Data[7] = TWIM_ReadNack ();
83
      printf ("Reading Byte %d: %d\n", i, Data[7]);
84
      TWIM_Stop ();
85
      Delay_ms (1000);
86
      }
87
/*
88
** Write byte(s) to the slave.
89
** It is implicitely assumed, that the slave will
90
** accepts 8 bytes
91
*/
92
      if (!TWIM_Start (SlaveAddress, TWIM_WRITE))
93
      {
94
      TWIM_Stop ();
95
      printf ("Could not start TWI Bus for WRITE\n");
96
        }
97
    else
98
      {
99
      for (i=0;i<8;i++)
100
        {
101
            TWIM_Write (j++);
102
        printf ("Byte %d sent: %d\n", i, j);
103
        }
104
      TWIM_Stop ();
105
      Delay_ms (1000);
106
      }
107
/*
108
** Do something else
109
*/
110
    i++;
111
    }
112
113
  return 0;
114
  }
an welcher stelle muss ich nun die abfrage des Tasters einbringen damit 
ein Signal gesendet wird?

von Jan S. (jan_s)


Lesenswert?

Evtl. gehst du besser erst einmal kleinere Aufgabenstellungen an, die 
deinem Kenntnisstand eher entsprechen. Alles andere ist vermutlich eher 
frustrierend.

von hubert (Gast)


Lesenswert?

Mach als Übungsaufgabe zwischendrin einfach mal folgendes:

Taster und LED an ein und den selben Controller, verschiedene Ports. 
Dann bringst Du mit der Taste das LED zum leuchten. Einfach oder auch 
invertiert zur Übung noch dazu.

Vielleicht ist das dann entweder der richtige Denkanstoß oder ermöglicht 
Dir zumindest eine etwas genauere Nachfrage.

von Buche (Gast)


Lesenswert?

Nur zu Info mit einem Controller bekomme ich es auch problemlos hin.
Echt entäuschent das Forum grade wenn sich soviele Experten nennen aber 
keinen Anfänger helfen wollen.
Man liest des immer wieder
Nur die Wenigsten helfen

von hubert (Gast)


Lesenswert?

Bei Deinem (soweit hier erkennbaren) Kenntnisstand ist da einfach mehr 
Erklärungsarbeit nötig, als hier in einem Forenbeitrag möglich ist.

Lies Dich am besten erst mal selber in die Themen TWI, I2C, die 
dazugehörigen Protokolle und deren Verwendung sowie das Übertragen von 
Informationen über serielle Verbindungen generell ein. Wikipedia, 
NXP-Appnotes (zu I2C) und vor allem die Tutorials hier sind Dein Freund 
dabei...

von hubert (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.