- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 45

Thema: Mein erster Code auf dem Mega 32: Lauflicht

  1. #31
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von BlackDevil
    ..Ich hatte gedacht das <pre>PINA&(1<<PAX) </pre> eine 1 zurück gibt wenn PAX gesetzt ist ...also Bool'sch ist -
    ...ist aber rein arithmetisch und deshalb davon abhängig, welches Bit gesetzt ist. Allerdings kannst Du das Ergebnis immer dann als "wahr" betrachten, wenn es nicht NULL ist und immer als "falsch", wenn es NULL ist. Vom Compiler darfst Du erwarten, dass er Dir eine "1" zurückgibt, wenn Du ein wahres Ergebnis eines Vergleichs einer arithmetischen Variablen zuweist.

    Gibts noch generelle Kritik an meinem stück code obeN?
    Nö, sieht schon recht gut aus. Einfach weiter programmieren und versuchen, mit dem Simulator die Fehler selbst zu finden -- und hier fragen, wenn das nicht funktioniert! Auch Debugging will gelernt werden!

    Viel Spaß dabei!

    Fred
    Only entropy comes easy. - Anton Checkhov

  2. #32
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    ...ist aber rein arithmetisch und deshalb davon abhängig, welches Bit gesetzt ist. Allerdings kannst Du das Ergebnis immer dann als "wahr" betrachten, wenn es nicht NULL ist und immer als "falsch", wenn es NULL ist. Vom Compiler darfst Du erwarten, dass er Dir eine "1" zurückgibt, wenn Du ein wahres Ergebnis eines Vergleichs einer arithmetischen Variablen zuweist.
    Um es für BlackDevil noch etwas weiter zu führen:
    Wenn du in einer Variablen mit 0 oder 1 festhalten willst, ob ein bestimmtes Bit gesetzt ist, bringe einfach eine zusätzliche logische Operation ins Spiel. Du kannst es z.B. so machen:
    BitIsSet = (Reg & (1<<Bit)) > 0;
    In diesem Fall ist BitIsSet bei gesetztem Bit immer 1, egal an welcher Position das Bit denn nun genau ist.
    MfG
    Stefan

  3. #33
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.614
    Die AVR Funktionen bit_is_set und outp funktionieren Leider nicht. Danke für die Zahlreichen und hilfreichen Antworten!

  4. #34
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Hi,

    Zitat Zitat von BlackDevil
    Die AVR Funktion bit_is_set und outp funktionieren Leider nicht.
    siehe mein Posting von 22:53 ... "outp" ist, glaube ich, ein Teil alter GCC Versionen. "bit_is_clear/set()" funktionieren -- siehe Anlage. Welche GCC Version verwendest Du?

    Gruß

    Fred
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken bit_is_xyz.png  
    Only entropy comes easy. - Anton Checkhov

  5. #35
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.614
    Ich meine die Aktuellste version runtergeladen zu haben - gut dann funktionieren die beiden nich - macht auch nichts

  6. #36
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Hi,

    Zitat Zitat von BlackDevil
    Ich meine die Aktuellste version runtergeladen zu haben - gut dann funktionieren die beiden nich - macht auch nichts
    sieh doch bitte nach, welche GCC Version Du tatsächlich hast und poste ein Beispiel (möglichst abgespeckt), das nicht funktioniert!

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  7. #37
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.614
    <pre>int main (void) {
    DDRA=0x00;
    DDRB=0xff;
    while(1) { // MAINSCHLEIFE
    if(bit_is_set(PINA,PA1)) PB0=1;
    }
    return 0;
    }
    </pre>

    WinAVR 20080512

    Kann aber auch sein das ichs nur Falsch benutz

  8. #38
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Hi,

    Zitat Zitat von BlackDevil
    if(bit_is_set(PINA,PA1)) PB0=1;
    jeder anständige Compiler müsste da gewaltig meckern (und keinen Code liefern!), denn Du meinst (rate ich mal) wahrscheinlich PORTB=1; . Hast Du mal auf die Fehler-/Warnmeldungen geschaut?

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  9. #39
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.614
    Jep, denkfehler gefunden - danke. Lag an PIN/PORT

  10. #40
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    70
    Beiträge
    622
    Hi,
    Zitat Zitat von BlackDevil
    Jep, denkfehler gefunden - danke. Lag an PIN/PORT
    genau! ich habe das Programmieren auf Englisch gelernt und würfele englische und deutsche Fachbegriffe immer durcheinander. Ich glaube aber, man sagt auch auf Deutsch "lvalue" und "rvalue" . Nur ein "lvalue" darf links von einem Gleichheitszeichen stehen; rechts stehen "rvalues". Man kann also z.B. nicht einer numerischen Konstante (ist immer ein "rvalue") einen neuen Wert zuweisen:<pre>1=2;</pre> wäre Unsinn. Gleiches gilt für die I/O-Pins, die eben nur "rvalue" sind.
    Ich habe Dein Programm gerade mal zu kompilieren versucht (gcc Version vom Dezember 2007) und bekomme (zu Recht!) die Fehlermeldung:<pre>
    ..error: lvalue required as left operand of assignment</pre>

    Das nur noch als Ergänzung.

    Viele Grüße

    Fred
    Only entropy comes easy. - Anton Checkhov

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress