Forum: Mikrocontroller und Digitale Elektronik Latenz am Port Atmel ATMega 328PU


von Jonas S. (jonas_s838)


Angehängte Dateien:

Lesenswert?

Guten Tag Zusammen,
ich habe vor kurzem damit begonnen mich ein wenig
mit der Programmierung von Atmel Microcontrollern schlau zu machen,
und habe mich dabei für den ATMega 328PU entschieden.
Leider verstehe ich nicht ganz warum bei meinen C Programm (siehe 
Bilddatei),
bei einer Zustandsänderung am Input es ein paar Sekunden dauert
bis der Atmel am Ausgangspin sein Pegel ändert (visualisiert durch LED).
Sollte sich die LED nicht direkt ausschalten ?

Zur Info der Input wird per Pullup Widerstand auf 5V gezogen.
Falls Jemand eine Idee hat woran das liegen könnte würde mich
das extrem interessieren.

Vielen Dank im voraus

Gruß

Jonas

von Harald K. (kirnbichler)


Lesenswert?

Jonas S. schrieb:
> Leider verstehe ich nicht ganz warum bei meinen C Programm
> (  siehe Bilddatei  ),

Finde den Fehler

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Jonas S. schrieb:
> (siehe Bilddatei),

Erster Fehler!

Jonas S. schrieb:
> Sollte sich die LED nicht direkt ausschalten ?
Durchaus.

von Adam P. (adamap)


Lesenswert?

Jonas S. schrieb:
> Leider verstehe ich nicht ganz warum bei meinen C Programm (siehe
> Bilddatei)

Kein Source Code als Bilddatei! (was ist den los in den letzten 
Monaten)?
Alle verblödet oder was? Sorry, aber solangsam macht das echt kein Spaß 
mehr.

edit:
@Jonas
wie wäre es mit einem schaltplan? evtl. hast du ja versucht das 
entprellen per kondensator zu lösen... und der ist einfach zu groß?

: Bearbeitet durch User
von Malte _. (malte) Benutzerseite


Lesenswert?

Könnte es sein, dass am Eingang ein Pull-Down fehlt und nur ein Taster 
den Pegel auf high zieht?

Das Programm sieht korrekt aus.

von Jonas S. (jonas_s838)


Angehängte Dateien:

Lesenswert?

Nachtrag:
Das ist mein erster Beitrag, deshalb noch ein paar Informationen anbei 😅
Ein Schaltplan existiert noch nicht.
Ich habe aber den Atmel nach Minimalbeschaltung angeschlossen
(VCC,AVCC,GND + Abblockkondensator mit 100nF zwischen AVCC & GND).
Die LED an PD5 ist über ein Widerstand gegen Masse, und der INPUT ist 
über
ein 470 Ohm Widerstand zum an oder ausschalten der LED entweder an 5V 
oder Potentialfrei.
Hier ist der Source Code:

1
#include <avr/io.h>
2
#include <util/delay.h>
3
#define F_CPU 8000000
4
5
int main(void){
6
7
 
8
  DDRD = 0b00100000; //set PD5 as an OUTPUT SOURCE
9
  PORTD = 0b00000000;
10
11
  while(1)
12
  
13
  {
14
       if((PIND & (1<<PD4)))
15
       {
16
        PORTD |= (1<<PD5);
17
        
18
        }
19
        else
20
        {
21
          PORTD &= ~(1<<PD5);
22
          
23
        }
24
            
25
  }
26
  return(0);
27
}

von Εrnst B. (ernst)


Lesenswert?

Jonas S. schrieb:
> ein 470 Ohm Widerstand zum an oder ausschalten der LED entweder an 5V
> oder Potentialfrei.

"Potentialfrei" mögen digitale Eingänge garnicht. Schalt den entweder 
gegen 5V oder 0V/GND.
Oder pack einen Pull-Down daneben. Oder aktiviere den internen Pull-Up 
und verwende deinen Tast-Widerstand mit "Potentialfrei oder GND".

von Norbert (der_norbert)


Lesenswert?

Jonas S. schrieb:
> DDRD = 0b00100000; //set PD5 as an OUTPUT SOURCE
> PORTD = 0b00000000;

Die Verwendung eines Pull-Ups setzt voraus, das der Pull-Up auch 
aktiviert wirrd.
1
DDRD = 1<<5; //Output 
2
PORTD = 1<<4; //Pull-Up

Nur so aus dem Kopf, hab AVRs schon seit Ewigkeiten nicht mehr benutzt.

von Jonas S. (jonas_s838)


Lesenswert?

Hi Malte,
danke für deine Antwort.
Ich schalte den Input über den Pullup auf 5V, per jumper Kabel am 
Bredboard.
Das heißt wenn ich die 5V abklemme hat der Input kein Potential.

Kann das zu besagtem Verhalten führen ?

MfG

von Wilhelm M. (wimalopaan)


Lesenswert?

Jonas S. schrieb:
> Hi Malte,
> danke für deine Antwort.
> Ich schalte den Input über den Pullup auf 5V, per jumper Kabel am
> Bredboard.
> Das heißt wenn ich die 5V abklemme hat der Input kein Potential.

Das ist dann kein Pullup. Dann floatet der Eingang. Das ist Mist.

von Klaus H. (hildek)


Lesenswert?

Jonas S. schrieb:
> und der INPUT ist über ein 470 Ohm Widerstand zum an oder ausschalten der
> LED entweder an 5V oder Potentialfrei.

Potentialfrei geht gar nicht. Wenn der Pin in der Luft hängt, dann 
schleicht sein Eingang irgendwann irgendwo hin. Es ist Zufall, dass er 
bei dir die LED sogar schaltet nach einer Sekunde.

Der Input braucht einen Pullup, wenn der Taster/Schalter nach GND geht 
oder er braucht einen Pulldown, wenn er nach VCC geht. Ein Widerstand in 
Reihe ist überflüssig; ein kleinerer kann sinnvoll sein, wenn du an dem 
Pin noch einen Kondensator hängen hast für die Trivialentprellung.

Jonas S. schrieb:
> Ein Schaltplan existiert noch nicht.

Dann mal einen! Einen, den der Rest der Welt auch versteht: Leitungen, 
die miteinander verbunden sind, haben einen Punkt an der Stelle. Große 
rote 'X' gibt es nicht in Schaltplänen. Und weder der Taster noch die 
LED sind eingezeichnet. Das darf zur Not auch eine Handskizze sein, die 
du abfotografierst.

von Georg M. (g_m)


Lesenswert?


von Klaus H. (hildek)


Lesenswert?

Auch so ein Plan reicht:
1
       VCC      VCC
2
        +        +
3
        |        |
4
       .-.       |
5
       | |    .--o------.
6
       | |    |         |
7
       '-'    |         |
8
        |     |     PD5 o----.
9
        |     |         |    |
10
        o-----o PD4     |   .-.
11
        |     |         |   | |
12
      | o     |         |   | |
13
    |=|>      |         |   '-'
14
      | o     |         |    |
15
        |     |         |    |
16
        |     |         |    V ->
17
        |     |         |    -
18
        |     |         |    |
19
        |     '---o-----'   ===
20
       ===        |         GND
21
       GND       ===
22
                 GND

Ich muss aber zugeben, dass das Beispiel für eine Tastenabfrage nicht 
gerade gelungen ist (unter der Überschrift "Absolute Beginner":
https://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte#Taster_abfragen

: Bearbeitet durch User
von Chris (Gast)


Lesenswert?

Der Code muss auch noch nachgebessert werden. Stichwort Tastenprellen. 
So läuft die While Schleife hunderte Male pro Sekunde durch und je 
nachdem wie der Taster gerade prellt flackert die Led.

von Wilhelm M. (wimalopaan)


Lesenswert?

Chris K. schrieb:
> Der Code muss auch noch nachgebessert werden.

Nö.
Die LED soll offensichtlich den Zustand des Tasters wiedergeben. Daher 
ist das korrekt so.

von Sebastian W. (wangnick)


Lesenswert?

Geht es hier wirklich um einen Atmega328PU? Oder nicht doch um einen 
Atmega328P-PU?

LG, Sebastian

von Veit D. (devil-elec)


Lesenswert?

Hallo,

am Restpin noch einen 5k oder 10k Pullup.

von Joe L. (joelisa)


Angehängte Dateien:

Lesenswert?

Klaus H. schrieb:
> Potentialfrei geht gar nicht. Wenn der Pin in der Luft hängt, dann
> schleicht sein Eingang irgendwann irgendwo hin. Es ist Zufall, dass er
> bei dir die LED sogar schaltet nach einer Sekunde.

AGREE !!!

Wir hatten mal einen Azubi, der hatte es geschafft, in einer Hausaufgabe 
zur "kombinatorischen Logik" wild Gatterausgänge (damals noch TTL) 
miteinander zu verbinden. Sein Lehrmeister verstand die Welt nicht mehr 
und kam dann verzweifelt zu mir...

Wir schlugen dann zusammen "The TTL Data Book for Design Engineers" 
(Texas Instruments) auf und ich zeigte ihm die prinzipielle 
Ausgangsschaltung eines TLL-Bausteins. So was hatte er noch nie gesehen, 
schon gar nicht in der Berufsschule. Nach 30 Minuten stand er auf und 
erklärte mir, er hätte verstanden worin seine Eselei gelegen hatte. Btw, 
das war ein richtig guter Mann, hatte dann seine Ausbildung als 
Jahrgangsbester abgeschlossen.

Was ich damit sagen will: Es lohnt sich durchaus, besonders für Anfänger 
wie der TO, auch mal in alten Daten- oder Fachbücher zu schmökern, und 
sich mit zunächst uninteressant-scheinenden Details zu beschäftigen.

Um es dem TO leichter zu machen, habe ich je einen Auszug aus dem 
Tietze/Schenk (5. Auflage) (-> 0963.jpg) sowie aus RCA "COS/MOS 
Integrated Circuits" (Ausgabe 1977) (-> 0962AB.jpg), jeweils mit 
Schaltungserklärungen, angehängt. Wer die Funktionsweise eines MOSFET 
kapiert hat, sollte mit diesen Erklärungen verstehen, wieso man 
entsprechende Bauteileingänge niemals offen lassen soll.

just my 2ct

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Chris K. schrieb:
> Der Code muss auch noch nachgebessert werden.

Putz mal deine Glaskugel - du siehst Gespenster.
Die LED soll genau dem Input durch den Taster folgen, nicht mehr und 
nicht weniger.

von Rainer W. (rawi)


Lesenswert?

Klaus H. schrieb:
> Ein Widerstand in Reihe ist überflüssig; ein kleinerer kann sinnvoll
> sein, wenn du an dem Pin noch einen Kondensator hängen hast für
> die Trivialentprellung.

Sobald die Leitungen an die Außenwelt gehen, ist ein bisschen Trennung 
nicht die dümmste Idee. Ein Widerstand und ein Kondensator sind gegen 
kleinere ESD-Events nicht verkehrt.
Und warum soll der Widerstand kleiner sein?
Für gleiche Filterwirkung müsste der Kondensator dann unnötig größer 
werden.
Bei störender Umgebung gehört zu dem TP-Filter dann allerdings ein 
Schmitt-Trigger Eingang.

von Klaus H. (hildek)


Lesenswert?

Rainer W. schrieb:
> Und warum soll der Widerstand kleiner sein?
> Für gleiche Filterwirkung müsste der Kondensator dann unnötig größer
> werden.
Der Widerstand soll den Taster beim Entladen des Kondensators schützen. 
Wenn es dann auch noch zum Minimalstrom des Tasters passt, dann ist es 
noch besser.
> Bei störender Umgebung gehört zu dem TP-Filter dann allerdings ein
> Schmitt-Trigger Eingang.
Haben die Atmel-μCs nicht sowieso einen?

von Steve van de Grens (roehrmond)


Lesenswert?

Klaus H. schrieb:
> Haben die Atmel-μCs nicht sowieso einen?

Ja. Zwar ohne klar definierte Schaltschwellen, aber zum Entprellen 
reicht es dennoch.

von Jonas S. (jonas_s838)


Lesenswert?

Sebastian W. schrieb:
> Geht es hier wirklich um einen Atmega328PU? Oder nicht doch um
> einen
> Atmega328P-PU?
>
> LG, Sebastian

Moin Sebastian,
es geht um einen ATMEGA328P U.

MfG

Jonas

von Jonas S. (jonas_s838)


Lesenswert?

Veit D. schrieb:
> Hallo,
>
> am Restpin noch einen 5k oder 10k Pullup.

Mache ich wenn ich einen finde 😁

von Jonas S. (jonas_s838)


Angehängte Dateien:

Lesenswert?

Ich habe es jetzt mal mit Fritzing ausprobiert,
ich hoffe daran kann man besser erkennen was gemeint ist.
Hier ist der Schaltplan von der alten Bestückung.

von Wilhelm M. (wimalopaan)


Lesenswert?

Wie schön geschrieben: der pull-up an D4 fehlt, sofern du nicht den 
internen nimmst.

von Jonas S. (jonas_s838)


Lesenswert?

Wilhelm M. schrieb:
> Wie schön geschrieben: der pull-up an D4 fehlt, sofern du nicht den
> internen nimmst.

Ja, habe mittlerweile eingesehen auf welchen Holzweg ich unterwegs war.
Ich habe mittlerweile den internen im Register aktiviert.

von Wilhelm M. (wimalopaan)


Lesenswert?

Jonas S. schrieb:
> Wilhelm M. schrieb:
>> Wie schön geschrieben: der pull-up an D4 fehlt, sofern du nicht den
>> internen nimmst.
>
> Ja, habe mittlerweile eingesehen auf welchen Holzweg ich unterwegs war.
> Ich habe mittlerweile den internen im Register aktiviert.

Wobei es eigentlich ja ein pulldown gewesen wäre...

von Jonas S. (jonas_s838)


Lesenswert?

Aus diesen Grund ist jetzt der Widerstand R2 auch auf Masse gelegt 
worden.

von Sebastian W. (wangnick)


Lesenswert?

Jonas S. schrieb:
> Moin Sebastian,
> es geht um einen ATMEGA328P U.

Den gibt es nicht.

LG, Sebastian

von J. T. (chaoskind)


Lesenswert?

Sebastian W. schrieb:
> Den gibt es nicht.
> LG, Sebastian

Noch so ein Forist. Einfach zum Kotzen...

Wenn es denn den einen gibt, und den anderen nicht, weiß jeder mit 
wenigstens ein bisschen Resthirn, welcher gemeint ist.
Nebenbei bin ich mir fast sicher, schon welche ohne Bindestrich im 
Aufdruck gesehen zu haben. Dann wäre es eher so, dass es zu dem Chip 
kein Datenblatt gibt, sollte er im Datenblatt nur mit Bindestrich 
aufgeführt sein. Ich weiß es ehrlich gesagt nicht, aber es ist mir auch 
völlig egal.
Was für ein kleinkarierter Kleingeist muss man bitte sein, um sich an so 
was aufzuhängen?

Sorry fürs OT, aber das musste raus.

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?

J. T. schrieb:
> Was für ein kleinkarierter Kleingeist muss man bitte sein, um sich an so
> was aufzuhängen?

Das war für mich die diplomatischste Art, Jonas klarzumachen, dass er 
"schludert". Nicht nur bei der Bezeichnung des uC, sondern auch bei 
seinem Quellcode (Einrückungen inkonsistent, Wertzuweisungen 
inkonsistent), bei seinem Schaltplan (Linien inkonsistent, Kontaktpunkte 
inkonsistent), seinen Bildern (Quellcode als Bild, dann Screendump als 
JPG), seiner Problembeschreibung, und seiner Verwendung von 
Begrifflichkeiten (und auch bei Groß- und Kleinschreibung und 
Kommasetzung seiner Beiträge).

Du hast insofern recht, als du mich, was Qualität betrifft, weit auf der 
"Zen and the Art of Motorcycle Maintenance"-Seite des Spektrums 
verortest. Aber es braucht in diesem Metier halt erst einmal einiges an 
Erfahrung, um zu wissen, wo man ungestraft chaotisch sein kann und wo 
nicht.

LG, Sebastian

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Sebastian W. schrieb:
> Das war für mich die diplomatischste Art, Jonas klarzumachen, dass er
> "schludert".

In dem Fall musst du dich deinem eigenen Vorwurf stellen.

Da wäre es doch wesentlich angebrachter etwas wie "übrigens KANN es bei 
der Bauteilebezeichnung um einzelne Zeichen gehen, die einen Unterschied 
in der Funktion machen" zu schreiben.

Ein kindisches "isses a oder b? Ätsch a gibst gar nicht", wirkt da wenig 
kompetent.

Sebastian W. schrieb:
> Du hast insofern recht, als du mich, was Qualität betrifft, weit auf der
> "Zen and the Art of Motorcycle Maintenance"-Seite des Spektrums
> verortest

Mit dieser Einschätzung liegst du falsch. Ich hatte dich weit auf der 
kindischen Seite verordnet, dass hast du mit deiner Erklärung zu Teilen 
wettmachen können.
Zen and the art of motorcycle maintenance hörte/las ich gerade zum 
ersten Mal. Und sehr "zen-ig" wirkte es nicht auf mich.

: Bearbeitet durch User
von Sebastian W. (wangnick)


Lesenswert?

J. T. schrieb:
> "isses a oder b? Ätsch a gibst gar nicht"

Ich hatte im Beitrag #7496903 gefragt:
> Geht es hier wirklich um einen Atmega328PU? Oder nicht doch um einen
> Atmega328P-PU?

Jonas S. hat darauf im Beitrag #7497468 geantwortet:
> es geht um einen ATMEGA328P U.

Ich hatte also gefragt, ist es wirklich a oder nicht doch b, worauf 
Jonas geantwortet hat, es sei weder a noch b sondern c!

Der nicht-picopower Atmega328 ist ja uralt, und insofern ist es 
wahrscheinlich, dass Jonas über einen Atmega328P berichtet. Aber den 
gibt es nicht in der Bauform -U. Wenn das Marking bei Jonas also 
tatsächlich "ATMEGA328P U" lautet, dann würde mich interessieren, ob das 
ein echter Atmel/Microchip-IC ist, und wäre an einem Foto interessiert.

Aber noch vermute ich Schludrigkeit ...

LG, Sebastian

von Jonas S. (jonas_s838)


Angehängte Dateien:

Lesenswert?

Anbei das Bild vom Gehäuse des Microcontrollers.

von Steve van de Grens (roehrmond)



Lesenswert?

Jonas S. schrieb:
> Anbei das Bild vom Gehäuse des Microcontrollers.

Der sieht seltsam aus. Im Vegleich zu mir bekannten fehlt bei dir die 
helle Einfärbung der Schriftzeichen, und der Schriftsatz hat andere 
Proportionen. Vor allen das "G" ist auffällig anders. Bei der "2" und 
der "3" sieht man auch deutliche Unterschiede.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Steve van de Grens schrieb:
> Da ist die Schrift deutlich heller.

Einmal mit fettigen Fingern angefasst, und die Sache ändert sich. Ich 
würde jetzt nicht sofort "China-Fälschung" schreien, zumal die Bilder 
ganz sicher nicht bei gleicher Beleuchtung entstanden sind. Und auch bei 
Original-Teilen kann sich im Laufe der Jahre der Hersteller dazu 
entscheiden, die Beschriftung zu variieren, das hängt oft nur vom 
jeweiligen Herstellungsort ab (Atmel hat keine eigene 
Halbleiterfertigung, sondern lässt von Auftragsfertigern à la TSMC 
fertigen, und wer auch immer die Chips dann in Gehäusen unterbringt, 
beeinflusst das Aussehen).

Seitdem Atmel von Microchip geschluckt wurde, kann sich das geändert 
haben; Microchip betreibt eigene Halbleiterwerke, nur ob dort auch die 
(ehemaligen) Atmel-Produkte gefertigt werden?

von Steve van de Grens (roehrmond)


Lesenswert?

Harald K. schrieb:
> Ich würde jetzt nicht sofort "China-Fälschung" schreien

Ich auch nicht. Selbst wenn, es könnte eine gute Fälschung sein.

Sollte der Chip jedoch unerwartete Probleme bereiten, würde ich ihn zum 
Vergleich mal austauschen bevor ich Stunden der Fehlersuche darin 
versenke.

von Malte _. (malte) Benutzerseite


Angehängte Dateien:

Lesenswert?

Eben in meiner Sammlung nachgeschaut. Es hat eindeutig beide 
Beschriftungsarten über die Jahre gegeben.

Und da auf dem Chip "ATMEGA328P U" drauf gedruckt ist, gibt es jeden 
Grund gerade für einen Anfänger diesen so zu bezeichnen.

von Harald K. (kirnbichler)


Lesenswert?

Malte _. schrieb:
> Es hat eindeutig beide
> Beschriftungsarten über die Jahre gegeben.

Nun, Deine helleren sind noch mit Siebdruck beschriftet, die dunkleren 
sind lasergraviert. Der zweite von Steve gezeigte ist aber auch 
lasergraviert, beim ersten ist das auch anzunehmen, aber das Bild zu 
schlecht, um das mit Gewissheit sagen zu können.

Siebdruck hat den Nachteil, daß die Beschriftung nur einen Wisch mit 
einem Lösungsmittel braucht, um wegzusein.

von Sebastian W. (wangnick)


Lesenswert?

Malte _. schrieb:
> Und da auf dem Chip "ATMEGA328P U" drauf gedruckt ist, gibt es jeden
> Grund gerade für einen Anfänger diesen so zu bezeichnen.

Sorry für meine Unterstellung, Jonas. Dein IC ist ein Atmega328P in 
Bauform -PU, und du hast das Marking "ATMEGA328P U" ganz korrekt 
genannt.

LG, Sebastian

von Chris (Gast)


Lesenswert?

Rainer W. schrieb:
> Chris K. schrieb:
>> Der Code muss auch noch nachgebessert werden.
>
> Putz mal deine Glaskugel - du siehst Gespenster.
> Die LED soll genau dem Input durch den Taster folgen, nicht mehr und
> nicht weniger.

Das tut er auch weiterhin, wenn eine saubere Entprellung implementiert 
wurde. Nur eben ohne undefinierte Zwischenstände.

Wenn er es schon lernen will, dann gleich richtig. Sonst kommt 
irgendwann der Punkt, wo nicht mehr nur eine LED gesteuert werden soll 
und es geht schief weil die Grundlagen nicht verstanden sind. Genau wie 
bei dir.

von J. T. (chaoskind)


Lesenswert?

Sebastian W. schrieb:
> Sorry für meine Unterstellung, Jonas.

Das zeigt Größe, Fehler eingestehen zu können! Auch wenn sie nicht an 
mich gerichtet war, ist deine "Rumblafferei" damit wieder gut gemacht, 
zumindest aus meiner Sicht. Ich möchte hiermit den Vorwurf des "Forist 
seins" zurücknehmen. Der hatte nie die Größe, sich zu entschuldigen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.