Diskuze: Jaký parametr zadat při volání funkce
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.


Podle varování 'implicit declaration of function ' to vypadá, že funkci I2C0_read_handler() jsi deklaroval později, než je main(). Takže řešením by mělo být před funkci main() napsat:
i2c_operations_t I2C_0_read_handler(void *d);
Díky, nějak jsem se do toho zamotal. Když s tím člověk nedělá každý den, tak je to fakt na hlavu. Po 5ti hodinách jsem pak konečně přišel, jak na to. Překlad v pohodě, jen to vyzkouším, zda to něco dělá.
Main.c
#include <atmel_start.h>
#include <i2c_types.h>
#include <i2c_simple_master.h>
#include <utils/atomic.h>
#include <i2c_master_example.h>
#define slave_adr 0x42
#define slave_reg_adr 0xff
uint8_t write_data [8] = {0xB5, 0x6, 0xF0, 0x01, 0x00, 0x00, 0xF1, 0xC3};
uint8_t read_data[1];
/** Structure passed into read_handler to describe the actions to be performed by the handler */
typedef struct {
uint8_t *data;
uint8_t size;
} transfer_descriptor_t;
/** This callback is called when the initial write of the pointer register has finished.
This callback controls the second phase of the I2C transaction, the read of the
targeted register after a REPEATED START.
*/
i2c_operations_t read_handler(void *d) {
transfer_descriptor_t *desc = (transfer_descriptor_t *) d;
I2C_0_set_buffer((void *) desc->data, desc->size);
// Set callback to terminate transfer and send STOP after read is complete
I2C_0_set_data_complete_callback(i2c_cb_return_stop, NULL);
return i2c_restart_read; // Send REPEATED START before read
}
/** Performs the following transfer sequence:
1. Send SLA+W, Data1
2. Send RepeatedStart, SLA+R, Read Data1, Read Data2
3. Send Stop
This transfer sequence is typically done to first write to the slave the address in
the slave to read from, thereafter to read N bytes from this address.
*/
void do_transfer(uint8_t adr, uint8_t *data, uint8_t size) {
transfer_descriptor_t d = {data, size};
while (!I2C_0_open(slave_adr))
; // sit here until we get the bus..
// This callback specifies what to do after the first write operation has completed
// The parameters to the callback are bundled together in the aggregate data type d.
I2C_0_set_data_complete_callback((void *) read_handler, &d);
// If we get an address NACK, then try again by sending SLA+W
I2C_0_set_address_nack_callback((void *) i2c_cb_restart_write, NULL);
// Transmit one byte
I2C_0_set_buffer((void *) &adr, 1);
// Start a Write operation
I2C_0_master_operation(false);
while (I2C_BUSY == I2C_0_close())
; // sit here until the entire chained operation has finished
}
int main(void) {
/* Initializes MCU, drivers and middleware */
atmel_start_init();
// asm("sei");
do_transfer(slave_reg_adr, read_data, 1);
asm("nop");
/* Replace with your application code */
while (1) {
}
}
Zobrazeno 3 zpráv z 3.