Hallo, Also mein Projekt ist ein Atmega8, Display und Temperatursensor der pro Kelvin änderung 10 mV die Ausgangsspannung ändert und am ADC digitalisiert wird. Spannung und Temp wird auf UART und Display ausgeben. UART Ausgabe funktioniert auch (am Board, aber nicht auf der Platine implementiert). Wenn ich die Spannung von dem Sensor mit dem Multimeter nachmesse, stimmt sie innerhalb der +-5mV Digitalisierungsgenauigkeit mit dem angezeigten Wert aufm Display überein. Als Indikator ob der Chip auch schön seine Aufgabene abarbeitet blinkt ein LED im Sekundentakt. ( also Led pin eingeschaltet -> ADC, LCD ausgabe, UART wird abgearbeitet -> Led pin ausgeschalten) Also am Polling Evaluation Board alle Funktionen gestet und alles hat funktioniert.Der chip benutz 8mhz interner Takt. Also sollte unabhängig vom Board sein. Nächstest Ziel ist das ganze auf eine Platine zu löten. So und da ist der Wurm drin...die meiste Zeit funktioniert ist, aber eben nur die meiste Zeit, bis auf ein paar Macken die ich mir nicht erklären kann...(muss auch sagen meine Elektronik Kentnisse sind eher bescheiden, nicht prügeln wenn ich einen ganz offensichtlichen Fehler gemacht habe)als Spannungsquelle für die Platine habe ich das Pollin Evaluation board angezapft (die stabilisierte Spannungsquelle implemntiere ich erst psäter selbst auf der Platine) a) Wenn ich das Netzteil fürs Evaluation Board anstecke....Blickt das Indikator Licht im 2 Sekunden Takt...obwohl es in der Programmierung 1 sek blinken soll, und auf dem Evaulation Board auch macht...erst nach ein paar mal Reset auf 0 ziehen wirds es normal...aber mal öfters mal weniger oft...scheint mir irgenwie Glückspiel zu sein und ich kann kein Muster dahinter erkennen. Jedenfalls anstecken -> chip läuft normal, funktioniert nicht. Wenn es dann einmal läuft, läuft es und der Chip macht seine aufgaben wie er soll... b) Ich hab wie in so einigen Grundschaltungen zu finden ist, zwischen Vcc und Gnd direkt am controller statt dem 100nF zwei 50nF Keramik paraell gelötet (hatte leider keinen 100nF zur verfügung...ist das ein krtischer Fehler?) Hier an dieser Stelle das nächste Verhalten...wenn ich mit dem Finger in nähe der beiden Stützkondensatoren komme...beginnt das Display zu flackern und das LED immer schneller zu blinken je näher ich den Kondensatoren komme)...daraus schließe ich der Chip wird immer öfterer Folge neu gestartet...aber warum? und wie verhindern? (ich muss für den Effekt den Kondensator nicht berühren in die nähe kommen reicht aus ...ab nem halben cm ca.) ich hab die Schlatung auf der Platine 1:1 versucht zu skiztieren (tut mir leid wenn ich nicht alle Konventionen weiß, ich hab noch nie zuvor einen Schaltplan gezeichnet) Ich denke die C und H Files brauche ich ncit anhängen, da ja die Programmierung selbst problemlos Funktioniert und auf dem Evaluation Board getestet wurde...also vermute ich ein reines Hardware Problem.
sollte natürlich überempflindliche Schlatung heißen und Anfälle hat sie hoffentlich nicht :) vlt hat jemand von euch Zeit mir damit etwas auf die Sprüng ezu helfen...Danke schon im vorraus.
Haben deine LEDs (am ATmega und für die LCD-Hintegrundbeleuchtung) beide einen Vorwiderstand oder bricht möglicherweise deine Spannungsversorgung zusammen, so dass der µC sich immer neu startet.
Als Referenzspannung wirst du VCC genommen haben, dann fehlt schon mal der 100n von AREF nach GND. Sind die beiden Stützkondensatoren so nahe wie möglich an VCC und AVCC? 100n von Reset nach GND sollten auch noch sein. Für eine einigermaßen genaue Messung sollte die Beschaltung von AVCC laut Datenblatt sein. Die Led ist ohne Vorwiderstand angeschaltet?
1.Die LED scheint keinen Vorwiderstand zu haben. 2. Mache mal an den Pin AREF noch 100nF gegen Masse dran MfG Paul
>1.Die LED scheint keinen Vorwiderstand zu haben.
Das Backlight am LCD auch nicht.
Reset gehört nicht per Pulldown an GND.
ok, die LEDs haben keinen Vorwiederstand...werd ich nachhohlen..auch wenn mir noch ncith ganz klar ist warum...aber ich seh grad auf dem pollin board haben sie auch einen... die Stützkondensatoren sind direkt beim chip, näher geht nicht. ok, ich werd mir schnell ein paar 100nF Kondensatoren besorgen...da werd ich alt mit den 50nF Dingern.... und den an AREF kommt auch nocht dran, das hatte ich übersehen, danke danke für die schnellen Antworten, ich werde das mal umsetzen und wenn es nicht klappt mich nochmal melden. der reset ist an Vcc, da hab ich mich nur verzeichnet, stelle den aktualisierten plan rein..ach wenn doch schlatung bauen nur so einfach wär wie programmieren ;)
Die LEDs brauchen immer einen Vorwiderstand, d.h auch die LED des LCD! Ob 47nF oder 100nF Kondis, ist egal. Ein Kondi an UREF kann ran, muß aber nicht. Man kriegt auch stabile AD-Wandlungen ohne ihn. Bei den ATtiny gehts ja auch ohne. Peter
Peter Dannegger schrieb: > Die LEDs brauchen immer einen Vorwiderstand, d.h auch die LED des LCD! Beim LCD kann es aber sein das bereits ein Vorwiderstand verbaut ist, meist nahe der LED. mfg Andreas
Andreas B. schrieb: > Beim LCD kann es aber sein das bereits ein Vorwiderstand verbaut ist, > meist nahe der LED. Bei allen LCDs, die ich bisher benutzt habe, war das nicht der Fall. Man sieht oft Pads für Widerstände, die sind aber nicht bestückt. Peter
Peter Dannegger schrieb: > Andreas B. schrieb: >> Beim LCD kann es aber sein das bereits ein Vorwiderstand verbaut ist, >> meist nahe der LED. > > Bei allen LCDs, die ich bisher benutzt habe, war das nicht der Fall. > Man sieht oft Pads für Widerstände, die sind aber nicht bestückt. Im Anhang ein Bild eines 3€ China LCDs mit blauer Hintergrundbeleuchtung. R8 ist der Vorwiderstand für die LED. Erstaunlicherweise ist sogar noch ein 2. 0Ω Widerstand bestückt (R9)... mfg Andreas
ich benutze ein 11 eur display von Gleichmann electronics...wenn ich mit multimeter über die beiden LED Anschlüsse messe und ein paar kOhm messe..kann ich wohl davon ausgehen, dass die Displayblechtung Vorwiderstände hat...oder nicht?
Jürgen Kratochwill schrieb: > wenn ich mit multimeter über die beiden LED Anschlüsse messe und ein > paar kOhm messe..kann ich wohl davon ausgehen, dass die Displayblechtung > Vorwiderstände hat...oder nicht? Nein, das sagt mehr über die Spannung an den Prüfspitzen des Multimeters aus. Der Widerstand liegt meist in der Größenordnung von 100Ω. Der Rest ist LED-Kennlinie.
Jürgen Kratochwill schrieb: > wenn ich mit > multimeter über die beiden LED Anschlüsse messe und ein paar kOhm > messe..kann ich wohl davon ausgehen, dass die Displayblechtung > Vorwiderstände hat...oder nicht? Nein. Du kannst mit einem normalen Ohmmeter (ohne Erfahrung) keine Halbleiter messen... Du kannst aber einfach mal die Anschlüsse des Backlights verfolgen. So ein Vorwiderstand kann sich nicht verstecken.
Andreas B. schrieb: > R8 ist der Vorwiderstand für die LED. > > Erstaunlicherweise ist sogar noch ein 2. 0Ω Widerstand bestückt (R9)... Wenn die Widerstände bestückt sind, dann ist die LED mit an GND und VCC, daher sind 2 Widerstände nötig. Die Anschlüsse A, K bleiben dann frei. Peter
hier mal eine Musterbeschaltung aus eien ATTiny26 Datenblatt ich verwende die gleiche Schaltung meist auch für VCC falls ein anderer Verbraucher die VCC verseucht. Und dann noch eine Application Note von Atmel, lese dir das mal durch Bild 4 und 5 erklärt dir etwas warum die Kerkos so nah wie möglich an den AVR sollen. Sie dir auch die empfohlene Resetbeschaltung an.
Peter Dannegger schrieb: > Andreas B. schrieb: >> R8 ist der Vorwiderstand für die LED. >> >> Erstaunlicherweise ist sogar noch ein 2. 0Ω Widerstand bestückt (R9)... > > Wenn die Widerstände bestückt sind, dann ist die LED mit an GND und VCC, > daher sind 2 Widerstände nötig. Die Anschlüsse A, K bleiben dann frei. > > > Peter Nein, auch das ist nicht der Fall, die LED ist nur mit Pin 15 und Pin 16 verbunden. (Frag mich nicht warum) Jürgen Kratochwill schrieb: > ich benutze ein 11 eur display von Gleichmann electronics...wenn ich mit > multimeter über die beiden LED Anschlüsse messe und ein paar kOhm > messe..kann ich wohl davon ausgehen, dass die Displayblechtung > Vorwiderstände hat...oder nicht? Die LED Pins sind warscheinlich sichtbar, dann misst du vom einen LED Pin zum Pin 16 / 15 und vom anderen LED Pin auch zu Pin 16 / 15. Dann siehst du ob ein Widerstand eingebaut ist, > 1kΩ ist unrealistisch (dann misst du über die LED) < 10Ω ist kein Widerstand, Messtoleranz. Misst du etwas dazwischen, z.B. 470Ω dann ist ein Widerstand drin, ansonsten brauchst du noch einer. mfg Andreas
das hat funktioniert...also wenn ich das so mache messe ich <10Ohm -> also Display LED hat kein vorwiderstand.... hab jetzt einfach display LED und das blinke LED mal abgeklemmt und geschaut was passiert. Die Probleme nachen einstecken scheinen damit gelöst zu sein... Chip läuft weitgehend stabil, jedoch Diplay Flackert und chip startet sich wohl ständig wenn ich mit den Fingern in 0.5 cm Radius zu dem Kondensator komme....damit kann ich leben... die andern Vorschläge muss ich erst noch umsetzen (mit dem AREF Pin, und halt die LEDs mit Vorwiderstand neu einlöten)
Jürgen Kratochwill schrieb: > halt die LEDs mit Vorwiderstand neu einlöten) Das würde ich mal schnellstmöglich machen! Die LEDs werden sonst zerstört!
>Chip läuft weitgehend stabil, jedoch Diplay Flackert und chip startet >sich wohl ständig wenn ich mit den Fingern in 0.5 cm Radius zu dem >Kondensator komme....damit kann ich leben... So ein Quatsch, da stimmt doch was nicht. Irgendwo hängt eine wichtige Leitung in der Luft. Irgendwas ist nicht verbunden. Mit sowas kann man nicht leben.
Die 2x40 Displays, die wir einsetzen, haben 12Ω vorbestückt und sind mit der Versorgung des Kontrollers verbunden. Gruß Jobst
Handempfindlich sieht nach offenem EIngang aus. Deshalb würde ich
vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 auf GND legen.
Oft haben die Displays keinen Blockkondensator on Board, deshalb
zwischen Pin1 und Pin2 einen C mit 47 bzw. 100nF vorsehen.
Pin1 des Display möglichst kurz mit dem GND der CPU verbinden.
@Hackyber
> z.B. /Reset auf GND statt Vcc ???
Du hast hoffentlich schon das zweite Schaltbild gesehen?
>Deshalb würde ich >vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 auf GND legen. Klasse. Dann kommt einer auf die Idee den RW Pin auf lesen zu setzen und schon hast du 4 Ausgänge auf GND liegen.
Ja, genau! Was macht der Spannungsteiler aus 10k Pulldown und internen 40..60k Pullup aus den 5v Vcc? Und wie sind die Schwellwerte für Reset? Nach DB bewegt sich Reset bei der Beschaltung genau da, wo es Zufall ist, ob Reset oder Run. Mach den 10k weg!!
>> Deshalb würde ich >> vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 auf GND legen. > Klasse. Dann kommt einer auf die Idee den RW Pin auf lesen zu > setzen und schon hast du 4 Ausgänge auf GND liegen. Im Datenblatt des HD44780 steht nur: These pins are not used during 4-bit operation und Pull-up MOS current DB0–DB7, RS, R/: Typ. 125µA Es sollte also keine Probleme mit offenen Pins geben, denn sie werden auf high gezogen. Deshalb vorsichtshalber LCD Pin7, Pin8, Pin9 und Pin10 doch nicht auf GND legen.
wieso soll das einen Spannungsteiler ergeben? Der externe Pullup wird parallel zum internen liegen. 5V/40kOhm=0,125 mA, so leicht kann das also beeinflusst werden. Da ich mich bisher immer an die Empfehlung gehalten habe und noch nie Probleme damit hatte kann ich nichts dazu sagen ich würde mich aber keinesfalls aussperren und den Resetpin direkt auf VCC legen.
B e r n d W. schrieb: > Handempfindlich sieht nach offenem EIngang aus. dass kann einen Effekt haben? mhmm ich glaube ich hab an einem Pin Interrupt aktiviert der wenn ich so recht überlege auf der Platine garnicht benutzt wird (hatte vorher auf dem Evaluation board ein Taster damit verbunden) ich werde das bei Gelegnheit austesten (leider im mom etwas angebunden) aber danke an alle für die Vorschläge und Ideen.
das mit den eingeschaltenen Interrupts (wovon bei einem die Interrupt routine leer war) an den freien Pins scheint die Lösung für das "Chip macht komische Sachen wenn Finger in der nähe" Problem zu sein. So jetzt noch die Beleuhctungen mit den Vorwiderständen passend bestücken, dann sollte vorerst alles laufen :)
ich schreibe den Resetvector eigentlich immer ins Programm uns gebe halt ein reti vor wenn ich den Interrupt nicht nutze, so das der Interrupt gleich wieder beendet wird, so kommt es nicht vor das ein eingeschalteter Interrupt "wilde" Programmsprünge ausführt.
1 | .ORG 0x00 |
2 | rjmp RESET ; Reset handler |
3 | reti; rjmp EXT_INT0 ; IRQ0 handler |
4 | reti; rjmp PIN_CHANGE ; Pin change handler |
5 | reti; rjmp TIM1_CMP1A ; Timer1 compare match 1A |
6 | reti; rjmp TIM1_CMP1B ; Timer1 compare match 1B |
7 | reti; rjmp TIM1_OVF ; Timer1 overflow handler |
8 | reti; rjmp TIM0_OVF ; Timer0 overflow handler |
9 | reti; rjmp USI_STRT ; USI Start handler |
10 | reti; rjmp USI_OVF ; USI Overflow handler |
11 | reti; rjmp EE_RDY ; EEPROM Ready handler |
12 | reti; rjmp ANA_COMP ; Analog Comparator handler |
13 | reti; rjmp ADC ; ADC Conversion Handler |
>ich schreibe den Resetvector eigentlich immer ins Programm uns gebe halt >ein reti vor wenn ich den Interrupt nicht nutze, so das der Interrupt >gleich wieder beendet wird, so kommt es nicht vor das ein >eingeschalteter Interrupt "wilde" Programmsprünge ausführt. Mach das mal mit z.B. dem UART Empfangsinterrupt. Wenn UDR nicht gelesen wird feuert der Interrupt gleich wieder und bremst das komplette Programm aus. Nützt also nicht viel.
dieser Interrupt wird aber erst aktiviert werden müssen und wenn man das macht sollte man sich auch um die Interrupt Routine kümmern.
>dieser Interrupt wird aber erst aktiviert werden müssen und wenn man das >macht sollte man sich auch um die Interrupt Routine kümmern. Genau das hat er ja gemacht, Interrupt freigeschaltet aber vergessen einen Vector dafür zu definieren;) Da führt beim AVR-GCC dann zum Reset.
hallo, so hab nun alle (die meisten) Tipps umgesetzt, Vorwiderstände sind eingelötet, Diplay funzt, keine Störungen so weit. Das nächste ist das Übertragen des UART vom Evaluation board auf meine Platine. Leider will am PC nicht so wirklich was ankommen... Also zuerst, wenn ich Chip auf Pollin Board stecke, Serielles Kabel ansteck und mit HyperTerminal am PC auslese, funzt alles wunderbar, Chip macht was er soll. Ich habe einen RS232N IC gekauft, und ihn mit dem auf dem Pollin board vertauscht, funzt trotzdem alles. Also gehe ich davon aus, das der den ich gekauft habe in der Funktion und Beschaltung gleich ist wie der auf dem Pollin board. Ich hab die RS232 Schlatung vom Pollin board 1:1 (hoffentlich) auf dem Steckbrett nachgebaut und mit meiner Chip Platine verbunden. Ich hab dabei nur den Tx Anschluss vom Chip benutzt, weil Empfangen auf dem UART ist nichts geplant. Nur Temp. Messen und an PC übertragen. (den Seriellen-Anschluss hab ich ein altes Kabel dafür zerlegt). Aber sobald Chip auf meiner Platine steckt und ich über RS232 am PC auslesen will kommt nix an, was Sinn machen würde. Chip ist 8 Mhz, interner Oszi, BAUD 9600 ...die Konfiguration funzt ja auch und ist getestet auf dem Pollin-Board. Schaltplan im Anhang (also der untere Teil mit dem RS232 ist noch nichtauf der Platine sondern am Steckbrett ausgelagert). Hat vlt von euch jem eine Idee was ich dabei falsch mache?
Auf meinem Pollin Board musst ich die 10µ Elkos gegen 1µ Kondensatoren tauschen damit die Verbindung richtig funktionierte. Solltest du auch machen. In deiner Zeichnung fehlt auch noch ein Kondensator.
Hallo! ...und der MAX hat keine Betriebsspannung und Masseverbindung. Ist das zerlegte serielle Kabel gekreutzt oder 1:1?
auf dem Pollin Board funktioniert alles einwandfrei...geht um den bau auf die Platine. mhm was das für ein Kabel war bin ich nicht sicher....aber ich hab nur den Stecker davon rutnergebastelt und die Kabel direkt am Stecker angelötet...also keine überkreuzten Kabel oder sowas... auweh stimmt, da sind ja noch 2 Ports oben und unten eingezichnet für Versorgung/GNd im Schaltplan die ich übersehen habe...danke, das könnte die Lösung sein
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.