TWI bei UC3C 32bit Controller

Gast #4005039
Hallo Zusammen

Ich benutze meinen UC3C Controller um mit dem Two Wire Interface. 
Angeschlossen habe ich eine RTC an TWIMS2. Und möchte nun die 
Schnittstelle initialisieren, doch beim Befehl "twim_master_init(&TWIM, 
&TWI_Settings)" hält das Programm bzw der Debugger an und reagiert nicht 
mehr.
Hatte jemand schon ein ähnliches Problem und konnte dies lösen? Danke 
für Tipps und Grüsse Manu

#include "twim.h"
#define TWIM AVR32_TWIM2
#define RTC_SLAVE_ADDRESS   0xD0
#define GPIO_FUNCTION_E      4
#define PIN_SCL         71 // clk
#define PIN_SDA         70 // Data

gpio_enable_gpio_pin(PIN_SCL);
  gpio_enable_gpio_pin(PIN_SDA);
  gpio_enable_module_pin(PIN_SCL, GPIO_FUNCTION_E); //pin as function E
  gpio_enable_module_pin(PIN_SDA, GPIO_FUNCTION_E);

  twim_options_t TWI_Settings;
  TWI_Settings.chip = RTC_SLAVE_ADDRESS;
  TWI_Settings.pba_hz = PBA_CLOCK; //pba_hz = 33000000
  TWI_Settings.smbus = false; //sm_bus = false
  TWI_Settings.speed = TWI_FAST_MODE_SPEED; //speed  = 400000

  twim_master_enable(&TWIM); // weiss ned ob das nötig esch
  twim_master_init(&TWIM, &TWI_Settings);
Gast #4005048
Sorry, hier mit korrekter formatierung
1
#include "twim.h"
2
#define TWIM AVR32_TWIM2
3
#define RTC_SLAVE_ADDRESS   0xD0
4
#define GPIO_FUNCTION_E      4
5
#define PIN_SCL         71 // clk
6
#define PIN_SDA         70 // Data
7

8
gpio_enable_gpio_pin(PIN_SCL);
9
  gpio_enable_gpio_pin(PIN_SDA);
10
  gpio_enable_module_pin(PIN_SCL, GPIO_FUNCTION_E); //pin as function E
11
  gpio_enable_module_pin(PIN_SDA, GPIO_FUNCTION_E);
12

13
  twim_options_t TWI_Settings;
14
  TWI_Settings.chip = RTC_SLAVE_ADDRESS;
15
  TWI_Settings.pba_hz = PBA_CLOCK; //pba_hz = 33000000
16
  TWI_Settings.smbus = false; //sm_bus = false
17
  TWI_Settings.speed = TWI_FAST_MODE_SPEED; //speed  = 400000
18

19
  twim_master_enable(&TWIM); 
20
  twim_master_init(&TWIM, &TWI_Settings);
Gast #4005195
Der Pin wird automatisch als GPIO deaktiviert:)

Auszug aus der gpio_enable_module_pin(pin, funktion) Funktion
1
case 7: /* H function. */
2
      gpio_port->pmr0s = 1 << (pin & 0x1F);
3
      gpio_port->pmr1s = 1 << (pin & 0x1F);
4
      gpio_port->pmr2s = 1 << (pin & 0x1F);
5
      break;
6
#endif
7

8
   default:
9
      return GPIO_INVALID_ARGUMENT;
10
   }
11

12
   /* Disable GPIO control. */ // Hier erfolgt die Deaktivierung!!
13
   gpio_port->gperc = 1 << (pin & 0x1F);
14

15
   return GPIO_SUCCESS;
Gast #4005459
A. K. schrieb:
> Wie üblich stellt sich an solcher Stelle die Frage, ob da die 7-Bit oder
> die 8-Bit Adresse angegeben werden muss.

Es handelt sich um eine 8bit Adresse laut Datenblatt. Ich kann mir eher 
vorstellen das mit der Pinbelegung falsch ist, bzw diese nicht für eine 
Master Slave Kommunikation verwendbar sind. (verwende TWIMS2, evt l.ist 
diese falsch)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.