Hallo,
bin neu hier und hab einen guten Eindruck von diesem Forum, viele
hilfsbereite Mitglieder, viele gute Artikel ... einfach toll.
Ich will in die Mikrocontroller-Welt einsteigen und hab mir das
Evaluationboard 2.0 von Pollin bestellt und auch scheinbar richtig
zusammengebaut :-)
Ich verwende einen ATmega16. Das Testprogramm von Pollin konnte ich
erfolgreich auf den Controller laden und es funktioniert einwandfrei.
Nun hab ich das erste ASM Programm aus dem AVR-Tutorial (entsprechenden
Port für mein Board geändert) hochgeladen, aber die LED´s leuchten
leider nur ganz schwach.
1
.include "m16def.inc" ; Definitionsdatei einbinden, ggf. durch
2
; 2333def.inc ersetzen
3
4
ldi r16, 0xFF ; 0xFF ins Arbeitsregister r16 laden
5
out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben
6
7
ldi r16, 0b00110000 ; 0b11111100 in r16 laden
8
out PORTD, r16 ; r16 ins IO-Register PORTB ausgeben
9
10
ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife
>Port D meine ich, habe vergessen den Kommentar zu verändern>out DDRB, r16 ; Inhalt von r16 ins IO-Register DDRB ausgeben
Na wenn Du Port D verwenden willst, muss es wohl auch
out DDRD, r16 ; Inhalt von r16 ins IO-Register DDRD ausgeben
heissen? Ich kenne dein Board nicht, und mein AVR-Assembler ist auch
derzeit etwas eingerostet, sorry.
Es klappt jetzt :-)
vielen Danke für die schnellen Antworten....
Zum Verständnis:
Wieso leuchtet denn die LED schwach wenn ich das verwechsele?
Wird die LED irgendwie ständig an und ausgeschaltet? (da ich ja den Port
D benutzt habe ohne vorher die entsprechenden Pins auf Ausgang zu
schalten)
Gruß,
Bernd
>Wieso leuchtet denn die LED schwach
Wenn Du den Port auf Eingang mit aktiven internem Pullup schaltest, und
die LED zwischen diesem Port und Masse liegt, kann ein sehr kleiner
Strom fließen, so das die LED glimmt. Nur eine Vermutung, kenne ja deine
Schaltung nicht.
Ich habe das Board auch ..
Die 2 LEDs hängen an PD5 und PD6. Er schaltet die Pullups an PD5 und PD4
an, und nur den (völlig unbelegten) Port B auf Ausgang.
An den Threadersteller, vorausgesetzt es ist noch aktuell, probier mal:
1
.include "m16def.inc" ; Definitionsdatei einbinden, ggf. durch
2
; 2333def.inc ersetzen
3
4
ldi r16, 0x60 ; 0x60 ins Arbeitsregister r16 laden
5
out DDRD, r16 ; Inhalt von r16 ins IO-Register DDRD ausgeben
6
7
ldi r16, 0x60 ; 0b01100000 in r16 laden
8
out PORTD, r16 ; r16 ins IO-Register PORTD ausgeben
9
10
ende: rjmp ende ; Sprung zur Marke "ende" -> Endlosschleife