PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Atmega8



Thopos
24.05.2005, 19:12
Hallo

Ich nochmal.
Ich habe heut nun den ganzen Tag am myAVR-Board verbracht - sowie auch im Internet.

VIelleicht habe ich mich einfach nur ein wenig blöd angestellt.
Folgende Zusammenfassung:

Ich schreibe Programme als normales asm-File, Compilire mit gavrasm und brenne mit avrdude. Irgendwas passt mir daran nicht - ständig unheimlich lange Kommandozeilen etc. Gibt es denn keine "saubere" Möglichkeit?

Über ein paar Tipps und Hinweise würde ich mich freuen - was auch noch interessant wäre, wären Programm Beispiele.

Gruß

Thopos
24.05.2005, 21:41
Und dann stehe ich schon vor dem nächsten Problem.
Das folgende Programm funktioniert im AVR-Studio 1A und am Board überhaupt nicht.

Funktion:
LED EIN
WARTEN AUF TASTER IM LOOP
TASTER GERDRÜCKT, 2te LED AN



start:
ldi r16,low(ramend) ;Stackpointer auf
out spl,r16 ;RAM-Ende setzen
ldi r16,0b00000011 ;PortB: PB0 auf Ausgang
out ddrb,r16 ;setzen
ldi r16,0b00000001 ;PortB: PB0 auf Ausgang
out portb,r16
loop:
in r16,pinb ;PINb einlesen
cpi r16,5 ;
breq exit
rjmp loop
exit:
ldi r16,0b0000011
out portb,r16

uwegw
24.05.2005, 21:52
Irgendwas passt mir daran nicht - ständig unheimlich lange Kommandozeilen etc. Gibt es denn keine "saubere" Möglichkeit?

es gibt ne grafische oberfläche für avrdude:
http://sourceforge.net/projects/avrdude-gui

Michael
24.05.2005, 22:51
Hallo Thopos,
>cpi r16,5
du vergleichst mit 5, binär 00000101?
Schaltet der Taster denn 5Volt an den Eingang PinB.2?
PinB.0 sollte ja schon 1 liefern.
Gruß, Michael

Thopos
24.05.2005, 22:54
Genau, die erste LED ist ja schon An, somit liefert pinb.0 schon 1.

Prinzipiell habe ich meinen Fehler gefunden, PullUp ;-)
Aber so wirklich verstehen, tue ich das noch nicht...

Grave80
10.09.2005, 11:26
Hi , habe auch ein Problem mit der Tasterabfrage bei einem STK500 Board,
habe folgendes Program geschrieben, naja den Teil mit der Tasterabfrage hae ich aus dem Datenblatt vom Atmeg8, komischerweise reagiert die LED auf die Taster 4und 5 und ich hab keine Ahnung warum , vielleicht hat jemand von euch eine Erklärung dafür.

int main(void)
{

while(1)
{
DDRD |= 0xff;
PORTD |= 0xff;

unsigned char a;

/* Define pull-ups and set outputs high */
/* Define directions for port pins */
PORTB |= (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
DDRB |= (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);


/* Read port pins */
a = PINB;
if(a ==243) // bei a==243 LED an Taster4/5 geht aus
{
PORTD &= ~(1<<PD0) ;
}

}
}