- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 6 von 6

Thema: bedarfsgerechte Portumschaltung

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159

    bedarfsgerechte Portumschaltung

    Anzeige

    Praxistest und DIY Projekte
    Bei der Verbindung eines Atmega8 mit einer C-Control (siehe mein
    Beitrag in der entsprechenden Rubrik) fiel mir auf, dass die C-Control
    beim Einschalten teilweise undefinierte Schaltzustände einnimmt.
    Das gehört zwar nicht zum hiesigen Thema, jedoch habe ich jetzt folgende
    Frage zur AVR-Programmierung (BASCOM): Ist es möglich die Ports des
    AVR, welche Signale senden sollen, nur zum Beginn des Zweckes als
    Ausgang zu dimensionieren und danach wieder als Eingang? Im Programm
    also hin und her? Da das mit dem Analogmultiplexer problemlos
    funktioniert, glaube ich zwar, dass das auch mit der dauernden
    Umschaltung auf Ein- und Ausgang funktioniert, will es jedoch gern
    wissen, bevor ich was zerschiesse. Das würde den (nicht mehr gut
    möglichen) Einbau von Schutzwiderständen vermeiden.
    Vielen Dank und viele Gruesse. Micha

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo Micha,
    über das DDR Register kannst du jeden Pin beliebig hin und herschalten.
    Aufpassen musst du dabei höchstens auf den Zustand des Ports beim Umschalten. Wenn du von Eingang auf Ausgang umschaltest, wird ein evtl. eingeschalteter PullUp ausgeschaltet.

    Mega8, Seite 52:
    When switching between tri-state ({DDxn, PORTxn} = 0b00) and output high ({DDxn, PORTxn} = 0b11), an intermediate state with either pull-up enabled ({DDxn, PORTxn} = 0b01) or output low ({DDxn, PORTxn} = 0b10) must occur. Normally, the pull-up enabled state is fully acceptable, as a high-impedant environment will not notice the difference between a strong high driver and a pull-up. If this is not the case, the PUD bit in the SFIOR Register can be set to disable all pull-ups in all ports.
    Switching between input with pull-up and output low generates the same problem. The user must use either the tri-state ({DDxn, PORTxn} = 0b00) or the output high state ({DDxn, PORTxn} = 0b11) as an intermediate step.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Vielen Dank for_ro. Wenn ich das richtig verstanden habe wird ein
    Pin, welcher bisher auf INPUT und MIT PULLUP geschaltet ist,
    durch das Umschalten auf OUTPUT auf 0 gesetzt. Also Beispiel:
    - DDRC = &B00000000 Port ist Eingang
    - PORTC = &B11111111 Alle PullUps an
    Jetzt wird umgeschaltet mit:
    - DDRC = &B11111111
    Hat das DDRC-Register nun &B000000 oder immer noch &B11111111 ?
    Oder Kurz gesagt: Lösche ich das DDRC-Register durch Umschalten
    des PORTC-Registers auf OUTPUT automatisch?
    Vielen Dank und viele Gruesse. Micha

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von hardware.bas
    Hat das DDRC-Register nun &B000000 oder immer noch &B11111111?
    Wenn du in das DDRC Register etwas reinschreibst, bleibt dieser Wert erhalten.

    Zitat Zitat von hardware.bas
    Oder Kurz gesagt: Lösche ich das DDRC-Register durch Umschalten des PORTC-Registers auf OUTPUT automatisch?
    Anders herum: Durch Schreiben ins DDRC Register wird evtl. der Wert des PortC Registers abgeändert. Das PortC Register wird ja nicht auf Output gesetzt, sondern das DDRC Register. Mit dem Port Register kannst du die ausgegebene Spannung am Anschluss ändern.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Ok, dann werd ich das testen und ggflls. umschreiben.
    Vielen Dank, das Problem ist jetzt insofern gelöst, dass
    ich mit 4 Leitungen eine bidirektionale parallele Verbindung
    zum Austausch von Ziffern herstellen kann.
    VG Micha

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    Nun wird die Kommunikation mit 6 Leitungen bidirektional laufen und es
    müssen keine Ziffern den Stellen zugeordnet werden. Da kein Wert grösser
    als 63 ist, reichen 6 Bit. VG micha

Berechtigungen

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

Solar Speicher und Akkus Tests