Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Atmega1284p PortC Input Probleme.

  1. #1
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    54

    Atmega1284p PortC Input Probleme.

    Hallo,

    im neuem Projekt erstmals Pin C.4/C.5/C.6 und C.7 als Input festgelegt.
    Die JTAG- Schnittstelle in Fuse ist auf 1 gesetzt.
    Hat funktioniert aber im Langzeittest öfters Fehler. Die Pins „spinnen“
    Sollen doch nur wenn auf Null gezogen ein Ereignis auslösen. Da noch keine Sensoron angeschlossen und 100%ig kein Null an Pins kommen kann es doch nur an µC JTAG- Schnittstelle liegen.

    Hier die Einstellungen.(Code ist natürlich viel größer)

    $regfile = "m1284pdef.dat"
    $crystal = 16000000
    $hwstack = 80
    $swstack = 80
    $framesize = 120
    $baud = 19200

    '***** Eingänge ***************
    Config Pinc.7 = Input
    Portc.7 = 1 'Pullupwiderstand
    Trai Alias Pinc.7

    Config Pinc.5 = Input
    Portc.5 = 1 'Pullupwiderstand
    Swr Alias Pinc.5

    Config Pinc.6 = Input
    Portc.6 = 1 'Pullupwiderstand
    Swl Alias Pinc.6

    Config Pinc.4 = Input
    Portc.4 = 1 'Pullupwiderstand
    Lauf Alias Pinc.4

    z.B. Abfrage

    If Trai = 0 Then
    Print "Trainings Modus"
    End If

    u.s.w.
    Nun wird geprintet obwohl kein 0 anliegt (Hardware eindeutig) Die Pins auch noch extern 4,7k zu Vcc verpasst. Mal OK meistens aber nicht.
    Kennt jemand dieses Portverhalten ?
    Gibt es was zu beachten, wenn dieses Port als Eingang genutzt wird?

    Gruß und fröhliche Weihnacht
    Geändert von fredred (24.12.2016 um 15:14 Uhr)

  2. #2
    Spaghetti-Coder Avatar von Basti
    Registriert seit
    10.11.2016
    Beiträge
    109
    Hallo Fredred,
    PortC.7 hat ja nichts mit JTAG zu tun, daran kann es also nicht liegen.
    Hast du beide GND angeschlossen?
    Evtl. könnte es etwas mit Timer2 zu tun haben, wenn du den Async Modus eingeschaltet hast. Dann werden die TOSC Pins verwendet.

  3. #3
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    54
    Hallo Basti,

    danke für Info.
    Ja PortC.2 bis PortC.5 ist JTAG. Verstehe einfach nicht. Knalle ich C.7 direkt auf VCC bleib Trai auch auf H... Gleiches Verhalten an C.4 bis C.6
    GND Pin 31 ist offen. Timer1 wird genutzt und nur auf Enable gesetzt wenn C.4 oder und C.7 auf GND sind.
    Richtig hinterhältig ist.
    Projekt „Saft“ geben alles OK Programm läuft und läuft. Nun „Saft“ mal weg und wieder da. Jetzt bekommt mal C.4 oder C.7 eine 0 als Ergebnis. Obwohl wie beschriebnen nun alle Pins mit 4,7k knallhart auf VCC liegen.

    Gruß

  4. #4
    Spaghetti-Coder Avatar von Basti
    Registriert seit
    10.11.2016
    Beiträge
    109
    Zitat Zitat von fredred Beitrag anzeigen
    GND Pin 31 ist offen.
    Wofür soll das gut sein? Du musst alle GND anschließen!

  5. #5
    Administrator Avatar von DON
    Registriert seit
    19.11.2016
    Ort
    Herford
    Beiträge
    455
    If Trai = 0 Then
    Print "Trainings Modus"
    End If
    denk an das prellen vom schalter.
    Ein Mensch mag noch so herausragende Fähigkeiten haben – wenn er arrogant und selbstsüchtig ist, sind sie nichts wert.
    Konfuzius


  6. #6
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    54
    Zitat Zitat von Basti Beitrag anzeigen
    Wofür soll das gut sein? Du musst alle GND anschließen!
    Mach ich eigentlich nur wenn ich analog nutze(eventuelle Potentialverschiebung)
    Common ground Pin 11 und Pin 31 sind doch intern verbunden. Schaden kann es aber nicht.

    Gruß

  7. #7
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    54
    Zitat Zitat von DON Beitrag anzeigen
    If Trai = 0 Then
    Print "Trainings Modus"
    End If
    denk an das prellen vom schalter.
    Natürlich, wenn welche angeschlossen, sind aber keine. Nur 4,7k Widerstände gegen Vcc da kann wohl nichts prellen.

    Gruß

  8. #8
    Administrator Avatar von DON
    Registriert seit
    19.11.2016
    Ort
    Herford
    Beiträge
    455
    Natürlich, wenn welche angeschlossen, sind aber keine. Nur 4,7k Widerstände gegen Vcc da kann wohl nichts prellen.
    probiere mal debounce wenn das nicht sauber funktioniert reden wir weiter und toggle mit led.
    Ein Mensch mag noch so herausragende Fähigkeiten haben – wenn er arrogant und selbstsüchtig ist, sind sie nichts wert.
    Konfuzius


  9. #9
    Kabelträger Avatar von dino03
    Registriert seit
    02.11.2016
    Beiträge
    22
    Hi,

    Zitat Zitat von fredred Beitrag anzeigen
    Mach ich eigentlich nur wenn ich analog nutze(eventuelle Potentialverschiebung)
    Common ground Pin 11 und Pin 31 sind doch intern verbunden. Schaden kann es aber nicht.
    das ist falsch. Immer ALLE GND und VCC anschließen.
    Also GND und AGND und VCC und AVCC anschließen.

    Da steht zwar Analog-GND und Analog-VCC dran, deie Pin ist aber auch für die Versorgung der digitalen Eingangsstufen und angehängten Funktionsbereiche zuständig.
    Sie sind lediglich intern vom Prozessorkern und Digitalteilen entkoppelt um durch die Entkopplung weniger Störsignale in die Analogteile zu bekommen.
    Sie MÜSSEN aber auch ALLE angeschlossen werden! Das steht auch extra so im Datenblatt drin.

    Außerdem: Alle Eingänge ohne externe Beschaltung und ohne aktivierten PullUps (also alle Eingänge die offen sind) fangen sich Schmutz aus der Umgebung ein.
    Du bekommst also zappelnde Pegel an den Eingangsstufen. Also MÜSSEN ALLE Eingänge auch auf definierten Pegel liegen sonst wirken die wie eine Antenne.

    Gruß
    Dino

  10. #10
    Neuer Benutzer
    Registriert seit
    02.11.2016
    Beiträge
    54
    Hallo Dino,
    danke für Erklärung. Weis nicht mehr wie viele Schaltungen ich mit Atmega schon Aufgebaut habe, werden wohl mehr als 100 sein.
    Wie geschrieben AGND und AVCC nur beschalten wenn Analog genutzt wurde.
    Dies hatte man mir damals empfohlen, möchte und kann dies nicht beurteilen. Hatte bis Dato nie Probleme damit.
    Muss aber sagen das Port C noch nie als Eingang genutzt zu haben aber schon häufig als Ausgang.
    Das die Eingänge ein Pullupwiderstand benötigen war klar siehe Codeschnibsel.
    Da aber das Verhalten auftrat noch einen 4,7k Widerstand am Eingang zu VCC. Scheint aber noch zu klein zu sein, weil wie ich vermute die Eingänge intern auf GND liegen. Lege ich Eingang direkt auf VCC wird auch 1 weitergegeben.
    Werde glich noch den Feiertage AVCC und AGNC beschalen. Mal sehen, obwohl noch Zweifel an Hardwarefehler.
    Für Fehlereingrenzung Heute eine Printabfrage erstellt. Nun verstehe ich noch weniger.
    Siehe Code in #1 für Parameter.

    Print Portc.7 ; " Trai " ; Trai

    Print Portc.4 ; " Lauf " ; Lauf
    Print Portc.5 ; " L " ; Swl
    Print Portc.6 ; " R " ; Swr

    Bei der direkten Portausgabe alles 1 aber die Alias Trai und Lauf sind auf 0.
    Gruß

Ähnliche Themen

  1. ATMega > 32 PortC Input
    Von fredred im Forum Bascom
    Antworten: 2
    Letzter Beitrag: 05.11.2016, 10:36

Lesezeichen

Lesezeichen

Berechtigungen

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