Blokhaken

Arduino specifieke Software
Gebruikers-avatar
Berichten: 8
Geregistreerd: 10 Jan 2020, 23:21
Woonplaats: Westervoort

Blokhaken

Berichtdoor FritsS » 17 Feb 2020, 17:36

In het manual van Microchip betreffende de ATmega328 wordt bij de behandeling van de SPI module op pagina 172 een voorbeeld gegeven in assembler en in C om een Master op te zetten.
Daar lees ik de instructie: ldi R17, (1<<DD_MOSI) | (1<<DD_SCK)

Mijn vraag is: wat betekent die uitdrukking? Ja, laadt iets in R17, maar dan?

DD_MOSI mag ik vervangen door het bit in het Data Direction register dat de bewuste pin aangeeft. Maar wat betekenen die blokhaken?
<< staat bij mij voor shift links, maar dat verband kan ik hier niet leggen. Wat mis ik?

Jullie zullen denken, nou een heleboel, begin er maar niet aan. Maar ik wil toch een poging wagen. :?
Bij voorbaat dank.

Advertisement

Gebruikers-avatar
Berichten: 2399
Geregistreerd: 06 Aug 2016, 01:03

Re: Blokhaken

Berichtdoor Koepel » 17 Feb 2020, 20:28

Weet je wat ik zit te denken, nou een heleboel, begin er maar niet aan :mrgreen:

Die notatie is standaard voor AVR microcontrollers.
De definitie van de bits is bijvoorbeeld niet 0x04 maar 2. Het is bit nummer 2.
Dus je neemt een '1' en schuift die een aantal keren naar links totdat je bij het juiste bit bent.

De '|' is een bitwise 'OR'

Er wordt dus twee bits aangezet.
Ik kan het bestand niet vinden waar DD_MOSI en DD_SCK staan, maar het zal dit zijn:
#define DD_MOSI DDB3
#define DD_SCK DDB5

In iom328p.h zit dit:
#define DDB3 3
#define DDB5 5

Gebruikers-avatar
Berichten: 8
Geregistreerd: 10 Jan 2020, 23:21
Woonplaats: Westervoort

Re: Blokhaken

Berichtdoor FritsS » 17 Feb 2020, 20:57

Bedankt Koepel, je hebt mij toch weer wat wijzer gemaakt. Het is dus een bepaalde schrijfwijze.
Ik zat er dus niet ver naast met mijn idee van 'shift links'. Ik begrijp nu, dat ik hier een binair getal moet laden waarvan er twee bits een een zijn. Namelijk het bit dat het CLK signaal en het bit dat het Mosi signaal controleert inderdaad dat zijn DDB3 en DDB5.

Ok, verder maar weer.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten