Forum: Mikrocontroller und Digitale Elektronik Starthilfe mit Mega8


von Chris B. (chriswob)


Lesenswert?

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?

von (ungebetener) (Gast)


Lesenswert?

zeig mal dein Programm.

von Chris B. (chriswob)


Lesenswert?

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
}

von Vn N. (wefwef_s)


Lesenswert?


von Chris B. (chriswob)


Lesenswert?

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
}

von sebihepp (Gast)


Lesenswert?

Was denkst du passiert, wenn das Ende von main() erreicht ist?

von Kathode (Gast)


Lesenswert?

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.

von Chris B. (chriswob)


Lesenswert?

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.

von Chris B. (chriswob)


Lesenswert?

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
}

von Eumel (Gast)


Lesenswert?

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?

von Chris B. (chriswob)


Lesenswert?

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.

von The Quest (Gast)


Lesenswert?

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?

von Pastor Braune (Gast)


Angehängte Dateien:

Lesenswert?

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

von Chris B. (chriswob)


Lesenswert?

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.

von The Quest (Gast)


Lesenswert?

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?

von Chris B. (chriswob)


Lesenswert?

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.

von al3ko (Gast)


Lesenswert?

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?

von Dragoner (Gast)


Lesenswert?

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.

von Bernd S. (bernds1)


Lesenswert?

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 ;-)

von Hammer (Gast)


Lesenswert?

Bernd S. schrieb:
> Ich könnte mir vorstellen, das könnte irgendwie zusammenhängen ;-)

Damit wirst du zum Held des Tages!

von weisvonnix (Gast)


Lesenswert?

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!

von Pastor Braune (Gast)


Lesenswert?

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

von Chris B. (chriswob)


Lesenswert?

@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);)

von Bernd S. (bernds1)


Lesenswert?

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

von Chris B. (chriswob)


Lesenswert?

kein Ding, ich bin froh über jeden Lösungsansatz und wär es so gewesen 
hätte ich nun kein Problem mehr :)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
Noch kein Account? Hier anmelden.