Hallo, ich wollte bei der µC Programmierung mit einem einfachen Projekt einsteigen. Assembler STK 500 AtTiny2313 Ich lassen durch 2 Taster auf dem Board eine Zahl hoch bzw. runter zählen. Diese gebe ich dann auf einer 7 Segment Anzeige aus. Das Funktioniert soweit zuverlässig und gut. Tasterentprellung wurde wie in folgendem Link realisiert: http://www.mikrocontroller.net/articles/AVR-Tutorial:_Tasten#Einfache_Tastenentprellung_und_Abfrage Nun schließe ich ans Board (über die PIN Stecker) 2 Reedschalter an. Diese sind ganz üblich zwischen die Pullups vom Board und GND geschalten. Starte ich nun das System, fängt der µC auch ohne das Zuführen eines Magneten an zu zählen, dies aber ganz unregelmäßig, manchmal zählt er auch viele Sekunden nicht hoch oder runter. Auf ein Magnet reagiert er, aber auch nicht sehr zuverlässig. Daten zu den Reedschaltern habe ich leider keine. Es ist jeweils ein Schließer Kontakt. Wie gehe ich nun vor? Wird es ein Software Problem sein (wobei es mit den Tastern vom Board prima klappt) Oder gilt es Hardwaretechnisch irgendwelche Störung zu lösen? Ich hoffe ich konnte mein Problem verständlich schildern!? Grüße
beginner schrieb: > Starte ich nun das System, fängt der µC auch ohne das Zuführen eines > Magneten an zu zählen, dies aber ganz unregelmäßig, manchmal zählt er > auch viele Sekunden nicht hoch oder runter. Zählt der auch sinnlos wenn man zufällig mit der Hand in der nähe der Verdrahtung kommt? Wie lang sind die Leitungen zu den Schaltern? Unter Umständen kann es sein das die internen Pullups zu hochohmig sind.
die Leitungen sind ca. 1m lang. Wenn man an den Drähten herumwackelt kommt es zu "Zählern" und wenn ich mit der Hand an die Kontakte gehe auch. Wenn ich die Kontakt sehr nahe aneinander bringen, beeinflussen diese sich auch. Sind die Pull Ups vom Board (10k) auch aktiv wenn ich über die Stiftleiste andere Schalter anstecke? Wie groß sind die internen Pull Ups vom AtTiny? Weiterhin... Wenn ich nur sehr kurz mit dem Magnet an den Kontakt gehe, und eine Widerstandsmessung mache, dann änder sich der Widerstand von unendlich auf einigen Kilo bis Mega Ohm. Nur wenn ich wirklich 1 Sekunde oder länge dran bleibe, dann geht er gegen Null. Ist das bei allen so?
ldi temp, 0xFF out PORTD, temp ich habe die internen vom AtTiny nun nochmal aktiviert. Resultat unverändert! Jetzt müsste doch aber einmal die Pull Ups vom Board und einmal die vom µC wirken, oder?
beginner schrieb: > Jetzt müsste doch aber einmal die Pull Ups vom Board und einmal die vom > µC wirken, oder? Kenne das STK leider nicht. Vielleicht sind am Board gar keine? Mal irgendwie nachgeprüft? Ansonsten von Hand nochmal irgendwie Pullups nachrüsten. Die µC internen könnten zu hochohmig sein.
die vom Board sind 10k und die vom µC sind 20...50k Wenn die Pull Ups kleiner wären und die ReedKontakte unbetätigt (also R gegen unendlich), dann gäbe es doch keinen Unterschied!?
beginner schrieb: > Sind die Pull Ups vom Board (10k) auch aktiv wenn ich über die > Stiftleiste andere Schalter anstecke? Nein, diese liegen nicht an den Controllerpins, sondern an den Tastern. Sie wirken also nur, wenn Du die Taster des STK500 benutzt. > Wie groß sind die internen Pull Ups vom AtTiny? Da müsste ich jetzt ins Datenblatt des Tiny2313 gucken, aber das kannst Du sicher auch selbst. Ich habe irgendwas oberhalb 30k in Erinnerung. Ich benutze bei allen AVR-Schaltungen die internen PullUps als Last für Schalter, Taster, Drehgeber, Reedkontakte, usw. und hatte noch nie Probleme damit. beginner schrieb: > Wenn ich nur sehr kurz mit dem Magnet an den Kontakt gehe, und eine > Widerstandsmessung mache, dann änder sich der Widerstand von unendlich > auf einigen Kilo bis Mega Ohm. Nur wenn ich wirklich 1 Sekunde oder > länge dran bleibe, dann geht er gegen Null. Ist das bei allen so? Das liegt vermutlich an Deinem Ohmmeter. Sicher ein DMM mit Auto-Range, oder? Nimm den Durchgangsprüfer, der vera..lbert Dich weniger. beginner schrieb: > Jetzt müsste doch aber einmal die Pull Ups vom Board und einmal die vom > µC wirken, oder? Die vom Board wirken nur, wenn Du auch die Taster des Boards nutzt. Die internen hast Du hierdurc eingeschaltet: beginner schrieb: > ldi temp, 0xFF > out PORTD, temp mr. mo schrieb: > Kenne das STK leider nicht. Hmmm... > > Vielleicht sind am Board gar keine? Weggebeamt??? ...
beginner schrieb: > die vom Board sind 10k und die vom µC sind 20...50k Na siehste... > > Wenn die Pull Ups kleiner wären und die ReedKontakte unbetätigt (also R > gegen unendlich), dann gäbe es doch keinen Unterschied!? Dann gäbe es solide H-Pegel an den Eingängen... ...
Ich vermute zunächst, dass mit dem Handkontakt zu den Zuleitungen kapazitiv oder direkt Störsignale auf die Eingänge kommen. (So wie das laute Brummen, wenn man an die Eingangsleitung eines Verstärkers herankommt) Mit 1k...3k pull-up Widerstand ist die Empfindlichkeit gegen Einstreuung von Signalen deutlich geringer. Durch einen solch niedrigen externen pull-up-Widerstand könnte man klären, ob es mit Einstreuungen zusammenhängt. beginner schrieb: > Wenn ich nur sehr kurz mit dem Magnet an den Kontakt gehe, und eine > Widerstandsmessung mache, dann änder sich der Widerstand von unendlich > auf einigen Kilo bis Mega Ohm. Nur wenn ich wirklich 1 Sekunde oder > länge dran bleibe, dann geht er gegen Null. Ist das bei allen so? Wenn der Reed-Kontakt geschaltet hat, geht sein Widerstand auf unter ein Zehntel Ohm runter, eine Zeitverzögerung spielt sich dabei im Millisekundenbereich ab. Die Messung ist also irgendwie fehlerhaft oder das Widerstandsmessgerät reagiert mit der Anzeige ziemlich lahm.
Hannes Lux schrieb: > Dann gäbe es solide H-Pegel an den Eingängen... Der naechste Schritt ist also die Pegel an den Eingaengen zu messen. fonsana
danke bis hierher erstmal - ich werde es mit 1k externen Pull Ups versuchen. Es könnten durch die relativ langen Leitungen ja auch noch andere Störeinkopplungen geben. Gibt es hier dafür ein Artikel/Bericht/Anleitung wie man seine Schaltung und Kabel Störsicher macht?
fonsana schrieb: > Der naechste Schritt ist also die Pegel an den Eingaengen zu messen. Dazu wollte ich "beginner" unterschwellig animieren und ihm dabei das Gefühl lassen, selbst auf diese Idee gekommen zu sein... ;-)) ...
Hannes Lux schrieb: > Gefühl lassen, selbst auf diese Idee gekommen zu sein... ;-)) Der macht das ja noch nicht mal, wenn man es klar sagt. Hoffnungsloser Fall. fonsana
okay - gemessen habe ich auch. An Port D Pin 1 (wo einer der beiden Reedkontakte dran hängt) messe ich, wenn der Kontakt nicht betätigt ist, 0,015 V. Wenn der Magnet dran ist, messe ich 0,000 V. Bei dem anderen genau das gleiche. Verdammt wenig... wie kann es sein, dass ich beim Durchmessen der Kontakte ein gegen unendlich großen R messe und nun sowas!? Das Ergebnis bedeutet doch, das der Widerstand der Leitung+Reedkontakt wesentlich kleiner sein muss als der Pull Up mit seinen 20...50 kOhm
beginner schrieb: > An Port D Pin 1 (wo einer der beiden Reedkontakte dran hängt) messe ich, > wenn der Kontakt nicht betätigt ist, 0,015 V. > Wenn der Magnet dran ist, messe ich 0,000 V. > Bei dem anderen genau das gleiche. Also wenn du da einen Schließer hast und einen Pullup sollte aber bei geöffneten Kontakt da so an die 5V sein. Vielleicht irgendwie einen Kurzen mit eingebaut? Bist du dir auch sicher einen Pullup und nicht Pulldown zu haben? Hast du vielleicht im Programmcode irgendwo den Eingang/Ausgang falsch initalisiert und auf Low gesetzt?! Irgendwie werde ich das Gefühl nicht los da ist irgendwo ein richtig simpler Fehler, der mit einer ordentlichen Skizze oder einem Bild gefunden werden könnte. Aber bitte auf die Größe des Bildes achten, sonst gehts hier wieder los.
beginner schrieb: > Das Ergebnis bedeutet doch, das der Widerstand der Leitung+Reedkontakt > wesentlich kleiner sein muss als der Pull Up mit seinen 20...50 kOhm Deine Pullups sind aus... häng mal den ganzen Code an und am besten noch ein anständiges Bild vom Aufbau. beginner schrieb: > die vom Board sind 10k und die vom µC sind 20...50k Nein, das Board hat keine Pullups an den Ports. Die sind direkt an den Tastern. Sind die nicht angesteckt, gibts keine Hardware-Pullups.
Michael H. schrieb: > beginner schrieb: >> die vom Board sind 10k und die vom µC sind 20...50k > Nein, das Board hat keine Pullups an den Ports. Die sind direkt an den > Tastern. Sind die nicht angesteckt, gibts keine Hardware-Pullups. Genau. Steck doch mal den Jumper an den passenden Taster. Dann müsstest du Reedschalter und Taster parallel haben und den Pullup dazu bekommen.
beginner schrieb: > wenn der Kontakt nicht betätigt ist, 0,015 V. Da ist was faul, das sollten fast 5V sein. > Wenn der Magnet dran ist, messe ich 0,000 V. Das ist OK. Naechster Schritt: Alles ab von den Eingaengen, nochmal direkt an den Pins messen. Damit kannst Du dann feststellen, ob die Pullups eingeschaltet sind. fonsana
ok - ich habs! Heut morgen habe ich ein neues Projekt erstellt und den gesamten Quelltext aus dem alten ins neue Kopiert. Nur µC hat nun nie irgendwelche Änderungen übernommen, also waren die Pull Ups inaktiv... Nun funktioniert es, nachdem ich das alte Projekt geöffnet habe. ... Ich wollte ein neuen Projektnamen vergeben, das ging irgendwie nicht, deswegen das neue Projekt und die Kopie des Quelltextet. Was habe ich dabei falsch gemacht? Möchte das Projekt ja schließlich, wenn es fertig ist, nicht mit dem Namen "Test" abspeichern...
Dann war Hannes Lux um 13:15 der Erste, der richtig lag. fonsana
beginner schrieb: > Heut morgen habe ich ein neues Projekt erstellt und den gesamten > Quelltext aus dem alten ins neue Kopiert. > > Nur µC hat nun nie irgendwelche Änderungen übernommen, also waren die > Pull Ups inaktiv... Dann hast Du versäumt, im Programmer-Dialog die neue Hexdatei auszuwählen. Der Programmer-Dialog ist nämlich ein eigenständiges Programm, das sich einen Dreck um das gerade geöffnete Projekt kümmert, sondern immer die zuletzt gebrannte Hexdatei und EEPdatei zum Brennen anbietet. Vielleicht solltest Du Dir angewöhnen, vor dem Klick auf den Brennbutton mal den Text im Dateinamenfenster zu lesen und zu prüfen, ob es auch die richtige Datei (im richtigen Ordner) ist. ...
fonsana schrieb: > Dann war Hannes Lux um 13:15 der Erste, der richtig lag. Ist das hier ein Quiz? Was gibt es zu gewinnen? ...
Vielen Dank erstmal für die Hilfe! Bin erfreut darüber wie mir zur Seite gestanden wurde.
Hannes Lux schrieb: > Dann hast Du versäumt, im Programmer-Dialog die neue Hexdatei > auszuwählen. Der Programmer-Dialog ist nämlich ein eigenständiges > Programm, das sich einen Dreck um das gerade geöffnete Projekt kümmert, > sondern immer die zuletzt gebrannte Hexdatei und EEPdatei zum Brennen > anbietet. Wo finde ich denn den Programmer-Dialog? > Vielleicht solltest Du Dir angewöhnen, vor dem Klick auf den > Brennbutton mal den Text im Dateinamenfenster zu lesen und zu prüfen, ob > es auch die richtige Datei (im richtigen Ordner) ist. Wo ist das Dateinamenfenster? ..das Fenster wo auch mögliche Fehler angezeigt werden?
@beginner Na ja. Wie und mit welchem Hilfsmittel überträgst du denn dein von dir geschriebenes Programm in den µC? Im AVR-Studio lässt du dein Programm (welches du als Text geschrieben hast) übersetzen und kriegst eine Hex-Datei. Und diese Hex-Datei wird an den µC übermittelt. Und da musst du eben aufpassen, dass du auch die richtige Hex-Datei überträgst.
Oder vielleicht einen falschen Controller im Projekt-Setup ausgewählt gehabt? Sowas geht erstaunlich lange gut, bis dann die "merkwürdigen" Fehler auftreten...
Der Controller ist richtig - der AtTiny 2313 Karl Heinz Buchegger schrieb: > Und da musst du eben aufpassen, dass du auch die > richtige Hex-Datei überträgst. Wie passe ich denn darauf auf? Ich schreibe den Text. Mit F7 (Assemble) übersetze ich und wenn ich dann auf "Connect to the Selected AVR Programmer" drücke, erscheint das Dialogfenster wo ich die Fuses usw. einstellen kann. Dann wird die Schaltfläche daneben aktiv: "Write Flash Memory Using the Current Settings" fertig. Als ich das neue Projekt erstellt habe, bin ich doch auch genauso vorgegangen wie beim ersten mal, nur das ich eben den kompletten Quelltext kopiert und unter diesem neuen Projekt abgespeichert habe.
beginner schrieb: > Wie passe ich denn darauf auf? > > Ich schreibe den Text. > Mit F7 (Assemble) übersetze ich .... Jetzt wird aber langsam mal Zeit, dass Du erzählst, welche SW Du benutzt! Gruß Dietrich
beginner schrieb: > oh achso - sorry, dachte ich hätte es am Anfang mit geschrieben. > > Ich nutze das AVR Studio 4 Hä? Siehe Bild
Hi Hannes Lux, was mir auch schon passiert ist>> habe zu Beginn die internen Pull Ups aktiviert und im Laufe des Programm-Codes wieder kapput gemacht. Seitdem achte ich auf "sbi / cbi. Man kennt ja seinen Quelltext nicht, schade! Grüße Rolf
Rolf Hegewald schrieb: > habe zu Beginn die internen Pull Ups aktiviert > und im Laufe des Programm-Codes wieder kapput gemacht. Genau das wäre auch mein Tipp. Daher... Michael H. schrieb: > Deine Pullups sind aus... häng mal den ganzen Code an und am besten noch > ein anständiges Bild vom Aufbau. ^^
Rolf Hegewald schrieb: > Man kennt ja seinen Quelltext nicht, schade! Auch wenn es arrogant klingt, ich benutze keinen fremden unverstandenen Programmcode. Ich bau' auch nix nach, was ich nicht volständig verstanden habe. Ich mach' mein eigenes Ding, auch wenn es oftmals schlechter ist als das, was man so im Netz findet. Aber es ist meins, ich verstehe jede Zeile Code und ich bin für meine Fehler selbst verantwortlich. Karl Heinz Buchegger schrieb: > Siehe Bild Danke, das erspart mir das "Turnschuhnetzwerk" zum Bastelrechner, denn auf dem WWW-Rechner habe ich kein AVR-Studio installiert. Und Dein Bild zeigt nebenbei, dass "Kalle" keine Beleidigung ist... ;-)) beginner schrieb: > Dann wird die Schaltfläche daneben aktiv: > "Write Flash Memory Using the Current Settings" > fertig. Jou, und woher stammen die "Current Settings", wann hast Du die zuletzt "gesettet"? Da hast Du ganz selbstverständlich die Settings des letzten Projektes benutzt. Aber tröste Dich, das ist sogut wie jedem Benutzer des AVR-Studios schon mal passiert. Mir übrigens auch, nur habe ich das selbst herausgefunden ohne ein Forum oder irgendjemand Anderes zu fragen. Dafür bin ich gelegentlich bei vielen anderen Sachen "betriebsblind". Also mach' Dir nichts draus, sieh es als Anlass, zukünftig Dialoge etwas aufmerksamer zu lesen und nicht nur blind draufloszuklicken. Ein STK500 samt Software ist nunmal kein MP3-Player, da ist etwas mehr Aufmerksamkeit angesagt... ...
Hannes Lux schrieb: > Aber tröste Dich, das ist sogut wie jedem Benutzer des AVR-Studios schon > mal passiert. Wie wahr, wie wahr. Und es ist eines der 'Features' vom AVR-Studio bei dem ich mir (als professioneller SW-Entwickler) auf den Kopf greife und mich frage: Hat damals niemand mit dem AVR-Studio gearbeitet oder warum ist keinem aufgefallen, dass das schwachsinnig ist?
beginner schrieb: > Wie passe ich denn darauf auf? > > Ich schreibe den Text. > Mit F7 (Assemble) übersetze ich und wenn ich dann auf > "Connect to the Selected AVR Programmer" drücke, > erscheint das Dialogfenster wo ich die Fuses usw. einstellen kann. > Dann wird die Schaltfläche daneben aktiv: > "Write Flash Memory Using the Current Settings" > fertig. Da ist es wieder, die Generation Klicki weiss nicht was da ablaeuft. Wenn man die ersten drei bis 5 Projekte (koennen auch in der Groessenordnung 1-3 blinkende LEDs sein) richtig zu Fuss auf der Kommandozeile gemacht hat, hat man einen komplett anderen Zugang zu dem Ganzen. fonsana
Seid nicht so hart. Er hat sich halt den Programmierdialog noch nie genauer angesehen. Dafür hab ich Verständnis auch wenn ich es nicht verstehe. Wenn da ein Dialog mit Reitern aufgeht, dann geh ich alle Reiter einmal durch um zu sehen, was es da noch so alles gibt. Ich muss ja nicht spastikermässig auf jeden Button draufklicken, den ich irgendwo sehe. Im Gegenzug muss ich gestehen, dass ich den Toolbar-Button "Write Flash Memory Using the Current Settings" noch nie richtig wahrgenommen hatte.
Hi >Im Gegenzug muss ich gestehen, dass ich den Toolbar-Button "Write Flash >Memory Using the Current Settings" noch nie richtig wahrgenommen hatte. So unpraktisch ist der Button gar nicht. Man kann halt schnell bei minimerten Programmer Dialog auf die Funktionen zugreifen. MfG Spess
spess53 schrieb: > So unpraktisch ist der Button gar nicht. Man kann halt schnell bei > minimerten Programmer Dialog auf die Funktionen zugreifen. Was aber eben voraussetzt, dass man wenigstens in groben Zuegen weiss was man da tut. fonsana
Hi >Was aber eben voraussetzt, dass man wenigstens in groben Zuegen weiss >was man da tut. Das ist in den meisten Fällen vorteilhaft. MfG Spess
fonsana schrieb: > Da ist es wieder, die Generation Klicki weiss nicht was da ablaeuft. piano, piano. Er schreibt doch, dass es sein erstes Projekt ist... "Einfach" benutzbare Tools ermöglichen viel früher Erfolgserlebnisse und helfen einem, bei der Stange zu bleiben. Wenn du alles sofort bis ins Detail begreifen willst, kommst du bei Quarks an und bist alt und grau, bevor du das erste mal "make" geschrieben hast. Er hat sich eh ein sehr gut geeignetes Projekt zum Einsteigen gesucht. Daran scheitern schon viele. Wenn wir jetzt noch den Code sehen dürfen, finden wir auch den Fehler, falls es nicht Karl Heinz' Tipp war.
Michael H. schrieb: > Wenn du alles sofort bis ins Detail begreifen willst, kommst du bei > Quarks an und bist alt und grau, bevor du das erste mal "make" > geschrieben hast. Da bin ich - fuer Sachen die ich oben als Beispiel erwaehnt habe - anderer Meinung. Fuer blinkende LEDs braucht man kein make. Wenn man verstanden hat, wie die Kette funktioniert, ist die Verwendung von make dann auch verstaendlich. Dann scheitert man auch nicht mehr an der Aussage: "Ich klicke darauf und da kommt so eine komische Fehlermeldung." Nagut, Fehlermeldungen sollte man dann auch noch lesen und versuchen zu verstehen. fonsana
fonsana schrieb: > Dann scheitert man auch nicht mehr an der > Aussage: "Ich klicke darauf und da kommt so eine komische > Fehlermeldung." Verwechselst du Threads oder hast du hier gar nicht alles gelesen? Darum gehts doch hier gar nicht... Hier gehts um einen Fehler im Code oder um einen Bedienungsfehler, der den Besten passiert.
fonsana schrieb: > Aussage: "Ich klicke darauf und da kommt so eine komische > Fehlermeldung." Da fällst mir ein Student ein, der hat in so einem Fall dann immer wieder neu geklickt hat mit der Hoffnung, die Fehlermeldung geht irgendwann mal weg - und wurde immer wütender. Dabei hatte er die Fehlermeldung auch nach 1/4..1/2 Stunde nicht mal gelesen. Gruß Dietrich
Michael H. schrieb: > Hier gehts um einen Fehler im Code > oder um einen Bedienungsfehler, Hier ging es darum, dass er den Fehler im Code repariert hat und durch einen Bedienungsfehler immer wieder den alten, nicht mehr gepflegten Code geflasht hat. Ich hatte ja nun das Glück (oder Pech), dass ich vor dem Benutzen des STK500 und AVR-Studio (3,5, dann 4, immernoch 4) als Brenner (als Editor und Assembler von Anfang an) einen Eigenbau-ISP-Programmer mit Eigenbau-ISP-Software unter QBASIC benutzte. Dadurch habe ich zwar etwas Zeit verschwendet, aber verdammt viel über ISP, Fuses, usw. gelernt. Karl Heinz Buchegger schrieb: > Wie wahr, wie wahr. > Und es ist eines der 'Features' vom AVR-Studio bei dem ich mir (als > professioneller SW-Entwickler) auf den Kopf greife und mich frage: Hat > damals niemand mit dem AVR-Studio gearbeitet oder warum ist keinem > aufgefallen, dass das schwachsinnig ist? Das steht bei mir von Anfang an auf der (nicht real vorhandenen) Liste der Verbesserungsvorschläge zum AVR-Studio. Ein Optionsfeld für "Use Current Project", so wie es das für den aktuellen Debugger gibt, hätte da viel Benutzerfreundlichkeit gebracht. Da ich aber nicht ohne triftigen Grund auf neuere Software-Versionen umsteige, habe ich (moralisch) kein Recht, dies bei Atmel anzumotzen. Also stelle ich mich darauf ein. Es gibt nunmal keine perfekte Software. ...
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.