www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI Kommunikation gesucht in C


Autor: Buche (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Buche (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Buche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PUSH

Autor: POP (Gast)
Datum:

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


Oben rechts!

Autor: Buche (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Buche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hier noch der Code
/*******************************************************
 Author:          Manfred Langemann
 mailto:          Manfred.Langemann ät t-online.de
 Begin of project:      04.01.2008
 Latest version generated:  04.01.2008
 Filename:          Main.c
 Description:          Main routine for testing
               TWI_Master_main.c
 ********************************************************/
#include <stdio.h>
#include <avr/interrupt.h>

#include "General.h"
#include "RS232.h"
#include "Delay.h"
#include "TWI_Master.h"
/*
** This main programm demonstrates how to use the 
** implemented TWI master functions. These are:
**  TWIM_Init
**  TWIM_ReadAck
**  TWIM_ReadNack
**  TWIM_Write
**  TWIM_Stop
**
** For testing this program, use the program
** TWI_Slave_main.c in the slave uC and connect the
** two TWI lines properly (don't forget to also
** connect GND between Master and Slave!)
**
** Used uC for Master is ATMega32
*/
int main (void)
  {
  uint8_t    i;
  uint8_t    j=0;
  uint8_t    Data[8];
  uint8_t    SlaveAddress = 15;
/*
** Clear any interrupt
*/
  cli ();
/*
** Wait 1 second for POR
*/
  Delay_ms (1000);
/*
** Initiate RS232
*/
  RS232_Init ();
  printf ("Hello world...\n");
/*
** Initiate TWI Master Interface with bitrate of 100000 Hz
*/
  if (!TWIM_Init (100000))
    {
    printf ("Error in initiating TWI interface\n");
    while (1);
    }
/*
** Endless loop
*/
  while (1)
    {
/*
** Read byte(s) from the slave.
** It is implicitely assumed, that the slave will send
** 8 bytes
*/
      if (!TWIM_Start (SlaveAddress, TWIM_READ))
      {
      TWIM_Stop ();
      printf ("Could not start TWI Bus for READ\n");
        }
    else
      {
      for (i=0;i<7;i++)
        {
            Data[i] = TWIM_ReadAck ();
        printf ("Reading Byte %d: %d\n", i, Data[i]);
        }
          Data[7] = TWIM_ReadNack ();
      printf ("Reading Byte %d: %d\n", i, Data[7]);
      TWIM_Stop ();
      Delay_ms (1000);
      }
/*
** Write byte(s) to the slave.
** It is implicitely assumed, that the slave will
** accepts 8 bytes
*/
      if (!TWIM_Start (SlaveAddress, TWIM_WRITE))
      {
      TWIM_Stop ();
      printf ("Could not start TWI Bus for WRITE\n");
        }
    else
      {
      for (i=0;i<8;i++)
        {
            TWIM_Write (j++);
        printf ("Byte %d sent: %d\n", i, j);
        }
      TWIM_Stop ();
      Delay_ms (1000);
      }
/*
** Do something else
*/
    i++;
    }

  return 0;
  }

an welcher stelle muss ich nun die abfrage des Tasters einbringen damit 
ein Signal gesendet wird?

Autor: Jan S. (jan_s)
Datum:

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

Autor: hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Buche (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.