- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: C-Nachhilfe

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.12.2006
    Ort
    Minneapolis
    Beiträge
    30

    C-Nachhilfe

    Anzeige

    E-Bike
    Kann mir einer mal bitte einen kurzen Nahhilfekurs bei den C Bit-Bearbeitungsbefehlen geben. Man findet diesen Code zuhauf in der asuro.c und den direkten Ansteuerungen der verschiedenen Register. Hier mal 4 Beispiel Code-Zeilen:
    Code:
    #define RIGHT_DIR (1 << PB4) | (1 << PB5)	// !< PB4, PB5 Ports fuer Drehrichtung rechter Motor 
    TIMSK |= (1 << TOIE2);                          // 36kHz counter for sleep
    DDRB = IRTX | LEFT_DIR | PWM | GREEN_LED;
    TCCR1A = (1 << WGM10) | (1 << COM1A1) | (1 << COM1B1);
    Insbesondere interessiert mich der |= Befehl und das (1 << WGM10) | (1 << COM1A1)

    Wer kann mir helfen und zusätzlich noch ein guten downloadable C-Primer empfehlen.

    Besten Dank!

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    also:
    wenn ein operator direkt vor einem gleichzeichen steht dann bedeutet das folgendes:
    anstelle von VARIABLE A (operator)= Wariable B
    kann man auch schreiben
    VARIABLE A = VARIABLE A (operator) VARIABLE B

    also:
    a+=b ist das gleiche wie a=a+b
    und
    a|=b ist das gleiche wie a=a|b
    die in grossbuchstaben geschriebenen worte sind register. in jedem register steht eine 8bit-zahl.
    nehmen wir mal 8-bit zahlen als beispiel:
    11110000 | 00001111 = 11111111
    (| bedeutet oder, also wenn eines der bits gesetzt ist dann ist im ergebnis das bit gesetzt)
    also wenn a=11110000 und b=00001111 dann:
    a|=b
    danach ist a=11111111

    die pfeile << bedeuten folgendes:
    aus
    00000001 wird
    00000010
    es wird also verschoben. das gegenzeichen dazu ist logischerweise >>

    zum beginn mit c (diese befehle sind auf registerebene und haben mit c nur bedingt was zu tun) empfehle ich dir das hier:
    http://download.galileo-press.de/ope...on_a_bis_z.zip
    hier als online-version mit suchfunktion:
    http://www.pronix.de/pronix-4.html
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    27.12.2006
    Ort
    Minneapolis
    Beiträge
    30
    Zitat Zitat von damaltor
    also:
    wenn ein operator direkt vor einem gleichzeichen steht dann bedeutet das folgendes:
    anstelle von VARIABLE A (operator)= Wariable B
    kann man auch schreiben
    VARIABLE A = VARIABLE A (operator) VARIABLE B

    also:
    a+=b ist das gleiche wie a=a+b
    und
    a|=b ist das gleiche wie a=a|b
    die in grossbuchstaben geschriebenen worte sind register. in jedem register steht eine 8bit-zahl.
    nehmen wir mal 8-bit zahlen als beispiel:
    11110000 | 00001111 = 11111111
    (| bedeutet oder, also wenn eines der bits gesetzt ist dann ist im ergebnis das bit gesetzt)
    also wenn a=11110000 und b=00001111 dann:
    a|=b
    danach ist a=11111111

    die pfeile << bedeuten folgendes:
    aus
    00000001 wird
    00000010
    es wird also verschoben. das gegenzeichen dazu ist logischerweise >>

    zum beginn mit c (diese befehle sind auf registerebene und haben mit c nur bedingt was zu tun) empfehle ich dir das hier:
    http://download.galileo-press.de/ope...on_a_bis_z.zip
    hier als online-version mit suchfunktion:
    http://www.pronix.de/pronix-4.html
    vielen Dank "damaltor".

    Letzte Frage. Was bedeutet dann "(1 << WGM10)" ?

    gruß

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.11.2006
    Ort
    Hamburg
    Alter
    35
    Beiträge
    184
    ein register hat 8bit, also 00000000. wenn du ein bestimmte bit verändern will machst du (1 << [bit nummer 0 bis 7]).
    0 ist die erste bit, 7 ist die letzte
    bits anordnung: 76543210

    beispiel
    a = 0b00000000 // 0bxx ist binärschreibweise wie 0xFF für hexadecimal
    a |= (1 << 2) // die dritte bit wird gesetzt

    a ist jetzt 00000100
    Gruß Raid

    Der ^^ Mann

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    genau.
    WGM10 ist einer der register des asuro. wenn du im datenblatt suchst (gib ma STRG+F ein, dann kannst du suchen) dann findest du eine erklärung der funktion.
    und in diesem register wird dann ein bit gesetzt.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test