Oldal: 3 / 3

Elküldve: 2012. augusztus 14. kedd, 16:50
Szerző: Robert
Ez C++!
Az ANSI C az a nyelv alapja.....

Elküldve: 2012. augusztus 14. kedd, 18:54
Szerző: kapu48
Már rájöttem a 40. oldal körül!
De a lényeg, a kettős kacsa csőrözést nem értettem!
Azért kérdeztem rá többször. A végén kiderült, hogy:
„Igazából ez nem rotálás, hanem shiftelés (bit-eltolás).
A rotálásnál a kimenő bitet visszatesszük a másik oldalra.
Shiftelésnél 0-k kerülnek be” << Vagyis törli az általam módosítani nem kívánt biteket!
Ezért aztán csak az adat eltolására << 3 jó,
Ahogy te javasoltad talán járhatóbb.
XXXX XXXX XXXX XXXX Beolvasom 16 bites kimeneti regisztert
& 1111 1000 0000 0111 ÉS Maszk
XXXX X000 0000 0XXX Eredmény
| 0000 0XXX XXXX X000 << 3 a ki küldendő Byte
VAGY után az eredmény mehet ki.


Megvan:
cin: Bemenet >> változó
cout: Kimenet << kifejezés
HÁP-HÁP!
:lol:

Elküldve: 2012. augusztus 14. kedd, 22:57
Szerző: macsek
kapu48 írta:Megtaláltam a könyvem.
C++ könyv: http://doksi.hu/get.php?lid=1051
(regisztrálni kel!)
ITT is körülnézhetsz. Szintén regisztrálós.
kapu48 írta:Talán nem zavarlak több buta kérdéssel.
8)
Ha nem buta kérdés (és eddig nem kérdeztél butákat) akkor tedd fel nyugodtan ezután is. Legföljebb nem válaszolunk :twisted:

Elküldve: 2012. augusztus 14. kedd, 22:59
Szerző: macsek
kapu48 írta: XXXX XXXX XXXX XXXX Beolvasom 16 bites kimeneti regisztert
& 1111 1000 0000 0111 ÉS Maszk
XXXX X000 0000 0XXX Eredmény
| 0000 0XXX XXXX X000 << 3 a ki küldendő Byte
VAGY után az eredmény mehet ki.
Igen. Tök jól megértetted.

Elküldve: 2012. augusztus 15. szerda, 7:34
Szerző: kapu48
Közben rájöttem pont erre valók ezek a regiszterek:

GPIO port bit set/reset register (GPIOx_BSRR) (x = A..I)
Address offset: 0x18
Reset value: 0x0000 0000

Bits 31:16 BRy: Port x reset bit y (y = 0..15)
These bits are write-only and can be accessed in word, half-word or byte mode. A read to
these bits returns the value 0x0000.
0: No action on the corresponding ODRx bit
1: Resets the corresponding ODRx bit
Note: If both BSx and BRx are set, BSx has priority.

Bits 15:0 BSy: Port x set bit y (y= 0..15)
These bits are write-only and can be accessed in word, half-word or byte mode. A read to
these bits returns the value 0x0000.
0: No action on the corresponding ODRx bit
1: Sets the corresponding ODRx bit

És vannak is hozzá kezelő rutinok készen:

Kód: Egész kijelölése

/**
  * @brief  Sets the selected data port bits.
  * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify 
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRL = GPIO_Pin;
}

/**
  * @brief  Clears the selected data port bits.
  * @note   This functions uses GPIOx_BSRR register to allow atomic read/modify 
  *         accesses. In this way, there is no risk of an IRQ occurring between
  *         the read and the modify access.
  * @param  GPIOx: where x can be (A..I) to select the GPIO peripheral.
  * @param  GPIO_Pin: specifies the port bits to be written.
  *          This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  * @retval None
  */
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  GPIOx->BSRRH = GPIO_Pin;
}
Igy már könyebb a dolgom:

Kód: Egész kijelölése

void GLCD_Wriete(uint16_t databyte){
// Ide még kel az LCD vezérlés?
	//Törlünk egy 8 bites ablakot:
	GPIO_ResetBits(GLCD_DATA_PORT,  0x07F8);	// 0x07F8
	//És bele irjuk az adatunkat:
	databyte <<= 3;		//Balra 3 bitel
	GPIO_SetBits(GLCD_DATA_PORT, databyte);
	//Mindjárt egyszerűbb a dolgom.	
}


Még ezt nem értem mire jók a függvényekben:

Kód: Egész kijelölése

  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
Valami hiba ellenőrzés, amit be kellene fejezni?