Forum: Mikrocontroller und Digitale Elektronik STK500 defekt?


von JD (Gast)


Lesenswert?

Hi ich habe gerade etwas sehr merkwürdiges mit meienm STK500 und zwar 
sind alle LEDs an geschaltet sobald der Controller eingesteckt ist. 
Allerdings sollten sie vom Programm her alle aus sein. Also DDRX = 0xff 
und PORTX = 0x00

Kann es sein, das das Board defekt ist? Oder stellt mein Controller die 
Verbindung mit Masse her?

von Winnie (Gast)


Lesenswert?

Die LEDS sind L-aktiv :-)

von JD (Gast)


Lesenswert?

Wie bekomme ich sie dann ausgeschaltet? Eigentlich indem ich dann den 
Port-Pin einschalte oder??

Denn ich habe jetzt alle Kombinationen von PORTX und DDRX durch und 
keinen unterschied.

von Joe S. (bubblejoe)


Lesenswert?

JD schrieb:
> Wie bekomme ich sie dann ausgeschaltet? Eigentlich indem ich dann den
> Port-Pin einschalte oder??

Richtig.

JD schrieb:
> Denn ich habe jetzt alle Kombinationen von PORTX und DDRX durch und
> keinen unterschied.

Schalte den Port auf Ausgang (DDRX = 0xff) und den Port auf High (PORTX 
= 0xff). Dann sollten die LEDs eigtl aus sein.

Sicher dass du den richtigen Port verwendest?

von JD (Gast)


Lesenswert?

Ja es handelt sich um PORTC

hier habe alles auf 0xff gestellt:

DDRA = 0xff;
  PORTA = 0xff;
  DDRB = 0xff;
  PORTB = 0xff;
  DDRC = 0xff;
  PORTC = 0xff;
  DDRD = 0xff;
  PORTD = 0xff;

und es leuchtet immernoch. Es sei denn ich lösche den Flashspeicher. 
Dann ist alles aus.

von Joe S. (bubblejoe)


Lesenswert?

JD schrieb:
> und es leuchtet immernoch. Es sei denn ich lösche den Flashspeicher.
> Dann ist alles aus.

Beschreibst du den µC sicher?

Und zeig mal dein ganzes Programm.

von amateur (Gast)


Lesenswert?

Stecker richtig herum und richtig aufgesteckt?
Unterstützter Prozessor?
Prozessor richtig herum?

... messen

von JD (Gast)


Lesenswert?

Ja ich beschreibe den mit HVPP. Vertify ist OK.
1
//libarys
2
#include <avr/io.h>
3
#include <util/delay.h>
4
#include <stdbool.h>
5
6
int main(void)
7
{
8
  //init io
9
  init_io();
10
  
11
  while(1)
12
  {
13
    if(TASTER_OK)
14
    {
15
      _delay_ms(T_DEBOUNCE);
16
      if(!(TASTER_OK))
17
      {
18
        led_flash(4);
19
      }
20
    }
21
    
22
    if(TASTER_DOWN)
23
    {
24
      _delay_ms(T_DEBOUNCE);
25
      if(!TASTER_DOWN)
26
      {
27
        //when button down is released
28
      }
29
    }
30
    
31
    if(TASTER_UP)
32
    {
33
      _delay_ms(T_DEBOUNCE);
34
      if(!TASTER_UP)
35
      {
36
        //when button down is released
37
      }
38
    }
39
  }
40
    return 0;
41
}
42
43
void init_io(void)
44
{
45
  DDRA = 0xff;
46
  PORTA = 0xff;
47
  DDRB = 0xff;
48
  PORTB = 0xff;
49
  DDRC = 0xff;
50
  PORTC = 0xff;
51
  DDRD = 0xff;
52
  PORTD = 0xff;
53
}

von amateur (Gast)


Lesenswert?

Ich gebe in solchen Fällen auch gerne mal 0xAA aus. Dann sollte jede 2. 
Led eingeschaltet sein. Man kann bei alles aus oder alles an vieles 
übersehen.

von micha (Gast)


Lesenswert?

Da Du noch nicht den AVR Typ genannt hast:

Bei einigen AVRs liegt JTAG auf Port C; wenn JTAG enabled (fuse) geht 
der Zugriff auf den Port nicht richtig

Solltest Du einen jungfräulichen Mega64 haben, ist da eventuell noch der 
"103"-Kompatibilitätsmodus an. Dann läuft Port-C auch nicht....

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.