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?
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.
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?
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.
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.
Stecker richtig herum und richtig aufgesteckt? Unterstützter Prozessor? Prozessor richtig herum? ... messen
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 | }
|
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.