-         

Ergebnis 1 bis 6 von 6

Thema: 74HC595: OE-Pin nicht PWM-Fähig? Oder Fehler bei Mega644-Code?

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987

    74HC595: OE-Pin nicht PWM-Fähig? Oder Fehler bei Mega644-Code?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Moin.

    Ein 7-Segment-Display wird über ein Schieberegister 74HC595 und ein ULN2803 als "Treiber" angesteuert. Der OE-Pin (Output Enable) des 595 hängt an einem ATMega644 an PB3 (OCR0A). Der Plan dahinter: Die Helligkeit der LEDs steuern.

    Wenn ich in einer While-Loop den Pin mit z.B. 200 Hz "manuell" mit verschiedenen Pulsweiten an- und abschalte, dann wirds schon dunkler. Versuch ich das ganze mit PWM, leuchten die LEDs mit voller Helligkeit weiter.

    Hackts da jetzt beim Code für die PWM-Init (siehe unten) oder ist der OE-Eingang für "echte" PWM einfach zu lahm?

    Code:
    DDRB |= (1 <<  DDB3);
    TCCR0A  = (1  << WGM00) | (1 << COM0A0) | (1 << CS00) |(1 <<  CS02);
    TIMSK0 |= (1 << OCIE0A);
    sei();
      
     while(1)
     {
        OCR0A++;
        _delay_ms(25);
     }
    Mit dem Code würde ich eigentlich erwarten, dass die Helligkeit der Anzeige zyklisch durchläuft. Passiert aber wie gesagt nicht.
    Oder ist da irgendwo ein Bit, das ich noch übersehen hab?

    mfG
    Geändert von Jaecko (26.03.2011 um 21:38 Uhr) Grund: Tippfehler/Formatierung
    #ifndef MfG
    #define MfG

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.410
    Blog-Einträge
    101
    Hallo,
    die CS00 und CS02 Bits befinden sich im TCCR0B Register. Wenn ich C richtig interpretiere, wird in Deinem Code der Prescaler dann nicht gesetzt und der Timer läuft nicht los.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Heidenei... Thx.
    Stimmt tatsächlich, dass die Bits im anderen Register sind.
    Hab die Bits in den Tabellen im Datenblatt sogar mehrmals angeschaut und verschiedene WGM/CS-Kombinationen durchprobiert und immer wieder nachgeprüft.
    Aber dass die im B-Register sind, ist mir nie aufgefallen.
    (Mal wieder typischer Copy&Paste-Fehler)
    #ifndef MfG
    #define MfG

  4. #4
    Unregistriert
    Gast

    595 direkt an ULN?

    Jeacko,
    ich hätte da eine Frage an dich:
    Ich baue eine ähnliche Schaltung, und frage mich ob ich zwischen dem 74HC595 und dem ULN2803 Pull-Down-Widerstände brauche. Oder kann ich die direkt verbinden ohne Schnickschnack (wenn ich OE als PWM verwende)? Wie verhält sich da der Tri-State-Ausgang?
    LG
    Peter

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.397
    Zitat Zitat von Unregistriert Beitrag anzeigen
    Ich baue eine ähnliche Schaltung, und frage mich ob ich zwischen dem 74HC595 und dem ULN2803 Pull-Down-Widerstände brauche.
    Was spricht gegen einen Blick ins Datenblatt?

    Klicke auf die Grafik für eine größere Ansicht

Name:	ULN2803.png
Hits:	4
Größe:	31,4 KB
ID:	27611

    Wie verhält sich da der Tri-State-Ausgang?
    So wie sich Tri-State nun mal verhält, er wird hochohmig.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Genau diese Reihenfolge 74HC595 => ULN2803 hab ich in dieser Schaltung auch verbaut.
    Einfach direkt verbinden ohne Pulls dazwischen. Fehlt durch OE = High das Ausgangssignal des 595, zieht die interne Beschaltung des ULN2803 jeden Eingang nach GND (siehe Schaltung im vorherigen Beitrag) und die Ausgänge des 2803 werden nicht nach GND gezogen.
    #ifndef MfG
    #define MfG

Ähnliche Themen

  1. Fehler im Code?
    Von mtzE im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 08.05.2010, 00:40
  2. Assembler Code wo liegt mein Fehler?
    Von DanielSan im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 24.08.2009, 18:35
  3. page 12 nicht mehr flash-fähig
    Von Weiti im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 04.11.2007, 23:25
  4. Fehler im Assembler-Code
    Von dark emporer im Forum AVR Hardwarethemen
    Antworten: 18
    Letzter Beitrag: 09.08.2005, 17:50
  5. Fehler im Code
    Von Vorobo im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 10.10.2004, 13:43

Berechtigungen

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