Hallo, ich bin am verzweifeln. Ich bin grad dabei meine ersten Schritte mit einem ATMega8 zu machen, bekomme aber leider trotzt edlicher Foreneinträge und Internetseiten nix hin. Ich habe folgende Hard-/Software: - Evaluation Board von Pollin - Taster mit Pull-Down Widerstand - LED mit Anode an µC - AVR Studio 6 - PonyProg zum überspielen - MEGA8 mit einem 16MHz Quarz Ich würde gerne als erstes eine abfrage mit if-Bedingung machen wenn Taster1 (Port D 2) gedrückt ist dann LED1 (Port D 5) an, sonst LED1 aus. Ich bekomme leider nichtmal die LED1 dauerhaft an. Welche configurations Bits müssen im PonyProg gesetzt werden? Könnt Ihr mir weiterhelfen?
das ist das was ich bisher hab. hab einisges rumprobiert deswegen das ganze auskommentiere.
1 | #include <avr/io.h> |
2 | |
3 | //#define Taster PIND & (1 << 2)
|
4 | //#define LED_an PORTD |= (1 << 5)
|
5 | //#define LED_aus PORTD &= ~(1 << 5);
|
6 | |
7 | |
8 | int main(void) |
9 | {
|
10 | //DDRD &= ~( (1<<PD2) ); /* PD2 als Eingaenge */
|
11 | //PORTD |= ( (1<<PD2) ); /* Interne Pull-Up fuer beide einschalten */
|
12 | /*if(Taster)
|
13 | {
|
14 | LED_an;
|
15 | }
|
16 | else
|
17 | {
|
18 | LED_aus;
|
19 | }*/
|
20 | //outp (0xFF, DDRD);
|
21 | PORTD |= (1 << 5); |
22 | PORTD &= ~(1 << 5); |
23 | }
|
da habe ich auch schon durchgeguckt. habe jetzt nochmal das folgende Programm draufgeschoben um alle LEDs an Port D einzuschalten. Tut sich nur leider nichts, deswegen habe ich die vermutung dass es an den security/config bits liegt. Kennt sich da jemand mit aus bei PonyProg?
1 | #include <avr/io.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | |
6 | DDRD = 0xFF; // (3) |
7 | PORTD = 0xFF; // (4) |
8 | |
9 | |
10 | }
|
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen In diesem Fall mußt du die Led mit der Kathode an den µC hängen und die Anode an VCC, das hat mit "security/config bits" nichts zu tun.
da soll er erstmal nichts machen. In diesem Schritt sollte er erstmal nur die LEDs am PortD einschalten um zu gucken obs funktioniert, aber da das schon nicht funktioniert brauche ich auch noch keine Tasterabfrage zu machen. Selbst mit einer while(1) Schleife passiert nichts.
Da ich ein fertiges Board hab ist das schwierig mit dem Ändern der LED. Müssten die dann nicht leuchten wenn mann den PortD auf 0 setzt?
1 | #include <avr/io.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | |
6 | DDRD = 0xFF; // (3) |
7 | PORTD = 0x00; // (4) |
8 | |
9 | |
10 | }
|
Chris B. schrieb: > Da ich ein fertiges Board hab ist das schwierig mit dem Ändern der LED. > Müssten die dann nicht leuchten wenn mann den PortD auf 0 setzt? > #include <avr/io.h> > > int main(void) > { > > DDRD = 0xFF; // (3) > PORTD = 0x00; // (4) > > > } WAS passiert am Ende von main? Denk mal scharf nach! Was macht dein Controller nachdem er die Ports gesetzt hat?
1 | #include <avr/io.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | |
6 | DDRD = 0xFF; // (3) |
7 | PORTD = 0xFF; // (4) |
8 | |
9 | while(1); |
10 | {}
|
11 | }
|
wenn du die while(1)-schleife meinst, die hab ich dann auch noch reingemacht. Passiert aber auch nichts. Ich möchte ja jetzt erstmal dass er die LEDs anschlatet und sonst soll er nichts machen.
Chris B. schrieb: > - Evaluation Board von Pollin > - Taster mit Pull-Down Widerstand > - LED mit Anode an µC Welche Polarität braucht die LED an de Anode damit sie leuchtet und welche Polarität hat der µC Port, wenn du ihn auf 0 schaltest? Sind die LEDs vom Pollin Board wirklich an PortD?
1 | #include <avr/io.h> |
2 | #ifndef F_CPU
|
3 | #define F_CPU 8000000UL /* Quarz/InternerOz mit ,,Mhz */ |
4 | #endif
|
5 | |
6 | #include <util/delay.h> /* definiert _delay_ms() ab avr-libc Version 1.2.0 */ |
7 | |
8 | |
9 | int main (void) |
10 | {
|
11 | DDRB=0xFF; |
12 | |
13 | while(1) |
14 | {
|
15 | PORTB=0xff; |
16 | _delay_ms(500); // delay 500 ms |
17 | |
18 | PORTB=0x00; |
19 | _delay_ms(500); // delay 500 ms |
20 | |
21 | }
|
22 | }
|
das lässt den Port B im 1/2 sec Takt togglen anbei auch mal das fertige hex für den mega 8
das war ein denkfehler, stimmt. aber auch wenn ich die bits auf high gesetzt habe ist nichts passiert. eben hat er endlich das gemacht was er soll, nur leider habe ich mich jetzt ausgesperrt und keinen mega8 mehr da. muss mir jetzt erstmal einen neuen bestellen. danke aber erstmal für die Hilfe.
Chris B. schrieb: > das war ein denkfehler, stimmt. aber auch wenn ich die bits auf high > gesetzt habe ist nichts passiert. JP6 und JP7 geschlossen? Was ist passiert? Was hast du gemacht?
Die Jumper waren die ganze Zeit gesteckt. Er macht die LEDs jetzt auch an nur leider hab ich in PonyProg run´mgespielt und da das RSTDISBL gesetzt. nun komme ich nicht mehr drauf.
Chris B. schrieb: > Die Jumper waren die ganze Zeit gesteckt. Er macht die LEDs jetzt auch > an nur leider hab ich in PonyProg run´mgespielt und da das RSTDISBL > gesetzt. nun komme ich nicht mehr drauf. :D Warum spielst du damit auch rum?
Chris B. schrieb: > da. muss mir jetzt erstmal einen neuen bestellen. danke aber erstmal für > die Hilfe. Ich würde mir den ATMEL AVRISPmkII gleich mitbestellen. Damit hast du nie wieder Probleme beim flashen.
Ist denn niemandem aufgefallen, daß Pastor Braune in seinem Beispielprogramm den PortB blinken läßt? Damit funktioniert es. Und Chris hat die ganze Zeit geschrieben, daß die Taster und die LED's an PortD hängen... Ich könnte mir vorstellen, das könnte irgendwie zusammenhängen ;-)
Bernd S. schrieb: > Ich könnte mir vorstellen, das könnte irgendwie zusammenhängen ;-) Damit wirst du zum Held des Tages!
Bernd S. schrieb: > daß die Taster und die LED's an > PortD hängen... siehe Schaltplan ;-) http://www.pollin.de/shop/downloads/D810038B.PDF Hammer schrieb: > Damit wirst du zum Held des Tages!
Sollte ja auch nur als Bsp. dienen . Das Pollin Dings kenne ich nicht ;-) und bin eigentlich davon ausgegeangen das er das als Anregung nimmt oder irgendwie ein Portpin von B an seine LED daddelt . mfg
@ATMEL AVRISPmkII: kommt man damit denn wieder drauf wenn man sich ausgeschlossen hat? @al3ko: Mit ausprobieren lernt man das meiste, nur manchmal kostet das halt auch geld ;) @bernds1: Das was wohl etwas missverständlich geschrieben. Es hatte mit meinem Programm funktioniert, nur bevor ich das andere Programm drauf spielen konnte war ich schon ausgesperrt. Ich hätte es sonst auf den PortD umgeschrieben. Ich hoffe mit einem neuen µC wird es funktioniern. wenn nicht werde ich mich nochmal an euch richten. (Hilfe werde ich danach bestimmt nochmal brauchen);)
Pastor Braune schrieb: > Sollte ja auch nur als Bsp. dienen . > Das Pollin Dings kenne ich nicht ;-) und bin eigentlich davon > ausgegeangen das er das als Anregung nimmt oder irgendwie ein Portpin > von B an seine LED daddelt . > > mfg Ok, dann nehme ich alles zurück! Ich hatte das so verstanden, daß die LED mit dem Beispielprogramm bzw. dem Hexfile funktioniert. Deshalb dachte ich, daß das mit dem Port D ein Irrtum vom Chris war. Das Board kenne ich nicht, ich habe gerade das PDF gesehen. Also sorry, Chris! Ich nehme alles zurück :-) Gruß Bernd
kein Ding, ich bin froh über jeden Lösungsansatz und wär es so gewesen hätte ich nun kein Problem mehr :)
Chris B. schrieb: > @ATMEL AVRISPmkII: kommt man damit denn wieder drauf wenn man sich > ausgeschlossen hat? Nö. RSTDISBL kannst du nur mit HV ('Parallel') Programming wieder löschen, welches der AVRISP MkII nicht beherrscht.
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.