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...
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
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!
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