Starthilfe mit Mega8

#3088741
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?
#3088752
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
}
#3088777
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
}
Gast #3088822
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?
Gast #3088851
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
Angehängte Dateien:
#3089215
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);)
#3089230
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren