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

Thema: Verständnisproblem #define

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Also wird unterschieden, ob PORTD oder PORTB beschrieben werden soll und dazu passend aus dem #define das PD5 bzw PB5 ausgewählt?
    Nein, im Define ist es immer PB5. Aber PD5 und PB5 sind einfach beide das Gleiche, nämlich einfach 5.
    Code:
    PORTD = 1<<PD5;
    PORTD = 1<<PB5;
    PORTD = 1<<5;
    Alle drei Zeilen sind völlig identisch.


    PS: Ist aber schlechter Programmierstil, weil verwirrend (wie man sieht).
    Ich hätte es eher so geschrieben:
    Code:
    #define  FWD  (1 << 5)    /* PD5,PB5 */
    Geändert von sternst (23.01.2012 um 14:25 Uhr)
    MfG
    Stefan

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Wenn dein Programm io.h includet, dann sucht der Kompiler nach der zum Kontroller passenden io-Datei:

    C:\WinAVR\avr\include\avr\iom8.h

    Und in dieser Datei findest du die Defines für PB5 und PD5.
    (Da findet man auch die schwer zu merkenden ISR-Namen)

    Gruß

    mic

    "wurde scheinbar vom Asuro adoptiert" Quelle des Programms?
    Geändert von radbruch (23.01.2012 um 14:35 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Zitat Zitat von radbruch Beitrag anzeigen
    wurde scheinbar vom Asuro adoptiert" Quelle des Programms?
    Jemand an unserer Hochschule hat das Board und das Programm dazu geschrieben. War vor 2 oder 3 Jahren bei einem Wettkampf an der FH im Einsatz. Wurde dann durch ein neues, komplexeres Board ersetzt (dass ich auch für meinen Low-Cost-Bot verwende). Ich konnte halt ein paar "Restbestände" abgreifen.
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Nachtrag:

    Kann mir noch jemand erklären, warum bei MotorDir(FREE,FREE); die Motoren frei drehen?

    Um dies zu erreichen muss der Enable-Pin des jeweiligen Motors auf LOW gezogen werden. Das wären ja die beiden PWM-Pins OC1A und OC1B bzw. PB2 und PB3.

    Nach meinem, scheinbar fehlerhaften, Verständnis wird ja so der PORTD bzw. PORTB komplett auf LOW gezogen. Davon unbeeindruckt dürfte doch aber die PWM-Einstellung sein wordurch die Enable-Pins nicht (dauerhaft) auf LOW gezogen werden.
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Negativ, FREE setzt jeweils die Pins 4 und 5 auf HIGH. Die beiden High-Side Transistoren werden also ausgeschaltet, die beiden Low-Side Transistoren werden durch das PWM beeinflusst. Der Stromfluss setzt sich aber unabhängig von den Low-Side Transistoren durch die Freilaufdioden fort, der Motor wird relativ wenig abgebremst. Bei BREAK wird dagegen der Stromfluss abgebremst, da VCC bei den High-Side Transistoren durchgeschaltet wird, der Stromfluss durch die beiden unteren Freilaufdioden aber eigentlich in die entgegengesetzt Richtung läuft.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

Ähnliche Themen

  1. Baudraten - #define xxx und einige Auswirkungen
    Von oberallgeier im Forum Software, Algorithmen und KI
    Antworten: 14
    Letzter Beitrag: 15.11.2011, 09:04
  2. #define und adressen setzten in asm30 - dspic
    Von Pitt1986 im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 10.06.2008, 20:13
  3. Mit #define zugewiesene Konstanten nicht zuweisbar?
    Von EDatabaseError im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 21.05.2008, 17:09
  4. Verständnisproblem declare Sub
    Von meldano im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 15.06.2007, 05:56
  5. #define send, #define reveice
    Von pebisoft im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 09.03.2005, 07:37

Berechtigungen

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

12V Akku bauen