• R/O
  • SSH
  • HTTPS

pasripherals: Commit


Commit MetaInfo

Revision33 (tree)
Time2019-10-02 13:08:36
Authorderekwildstar

Log Message

Documentação atualizada

Change Summary

Incremental Difference

--- trunk/src/lib/UPasRipherals.pas (revision 32)
+++ trunk/src/lib/UPasRipherals.pas (revision 33)
@@ -13,6 +13,19 @@
1313
1414 { TSavedState }
1515
16+ { Abaixo, doc.ok indica que a documentação está revisada }
17+
18+ { Para criar um novo record de periférico, inclua de forma privada um ou mais
19+ campos para o seletor (no caso de haver mais de um periférico do mesmo tipo) e
20+ um campo privado para acesso a TCustomPasRipherals. As propriedades expostas
21+ serão sempre relativas a elementos internos dos registradores aplicáveis, por
22+ exemplo, se um dos registradores do periférico define que determinados bits
23+ correspondem a um modo de operação, haverá uma propriedade "modo" que vai
24+ atuar (ler e/ou escrever) apenas naqueles bits específicos. Crie funções para
25+ acesso direto a cada um dos registradores do periférico. Use outros records
26+ como exemplo }
27+
28+ (* doc.ok *)
1629 //: Este record é usado pela propriedade @Link(TCustomPasRipherals.State) e
1730 //: representa os estados de todos os registradores do RPI. Os nomes dos
1831 //: membros são basicamente os mesmos nomes dos registradores, tal como são
@@ -24,9 +37,9 @@
2437 //: função na qual o GPIO está operando)
2538 //: @Member(GPFSEL1 Este membro representa o registrador GPFSEL1, o qual
2639 //: contém o segundo conjunto de campos de seleção de funções dos GPIO,
27- //: abrangendo os GPIO de 1 a 19. Cada GPIO ocupa 3 bits neste registrador e o
28- //: valor destes 3 bits pode variar de de 0 até 7 (111) a fim de representar a
29- //: função na qual o GPIO está operando)
40+ //: abrangendo os GPIO de 10 a 19. Cada GPIO ocupa 3 bits neste registrador e
41+ //: o valor destes 3 bits pode variar de de 0 até 7 (111) a fim de representar
42+ //: a função na qual o GPIO está operando)
3043 //: @Member(GPFSEL2 Este membro representa o registrador GPFSEL2, o qual
3144 //: contém o terceiro conjunto de campos de seleção de funções dos GPIO,
3245 //: abrangendo os GPIO de 20 a 29. Cada GPIO ocupa 3 bits neste registrador e
@@ -50,13 +63,14 @@
5063 //: @Member(GPLEV0 Este membro representa o registrador GPLEV0, o qual
5164 //: contém o primeiro conjunto de campos de níveis lógicos dos GPIO,
5265 //: abrangendo os GPIO de 0 a 31, ou seja, cada bit representa o estado de um
53- //: GPIO. Caso o bit seja 0, o valor do nível lógico é zero e caso seja 1, o
54- //: valor do nível lógio é 1)
66+ //: GPIO. Caso o bit seja 0, o valor do nível lógico é @Link(glLow) e caso
67+ //: seja 1, o valor do nível lógio é @Link(glHigh))
5568 //: @Member(GPLEV1 Este membro representa o registrador GPLEV1, o qual
5669 //: contém o segundo conjunto de campos de níveis lógicos dos GPIO,
5770 //: abrangendo os GPIO de 32 a 53, ou seja, cada bit representa o estado de um
58- //: GPIO. Caso o bit seja 0, o valor do nível lógico é zero e caso seja 1, o
59- //: valor do nível lógio é 1)
71+ //: GPIO. Caso o bit seja 0, o valor do nível lógico é @Link(glLow) e caso
72+ //: seja 1, o valor do nível lógio é @Link(glHigh))
73+ //: @SeeAlso(TGPIOLevel)
6074 TSavedState = record
6175 GPFSEL0: UInt32;
6276 GPFSEL1: UInt32;
@@ -68,20 +82,24 @@
6882 GPLEV1: UInt32;
6983 end;
7084
85+ (* doc.ok *)
7186 //: Este tipo define um subconjunto de números que variam de 0 a 53 e que
7287 //: serve para representar cada um dos 54 GPIOs disponíveis no Raspberry PI 3
7388 //: (segundo o datasheet do BCM2837).
7489 TGPIONumber = 0..53;
90+ (* doc.ok *)
7591 //: Este tipo define um subconjunto de números que variam de 0 a 27 e que
7692 //: serve para representar os 28 primeiros GPIOs que possuem um pino físico
7793 //: associado. Este tipo pode ser usado em loops ou funções quando se quer
7894 //: limitar o acesso a apenas os pinos que são manipuláveis externamente
7995 TGPIONumberExposed = 0..27;
96+ (* doc.ok *)
8097 //: Este tipo representa os 40 pinos físicos do RPI. O Raspberry PI 3 expõe
8198 //: 40 pinos físicos e destes, apenas 28 estão efetivamente associados a algum
8299 //: GPIO. Os outros 12 pinos físicos contém GND e saídas de 5v e 3.3v.
83100 //: @SeeAlso(TGPIONumberExposed)
84101 TGPIOPhysicalPinNumber = 1..40;
102+ (* doc.ok *)
85103 //: Esta enumeração lista todos os possíveis modos dos GPIOs. Cada GPIO pode
86104 //: ter até seis funções alternativas além de entrada e saída. As funções
87105 //: alternativas Alt0 a Alt5 dependem de cada GPIO e a tabela nas páginas 102
@@ -97,11 +115,19 @@
97115 //: @value(gmAlt4 Habilita o modo alternativo 4 para o GPIO em questão)
98116 //: @value(gmAlt5 Habilita o modo alternativo 5 para o GPIO em questão)
99117 TGPIOMode = (gmInput,gmOutput,gmAlt5,gmAlt4,gmAlt0,gmAlt1,gmAlt2,gmAlt3);
118+ (* doc.ok *)
100119 //: Este tipo define um subconjunto numérico fixo de 0 a 5, o qual é usado nas
101120 //: funções que manipuluam os registradores GPFSEL. Existem seis registradores
102121 //: GPFSEL, numerados de 0 a 5, dentre os conjuntos de registradores de GPIO.
103122 //: @SeeAlso(TGPIOMode)
104123 TGPIOModeBank = 0..5;
124+ (* doc.ok *)
125+ //: Este tipo define um subconjunto numérico que representa um dos dois
126+ //: registradores de níveis lógicos dos GPIO (GPLEV0 e GPLEV1). Este tipo pode
127+ //: ser usado para explicitar que o número que for utilizado (@Code(0) ou
128+ //: @Code(1)) representa um dos registradores de níveis lógicos
129+ TPRGPIOLevelBank = 0..1;
130+ (* doc.ok *)
105131 //: Esta enumeração representa os possíveis estados dos "resistores pull"
106132 //: associados a cada GPIO. Cada GPIO possui um "resitor pull" que serve para
107133 //: garantir um nível lógico inicial consistente quando o modo de operação de
@@ -129,27 +155,24 @@
129155 //: lido do GPIO seja 1 (@Link(glHigh)), até que, por algum agente externo,
130156 //: ele se torne 0 (@Link(glLow)). Se você deseja detectar uma mudança de
131157 //: estado lógico de @Link(glHigh) para @Link(glLow) em um GPIO, o resistor
132- //: pull deste GPIO precisa estar configurado como prgprUp. O agente externo
158+ //: pull deste GPIO precisa estar configurado como gprUp. O agente externo
133159 //: pode ser, por exemplo, um botão que, quando pressionado, conecta GND ao
134160 //: GPIO, o qual, antes do pressionamento tinha nível lógico 1 e após o
135161 //: pressionamento tem nível lógico 0)
136162 //: @SeeAlso(TGPIOLevel)
137163 TGPIOPullRegister = (gprOff,gprDown,gprUp);
164+ (* doc.ok *)
138165 //: Esta enumeração representa os dois possíveis níveis lógicos que cada GPIO
139- //: pode assumir
166+ //: pode assumir ou detectar
140167 //: @Value(glLow Representa o nível lógico 0, e convenientemente tem valor
141168 //: ordinal igual a @Code(0) dentro da enumeração)
142169 //: @Value(glHigh Representa o nível lógico 1, e convenientemente tem valor
143170 //: ordinal igual a @Code(1) dentro da enumeração)
144171 TGPIOLevel = (glLow,glHigh);
145- //: Este tipo define um subconjunto numérico que representa um dos dois
146- //: registradores de níveis lógicos dos GPIO (GPLEV0 e GPLEV1). Este tipo pode
147- //: ser usado para explicitar que o número que form utilizado (@Code(0) ou @Code(1))
148- //: representa um dos registradores de níveis lógicos
149- TPRGPIOLevelBank = 0..1;
150172
151173 { TGPIO }
152174
175+ (* doc.ok *)
153176 //: Este record representa um GPIO acessado a partir da classe TPasRipherals
154177 //: @Member(Mode Obtém ou configura o modo do GPIO atual. @SeeAlso(TGPIOMode))
155178 //: @Member(PullRegister Configura o resistor de pull do GPIO atual. Não é
@@ -167,10 +190,7 @@
167190 FGPIONumber: TGPIONumber;
168191 FPasRipherals: TCustomPasRipherals;
169192
170- // -------------------------------------------------------------------------
171- // Funções acessórias para posicionamento de registradores e bits
172- // -------------------------------------------------------------------------
173-
193+ (* doc.ok *)
174194 //: Esta função é responsável por selecionar um dos registradores, no caso
175195 //: de haver mais de um desses registradores por funcionalidade, quando a
176196 //: informação contida nestes é de exatamente 1 bit por GPIO, que em outras
@@ -191,16 +211,19 @@
191211 //: partir do número do GPIO é diferente
192212 //: @SeeAlso(_10FieldRegisterGroupIndex)
193213 function _32FieldRegisterGroupIndex: UInt8;
214+ (* doc.ok *)
194215 //: Esta função é responsvel por selecionar um dos campos dentro de um
195216 //: registrador, quando cada campo tem exatamente um bit de tamanho. Como
196217 //: todos os registradores do RPI tem 32 bits, esta função retorna um valor
197218 //: de 0 a 31 sempre.
198219 function _1BitFieldIndex: UInt8;
220+ (* doc.ok *)
199221 //: Esta função retorna o valor que corresponde ao número binário formado
200222 //: pelo bit ligado na posição indicada em _1BitFieldIndex, por exemplo, se
201223 //: FGPIONumber = 18, _1BitFieldIndex = 18 e _1BitFieldValue, em notação
202224 //: binária, é um 1, seguido de 18 zeros, que corresponde a 262.144 decimal.
203225 function _1BitFieldValue: UInt32;
226+ (* doc.ok *)
204227 //: Esta função é responsável por selecionar um dos registradores, no caso
205228 //: de haver mais de um desses registradores por funcionalidade, quando a
206229 //: informação contida nestes é de exatamente 3 bits por GPIO, que em outras
@@ -209,6 +232,7 @@
209232 //: de cada GPIO, logo, esta função retorna um número de 0 a n-1, onde n é a
210233 //: quantidade de registradores que forma o conjunto, no caso 6, logo, para
211234 //: este caso, esta função retorna um valor comprendido entre 0 e 5.
235+ //: @SeeAlso(_32FieldRegisterGroupIndex)
212236 function _10FieldRegisterGroupIndex: UInt8;
213237
214238 // -------------------------------------------------------------------------
@@ -218,27 +242,33 @@
218242 // offsets o ponteiro resultante estará posicionado no byte zero do
219243 // registrador correspondente. No caso de registradores divididos em dois ou
220244 // mais grupos, o offset indica apenas o primeiro deles. Para acessar o
221- // próximo conjunto, incremente-o com RegisterGroupIndex
245+ // próximo conjunto, incremente-o com uma das funções "RegisterGroupIndex"
222246 // -------------------------------------------------------------------------
223247
248+ (* doc.ok *)
224249 //: Esta função retorna um ponteiro para um dos registradores GPFSEL. A
225250 //: seleção do registrador correto é automática e depende do número do GPIO
226251 //: atual
227252 function RegisterGPFSEL: PUInt32;
253+ (* doc.ok *)
228254 //: Esta função retorna um ponteiro para um dos registradores GPLEV. A
229255 //: seleção do registrador correto é automática e depende do número do GPIO
230256 //: atual
231257 function RegisterGPLEV: PUInt32;
258+ (* doc.ok *)
232259 //: Esta função retorna um ponteiro para um dos registradores GPSET. A
233260 //: seleção do registrador correto é automática e depende do número do GPIO
234261 //: atual
235262 function RegisterGPSET: PUInt32;
263+ (* doc.ok *)
236264 //: Esta função retorna um ponteiro para um dos registradores GPCLR. A
237265 //: seleção do registrador correto é automática e depende do número do GPIO
238266 //: atual
239267 function RegisterGPCLR: PUInt32;
268+ (* doc.ok *)
240269 //: Esta função retorna um ponteiro para o registrador GPPUD
241270 function RegisterGPPUD: PUInt32;
271+ (* doc.ok *)
242272 //: Esta função retorna um ponteiro para um dos registradores GPPUDCLK. A
243273 //: seleção do registrador correto é automática e depende do número do GPIO
244274 //: atual
@@ -257,9 +287,11 @@
257287 property Level: TGPIOLevel read GetLevel write SetLevel;
258288 end;
259289
290+ (* doc.ok *)
260291 //: Este tipo define um subconjunto numérico para representar um dos dois
261292 //: canais PWM existentes no RPI
262293 TPWMChannel = 0..1;
294+ (* doc.ok *)
263295 //: Esta enumeração define os dois possíveis valores para a polaridade de cada
264296 //: canal PWM (Campos POLA1 e POLA2 do registrador CTL. DataSheet p. 141-143)
265297 //: @Value(ppNormal Polaridade normal (padrão))
@@ -268,6 +300,7 @@
268300
269301 { TPWM }
270302
303+ (* doc.ok *)
271304 //: Este record representa um caal PWM acessado a partir da classe
272305 //: TPasRipherals
273306 //: @Member(MarkSpaceEnabled Habilita ou desabilita o modo Mark/Space no canal
@@ -288,10 +321,13 @@
288321 FPWMChannel: TPWMChannel;
289322 FPasRipherals: TCustomPasRipherals;
290323
324+ (* doc.ok *)
291325 //: Esta função retorna um ponteiro para o registrador CTL
292326 function RegisterCTL: PUInt32;
327+ (* doc.ok *)
293328 //: Esta função retorna um ponteiro para o registrador RNG
294329 function RegisterRNG: PUInt32;
330+ (* doc.ok *)
295331 //: Esta função retorna um ponteiro para o registrador DAT
296332 function RegisterDAT: PUInt32;
297333
@@ -307,6 +343,7 @@
307343 procedure SetMarkSpaceEnabled(APWMMarkSpaceEnabled: Boolean);
308344 procedure SetRange(APWMRange: UInt32);
309345 public
346+ (* doc.ok *)
310347 //: Configura todas as características do PWM atual de uma só vez e de forma
311348 //: livre. É recomendável usar a outra versão desta função, mais
312349 //: simplificada e direcionada para parâmetros da vida real, como datasheets
@@ -324,6 +361,7 @@
324361 //: ele se manterá desabilitado)
325362 //: @SeeAlso(TPWMPolarity)
326363 procedure Configure(AMarkSpaceEnabled: Boolean; APolarity: TPWMPolarity; ARange: UInt32; AData: UInt32; AEnabled: Boolean); overload;
364+ (* doc.ok *)
327365 //: Configura de forma simplificada o PWM. Esta função configura o modo
328366 //: Mark-Space, define a polaridade como @Link(ppNormal), calcula o range
329367 //: de acordo com o ciclo de repetição informado, configura o registrador
@@ -367,16 +405,7 @@
367405 property CurrentConfig: String read GetCurrentConfig;
368406 end;
369407
370- { Para criar um novo record de periférico, inclua de forma privada um ou mais
371- campos para o seletor (no caso de haver mais de um periférico do mesmo tipo) e
372- um campo privado para acesso a TCustomPasRipherals. As propriedades expostas
373- serão sempre relativas a elementos internos dos registradores aplicáveis, por
374- exemplo, se um dos registradores do periférico define que determinados bits
375- correspondem a um modo de operação, haverá uma propriedade "modo" que vai
376- atuar (ler e/ou escrever) apenas naqueles bits específicos. Crie funções para
377- acesso direto a cada um dos registradores do periférico. Use outros records
378- como exemplo }
379-
408+ (* doc.ok *)
380409 //: Esta enumeração representa os possíveis clocks que o RPI possui
381410 //: @Value(ciGP0 Use este valor para referir-se ao clock geral 0)
382411 //: @Value(ciGP1 Use este valor para referir-se ao clock geral 1)
@@ -384,6 +413,11 @@
384413 //: @Value(ciPCM Use este valor para referir-se ao clock de PCM)
385414 //: @Value(ciPWM Use este valor para referir-se ao clock de PWM)
386415 TClockId = (ciGP0, ciGP1, ciGP2, ciPCM, ciPWM);
416+
417+ defina aqui o resto das explicações para os geradores de clock. coloque suas
418+ frequencias
419+ continue aqui
420+
387421 //: Esta enumeração representa todas as possíveis fontes de geração de pulsos
388422 //: de clock disponíveis no RPI
389423 //: @Value(csGND Não existe gerador de pulso de clock para este valor)
@@ -391,7 +425,6 @@
391425 //: de clock)
392426 //: @Value(csTestDebug0)
393427 //: @Value(csTestDebug1)
394- defina aqui o resto das explicações para os geradores de clock. coloque suas frequencias
395428 //: @Value(csPLLA)
396429 //: @Value(csPLLC)
397430 //: @Value(csPLLD)
Show on old repository browser