"Použita byla vývojová deska navržená synem." Probuch, to kdy a kde a proc delal?-) Je mlady a nadejny, nemuze jit nekam na genderstudies?-)) Promin, nedali mi to, dobre ze jablko nespadlo daleko od stromu !-))
No taková vostuda v rodině! A nemusíš chodit kanálama?
Ta deska vypadá super. A díky za inspiraci na příští... TinyGo budu chtít vyzkoušet.
je to tak, asi chyba při výchově
příště ještě zkusím popsat sériové sběrnice a další, co se nestihlo. TinyGo se na to hodí docela dobře, binárky nejsou velké a je to dostatečně rychlé.
Bylo uz jasne podle genu ze nebude IT manazer nebo securitak s nulovou odpovednosti :-) za prusvihy. Je nutne si spalit prsty a vycmoudit hromadu soucastek aby se clovek necemu naucil.
Ja bych na tabory uz koule nemel. Mne to stacilo jako uciteli.
Nutno ovsem podotknout ze decka se zajmem jsou obvykle hodna a nedelaji takovy bordel. Akorat je clovek musi zaujmout.
Radeji bych mel celou svoji byvalou tridu nez nektere kolegy.
Nemělo by se při čtení z ADC čekat na nastavení bitu "ready"? Jinak se přece vrací mezivýsledek interpolace a ne konečná hodnota.
Interně to čtení vypadá takto:
func (c ADCChannel) getOnce() uint16 {
// Make it safe to sample multiple ADC channels in separate go routines.
adcLock.Lock()
rp.ADC.CS.ReplaceBits(uint32(c)<<rp.ADC_CS_AINSEL_Pos, rp.ADC_CS_AINSEL_Msk, 0)
rp.ADC.CS.SetBits(rp.ADC_CS_START_ONCE)
waitForReady()
v := rp.ADC.RESULT.Get()
adcLock.Unlock()
// rp2040 is a 12-bit ADC, scale raw reading to 16-bits.
return uint16(v) << 4
}
A to vlastní čekání řeší právě čekání na ready bit:
func waitForReady() {
for !rp.ADC.CS.HasBits(rp.ADC_CS_READY) {
}
}
const OutputPin = 2
button := machine.Pin(InputPin)
button.Configure(machine.PinConfig{Mode: machine.PinInput})
Myslím, že zde by deklarace měla deklarovat ten InputPin... (je to ten druhý kousek kódu v 7. kapitole)
Má to nějaký IO notifikační systém, který by zavolal callback, když se změní stav tlačítka, místo, aby tam byl busy loop, který stav aktivně čte?
jj pro GPIO to jde zajistit přes:
// This call will replace a previously set callback on this pin. You can pass a
// nil func to unset the pin change interrupt. If you do so, the change
// parameter is ignored and can be set to any value (such as 0).
func (p Pin) SetInterrupt(change PinChange, callback func(Pin)) error {
timery atd. to mají řešené maličko jinak.