Hallo, bin relativ neu dabei hier. Ich habe mir das Pollin Evaluierungsboard 2.0.1 geholt. Meiner Meinung nach echt toll für 15€, und ausserdem gut erweiterbar. Vorher hab ich es in Betrieb genommen. Musste erst noch gelötet werden. Danach hab ich mit Ponyprog auch gleich das Beispielprog von der Pollin-Downloadseite draufgespielt, lies sich ohne Probleme schreiben :) Nur die Funktion war leider nicht zu 100% gegeben :/ Ich hab mir erst nichts dabei gedacht, und fröhlich angefangen eigene kurze Programme zu testen. ZB die LEDS leuchten und Blinken lassen, etc, was auch gut klappte. Nur irgendwann fiel mir etwas eigenartiges auf, was ich auch schon beim Pollin-Testprogramm beobachten musste. Aber hier erstmal mein aktueller Quellcode, mit dem ich der Sache auf die Spur gehen wollte: [quote]#include <avr/io.h> int main(void){ int i; DDRD = 0xE0; // Pin 0-4 als Eingang, Pin 5-7 als Ausgang while(1){ if (PIND & (1<<2)) PORTD = (1<<5); if (PIND & (1<<3)) PORTD = (1<<6); } return 0; } [/quote] Die Funktion lässt sich schnell ablesen. Taster 1 schaltet LED 1 Taster 2 schaltet LED 2 Beide gleichzeitig können nicht blinken, da T2 bei Betätigung LED1 abschaltet (wegen absoluter Zuweisung, falls man das so nennt :)) Jetzt drück ich also zB 20 mal T1. Ungefähr 15mal leuchtet dann wirklich nur LED1. In ca. 3 Fällen leuchtet nur LED2, und ab und zu leuchten sogar beide. Das macht mich bisl ratlos. Hab natürlich erstmal auf nen Fehlaufbau gedacht. Also Bauteile verglichen, Lötstellen angeschaut, zweifelhafte Stellen mit Durchgangsprüfer durchgemessen. Hat alles nichts gebracht. Ein Ähnliches Problem lieferte das Pollin-Testprogramm. Laut Forensuche hatte letztes Jahr jemand das selbe Problem, leider wurde dem nicht mehr geantwortet :) Ich weis nicht, kommt der mC vielleicht nicht damit klar, dass sehr oft hintereinander der selbe Taster betätigt wird? Oder sehr schnell? Hoffe jemand kann mir weiterhelfen, MfG Luge
Wie schaut es denn mit der Tastenentprellung aus? Ich kenne das Pollin Board nicht, glaube aber kaum, dass dort eine Hardware-Entprellung vorgesehen ist. Somit muss das in der Software realisiert werden. Gruß, Torsten
Verbaut sind so kleine Taster mit 4 Pins, leider weis ich die genaue Bezeichnung nicht. Denk aber auch dass das Pollin-Board sowas nicht hat :) Wie würde man denn sowas softwaretechnisch realisieren? Und was ich nicht verstehe, Tastenprellung hin oder her. Bei meinem geposteten Quellcode, müsste es da nicht unmöglich sein, dass zu irgendeiner denkbaren Zeit beide LEDS leuchten? Ich meine, es kann ja immer nur 1 Bit gesetzt sein? Oder irre ich mich da? :/ Und ich denke, Lötfehler kann ich ausschliesen, sonst würde es wohl öfter auftreten und nicht so sporadisch. Was ich vorher noch vergessen habe, es handelt sich um einen ATmega16!
wenn du ein steck brett da hast, würde ich mir mal die schaltung aufbauen und da testen ansonsten hast du geschrieben: PORTD = (1<<6); das setzt doch nur den "6". Port hoch, und macht alle anderen 0?! Der Fehler würde dann erklären, warum duimmer nur ein led drücke kannst entprellung brauchst du eigentlich noch nicht, erst wenn du einen Dateneingang hast, oder Datenmengen gering halten willst
Das ist schon so gewollt :) Ich will ja, dass mein T1 NUR LED 1 setzt und mein T2 NUR LED 2. Trotzdem kommt es vor, dass T1 mir LED 2 setzt, oder sogar beide. Was eigentlich nicht sein dürfte...
Bekannte Probleme http://www.mikrocontroller.net/articles/Pollin_ATMEL_Evaluations-Board R7 R8 R11 C19 C17 C18 entfernen und die Taster gegen Masse schalten. auch gut http://www.mikrocontroller.net/articles/AVR_Checkliste
Und noch was ist mir gerade aufgefallen. Das Board hat noch einen Taster 3. Wenn ich den oft genug drücke schaltet er mir ab und zu Led1 oder Led2! Das kann aber gar nicht sein weil T3, der auf Pin4 liegt, in meinem Programm nie abgefragt wird. Also hab ich ihn vorsichtshalber noch im DDRD zu einem Ausgang gemacht, und trotzdem schaltet er mir noch ab und zu meine Led1 oder Led2. Muss wohl wirklich ein Hardwarefehler vorliegen, oder was meint ihr? Werd also nochmal alles durchmessen. Mich wundert nur dass die Fehler so sporadisch auftreten. Wenn irgendwo falscher Kontakt wäre würde doch öfter ein Fehler auftreten?
Der Fehler liegt bei Pollin! Bau die Taster um, die Schaltung verursacht durch die Stromspitzen in den Kondensatoren Spannungseinbrüche in der Versorgung.
Danke dir! Hab deinen vorherigen Beitrag erst gesehen nachdem ich meinen letzten abgeschickt hatte. Werd jetzt erstmal die C und R entfernen und dann weiterschauen. Wobei, dass Erweiterungsmodul mit mehr LEDs und Taster liegt eh schon (ungelötet) hier rum, wenn ich das benutze und die Jumper abstecke interessieren mich die Teile auf dem Eva-Board eigentlich nicht mehr :) Egal, mich interessierts trotzdem, ich probiers jetzt mal mit direkt-auf-Masse. Aber noch ne Frage, inwieweit kann den der Spannungseinbruch zu solchen Fehlfunktionen führen? So ganz schlüssig ist mir das nicht. Würd mich freuen wenn du mir das noch erklären könntest! Bin erstmal löten :)
Sorry für mein wiederholtes Posten! Aber ich hab mir grade den Schaltplan nochmal angeschaut. Wenn ich die C und R entferne und durch Leitungen nach Masse ersetze, dann hab ich ja bei gedrückten Taster ne direkte Verbindung von +5V und GND?
Gut mitgedacht! Deshalb sollst du das ja auch nicht machen. Wie man das Board ändern kann, ist im Artikel [[Pollin ATMEL Evaluations-Board]] bzw. auf dessen Seite diskussion erklärt.
Danke, du hast mir bestätigt was ich befürchtet habe. Zusätzlich steht im Wiki ja noch dass bei 16MHz Quarz die Fuses in der PDF nicht stimmen. Da ich den ATmega16 verwende und dessen IC-Sockel ja am 16MHz Quarz liegt könnte dass noch eine Fehlerquelle sein. Ich werd jetzt mal versuchen herauszufinden, wie schnell mein mC denn jetzt eigentlich rumpelt, und danach die Kondensatoren auslöten. Danke an alle bis jetzt :) Vielleicht fällt ja jemanden noch was ein?!
Och wieso nicht? Für 15€ is doch nichts kaputt, und durchs Fehlersuchen lernt man auch was :) Durch Ändern des CLKOPT-Fuses (jetzt nicht aktiviert im Pony) und ändern des F_CPU auf 16000000 (schande über mich) läufts jetzt schon viel besser. Lediglich ab und zu passiert es noch dass nach Aktivieren von Led 2 durch T2 das Programm hängen bleibt. Auch nach wiederholten Drücken von T1 ändert sich am LED-Zustand nichts mehr. Andersrum passiert der Fehler aber nie. Naja für heute reichts, danke nochmal an alle!
hi Auch wenn ich von Basic nich viel Ahnung hab und mich mit C ebenfalls mächtig schwer tu, muß ich hier etwas zum Pollin Board sagen. Ich arbeite damit zu meiner vollen Zufriedenheit, abgesehen von dem Umstand, das es nicht direkt mit AVR Studio zusammenarbeitet und man mit PonyProg flashen muß. Aber für den Preis muß man auch keinen Luxus erwarten. Die Taster auf dem Board kannst du getrost vergessen, kauf dir ein Steckbrett, damit bist du bei Experimenten völlig offen. Ein altes 40pol. IDE Kabel einseitig auf eine 40polige Fassing gelötet und du hast die perfekte Verbindung. Es gibt aber auch fassungähnliche Teile zum aufquetschen. Damit du wieder Spaß mit deinem Controler hast, nutze die RS 232. Ich habe hier irgendwo ein Tool, um in den Controler zu sehen und die Variablenwerte zu beobachten. Such mal nach OpenEye. Ist zwar Assembler orientiert, aber mit ein wenig Phantasie kannst du das auch für andere Programmiersprachen nutzen. Dieses Tool kann auch als Basis für eine Kommunikation µC- PC dienen. Gruß oldmax
oldmax schrieb: > ...und man mit PonyProg flashen muß... Zwingt dich doch niemand. Das Board hat auch einen 10 poligen ISP und einen JTAG Anschluss.
Hi Ja hat es, aber braucht's da nicht einen JTagIce oder sowas. ich bin da nicht soweit eingetaucht, weil ich die gefundene Info nicht so einfach umsetzen konnte. Wenn mal wieder ein wenig Zeit bleibt, werd ich mich damit mal befassen. Trotzdem, eine kurze Info nehm ich geern an. Gruß oldmax
Ja, das Board hat auch zwei 10Pin Anschlüsse für ISP und JTAG. Ich benutze aber erstmal noch die fertige serielle Schnittstelle und flashe über PP, man will sich ja langsam vorrantasten :) @ Oldmax: Du sagst die Taster sind Schrott und ich sollte mir ein externes I/O Teil selber bauen. Das hab ich auch vor, aber erstmal will ich dass das "nackte" Board zu 100% funkt, damit ich andre Fehlerquellen ausschliesen kann. Denn evtl liegts ja wirklch an ner falschen Schaltung/falscher Programmierung. Wenn ich jetzt schon ein komplexeres Gerät dazustecke und etwas nicht funkt kann ich den Fehler nicht sofort eingrenzen. Wenn ich heute mittag daheim bin probier ichs erstmal mit der Entfernung der Kondensatoren bei den Tastern. Oder hast du evtl ne andere Idee, bzw hast du bei dir das irgendwie in den Griff bekommen? Mittlerweile bin ich soweit: Steuere ich die LEDS mit der Software an kann ich sie leuchten und blinken lassen wie ich will, alles funkt. Kommen aber Taster ins Spiel, die irgendwas triggern sollen, happerts. (Wobei es mittlerweile scho besser wurde :)) Folgender Code: DDRD = 0xE0; // Pin 0-4 als Eingang, Pin 5-7 als Ausgang while(1){ if (PIND & (1<<2)) PORTD = (1<<5); // T1 schaltet Led1 ein und alles andre aus if (PIND & (1<<3)) PORTD = (1<<6); // T2 schaltet Led2 ein und alles andre aus } Funkt auch relativ gut, nur ganz selten kommt es vor, dass wenn ich Led2 durch T2 einschalte mir das Programm hängen bleibt. Led2 leuchtet für immer und lässt sich auch durch T1 nicht ausschalten, nur ein Reset hilft. Evtl weis ja noch jemand Rat! Danke euch!
Wenn die Taster jetzt zwischen µC-Eingang und Masse liegen, sollte noch der intern Pullup-Widerstand geschaltet sein.
1 | DDRD |= ~(1 << PD2); // Pin PD2 input |
2 | PORTD |= (1 << PD2); // Pin PD2 pull-up enabled |
Entprellen hilft auch noch. Blackbird
Danke dir, bin aber noch nicht dazugekommen R und C auszulöten. Wobei ich wohl den R drinnen lassen werde, weil irgendwann vergess ich bestimmt mal die Pull-ups zu setzen und dann gibts nen Kurzen :) Kannst du mir vielleicht noch erklären inwiefern die Kapazitäten hier Fehler verursachen können?
>> ... vergess ich bestimmt mal die Pull-ups zu setzen und dann >> gibts nen Kurzen ... ??? Wieso das? Male Dir mal die Teilschaltung mit den Tastern auf und dann versuche zu verstehen, was da passiert. Dein "Software-Problem" scheint in Wirklichkeit ein massives Hardware-Problem zu sein. Vielleicht hat Dein Netzteil auch ein Macke (zu wenig Strom). Die Cs werden von den Tastern kurzgeschlossen, da fließt kurzzeitig ein hoher Strom. Schlecht für die Tasten. Blackbird
Hi Eines sollte klar sein, die Taster beim Pollin-Board sind von VCC auf den Eingang gelegt und haben, damit der Eingang den Wechsel mitbekommt einen PullDown extern beschaltet. Die internen Widerstände im µC sind PullUp's, das heißt, sie ziehen den Eingang intern gegen VCC. Damit nun ein Taster funktioniert, muß er nun gegen GND schalten. Ich würd da nicht allzuviel rumlöten... lass es einfach drauf und arbeite mit einem Steckbrett. Kostet auch so ca. 15 € bei Pollin und man kann sich da schon schöne kleine Versuche einfallen lassen. Ein paar Transistoren, Widerstände, Relais und was sonst noch so in Frage kommt sowie ein Telefonkabel ( massiv) dann brauchst du nicht die (relativ) teuren Steckbrücken. Und dann versuche dich mal mit den Tutorials anzufreunden, Das Assembler kann ich gut empfehlen und keine Angst, es sei schwierig... wenn du dich an die Regeln hälst, gibt's meiner Meinung nach nix besseres.... (nu haut mich aber nich....) Wie gesagt, die RS solltest du dir so schnell wie möglich öffnen. Damit hast du dann eine gute Möglichkeit, dem µC auf die Bits zu schauen. Gruß oldmax
Hallo, da gebe ich doch auch noch meinen Senf dazu. Ich habe nur die Kondensatoren wieder ausgelötet, seit dem geht mein Board 100% so wie es soll. Ist für einen Anfänger natürlich nicht so schön, dass die Taster nach Ucc und die LED nach Uss beschalten sind, da aller Beispielcode in allen Tutorials genau anders rum ist, aber das schärft den Verstand. Und der Preis ist gerade für jemand, der noch nicht so genau weiß, ob er "dabei" bleibt einfach eine schön niedrige Einstiegshürde. Frank
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.