- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 173

Thema: Portbelegung auf ATMega für LCD1602

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Hey hallo,

    Es gibt ein extra Befehl was das LCD bzw nur die Anzeige selbst ausschaltet. Muss dann aber trotzdem mit Spannung versorgt werden.

    Wenn du das LCD komplett spannungslos machst, muss es auch neu initalisiert werden.

    Spanung anlegen an ein Bauteil was in der Versorgungsspannung weggeschaltet ist, sollte man tunlichst vermeiden aussser das DB erlaubt es.

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Zitat Zitat von avr_racer Beitrag anzeigen
    Es gibt ein extra Befehl was das LCD bzw nur die Anzeige selbst ausschaltet. Muss dann aber trotzdem mit Spannung versorgt werden.
    Ja, ich weiß. Mach ich auch bevor ich das LCD stromlos setze.
    Zitat Zitat von avr_racer Beitrag anzeigen
    Wenn du das LCD komplett spannungslos machst, muss es auch neu initalisiert werden.
    Ist auch klar.
    Zitat Zitat von avr_racer Beitrag anzeigen
    Spannung anlegen an ein Bauteil was in der Versorgungsspannung weggeschaltet ist, sollte man tunlichst vermeiden ausser das DB erlaubt es.
    Nun, das weiß ich nicht. Aber warum sollte es ein Problem sein, wenn man das LCD von der Versorgungsspannung kappt??
    Es funktioniert jedenfalls einwandfrei.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Okay war mir nicht sicher dir es bewusst war/ist...

    LCD ausschalten per Befehl und nicht stromlos schalten Verbrauch wenige µA....
    LCD bleibt eingeschaltet Strom ca. max. 3mA ohne LED-Beleuchtung.

    Einige Pins/IC mögen eben die Kriechstöme nicht die an den Pins wirken wenn die UB fehlt. Je nach Schaltungsart können diese Kriechströme Umwege über die +Rail nehmen und somit weitere Teile des IC versorgen womit dieser aber nicht richtig funktioniert...

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von avr_racer Beitrag anzeigen
    Einige Pins/IC mögen eben die Kriechstöme nicht die an den Pins wirken wenn die UB fehlt. Je nach Schaltungsart können diese Kriechströme Umwege über die +Rail nehmen und somit weitere Teile des IC versorgen womit dieser aber nicht richtig funktioniert...
    Nun, es sind keine "Kriechströme", es ist der Strom durch die Substratdioden. Diese entstehen bei der Herstellung des Chips und werden vom Marketing gerne als ESD-Schutzdioden verkauft. In manchen Datenblättern ist ein Diagramm einer typischen I/O-Struktur, da sind sie eingezeichnet. Deswegen findet man vielfach auch die Angabe, daß die Spannung an einem I/O Pin nicht größer als die Versorgung + 0,5V oder nicht kleiner als GND - 0,5V sein darf, damit diese Dioden nicht anfangen zu leiten. Ist dann auch noch ein Abblockkondensator am Chip, bildet das einen Halbbrückengleichrichter, der selbst aus wechselden Signalen eine unzuverlässige Versorgung erzeugt. I/O Pins ohne diese Dioden sind schwerer (teurer) herzustellen und werden daher extra beworben, z.B. mit "over the rail".

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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    Ok, danke für die Erklärungen!
    Da ich alle Pins des LCD-Ports am µC für und somit auch die des LCDs auf GND lege, sollte es zu keinen der oben beschriebenen Problemen kommen.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.09.2008
    Ort
    Linz A
    Beiträge
    126
    So, ein Problem, das ich seit Tagen zu klären versuche ...
    Ich komm nicht dahinter
    Deshalb bitte ich um eure Hilfe.

    Das angehängte Progrämmchen ist ein Auszug aus meinem SunTracker Projekt.
    Es soll in einer Schleife die Spannungen am LCD anzeigen und aktuell halten.
    Angezeigt wird in der zweiten Zeile links der 8-Bit ADCH-Wert im ADLAR-Modus und
    rechts der umgerechnete Wert im 10-Bit Modus in Volt (Basis: 15V = 1024).
    Funktioniert super, ABER NUR DANN , wenn die in der Routine DSPVALS die zwischen den beiden ;???? Zeilen stehenden Befehle aktiv sind.

    Werden die Befehle für die Anzeige im 8-Bit Modus deaktiviert, funktioniert die 10-Bit Anzeige/Umrechnung nicht mehr.
    Beim ersten Durchlauf wird zwar die richtige Spannung angezeigt, aber nicht mehr aktualisiert. Die Schleife läuft zwar, aber warum vom ADC nichts mehr kommt oder woran es sonst liegt ????????????

    Poti auf ADC7 hängen oder welchen ihr auch immer testen wollt/könnt.

    Kann mir da jemand weiter helfen?
    Angehängte Dateien Angehängte Dateien
    Geändert von HeSt (02.02.2019 um 07:52 Uhr)

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Hallo,

    1. Warum erst SAVR pushen und dann das SREG sichern in einer normalen Unterroutine ? Register SAVR dient der bloßen Sicherung was der Stack genauso machen könnte und man so wieder ein Register frei hätte falls benötigt.
    Sonst nur notwendig wenn man mit Interrupts arbeitet und z.B. Rechenoperatonen durchführt dann muss/sollte das SREG in der ISR gesichert werden wie folgt:
    Code:
    in      Register , SREG
    PUSH Register
    Prgrammcode
    POP   REGISTER
    2.
    Code:
     WADC:                ;Schleife bis Messung
        sbic    ADCSRA,ADSC    ;abgeschlossen = ADSC=0
        rjmp    wadc
        cbi    ADCSRA,ADEN    ;ADC ausschalten
        out    SREG,savr
        pop    savr
        ret
    Wenn du den ADC jedesmal nach der Wandlung deaktivierst:
    1. braucht der ADC jedesmal bei der ersten Wandlung 25 Zyklen alle weiteren ca 13 Zyklen
    2. das erste Ergebniss ist meist Müll
    3. Die Wandlungsgeschwindigkeit sollte zwischen 50kHz - 200kHz betragen, bei dir ist es 7812,5Hz
    4. Erst alles einstellen und dann ADEN auf 1 setzen ist ungünstig da Spannungsreferenz und Kannalum/einstellung nicht angenommen werden!!!!

    Also richtig
    Code:
    ADC_Init: 
    1. ADEN setzen
    2. Kanal auf GND setzen
    3. Referenz einstellen
    4. Testwandlung starten, auslesen, Ergebniss verwerfen
    ret
    
    WADC:
    1. Kanal GND auf Kanal X setzen
    2. Wandlung anstoßen
    3. Wandlungszeit warten
    4. Ergebnis auslesen
    (5. Kanal X auf Kanal GND setzen aber kein muss)
    ret
    Wenn man dann in den Sleep wechseln will wird vor dem Sleep der ADC deaktiviert und nach dem Sleep neu initalisiert.

    3. Wann wird denn ein Key gepresst ?
    Code:
    rjmp    bri        ;loop until any key pressed
    Lass die Routine komplett durchlaufen und mach die Keyabfrage ausserhalb dieser Routine (Wahrscheinlich auch beabsichtigt)
    Ebenso bau dir mal eine Zeitverzögerung ein sonst springen deine Werte auf dem LCD zu stark.

    4. Vorsichtig mit irgenwelchen Sprungadressen dieser Art mit dem jetzigen Wissensstand!
    Code:
    rjmp    pc-1
    Verbesserungsvorschlag:

    Code:
    Init:
    1. STACK
    2. Power
    3. PORTS
    4. ADC_INIT (ADEN = 1, REF = 5V, Chanel = 11111, Testwandlung
    5. LCD_ON
    
    Hauptprogramm:
    0. 150ms warten
    1. Pinabfrage(SBIS/SBIC ?) wenn Bedingung erfüllt Sprung zu 2. sonst 3.
    2. dspvals
    3. rjmp Hauptprogramm
    
    dspvals:
    dein Programm
    ret
    Ein weiterer Hinweis betrifft:
    Code:
    push    savr
    in    savr,SREG
    .
    .
    .
    .
    out    SREG,savr
    pop    savr
    Was keinerlei Nährwert hat und kann komplett in allen Routinen entfernt werden.

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 11:18
  2. CCPRO M128: Portbelegung
    Von Dirk im Forum Robby RP6
    Antworten: 0
    Letzter Beitrag: 22.05.2009, 22:26
  3. Portbelegung bei diesem Display [erledigt]
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 18.11.2006, 18:12
  4. Portbelegung ATmega32
    Von Rob.Anfänger im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 15.11.2006, 19:59
  5. Antworten: 4
    Letzter Beitrag: 12.11.2006, 16:40

Berechtigungen

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

Labornetzteil AliExpress