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);
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); |
Manu schrieb: > #define RTC_SLAVE_ADDRESS 0xD0 Wie üblich stellt sich an solcher Stelle die Frage, ob da die 7-Bit oder die 8-Bit Adresse angegeben werden muss.
Siehe Hier: http://www.mikrocontroller.net/articles/AVR32-Tutorial Wichtig: Damit die Hardware-Funktionen auch verwendet werden können, muss im Register "Gper" der Pin deaktiviert werden, da sonst der Port ganz normale GPIO-Funktionen hat. eventuell hilf dies
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; |
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)
So der Fehler ist nun gefunden, da es aber niemand interessiert muss ich ihn hier ja auch nicht erzählen. Gruss Manuel
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.