TWI bei UC3C 32bit Controller

Gast #4005039
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

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