Forum: Mikrocontroller und Digitale Elektronik Programm auf Atmega 16 läuft nicht


von AtMega Neuling braucht Hlife :-) (Gast)


Lesenswert?

Hallo hallo,

also ich als abslouter AtMega16 neuling brauch mal etwas Hilfe. Ich hab 
ein Programm in Assembler geschrieben, ich möchte damit vier AtTiny13 
ansteuern. In der Debugging Simulation von den AVR Studios läuft das 
ganze auch optimal aber wenn ich das ganze auf den µC brenne geht gar 
nichts. Hier ist mal der Quellcode...
1
 ;Steuerung der AtTiny13  
2
3
  .include "m16def.inc"
4
5
  rjmp Anfang
6
7
Anfang:
8
  sbi ddrb,0    ;Definition der Ausgänge über Datenrichtungsbit
9
  sbi ddrb,1
10
  sbi ddrb,2
11
  sbi ddrb,3
12
  cbi ddrb,4
13
  sbi portb,4    ;Pullup am Eingang PIN4
14
15
  ldi r20, HIGH(RAMEND)            ; HIGH-Byte der obersten RAM-Adresse
16
    out SPH, r20
17
    ldi r19, LOW(RAMEND)             ; LOW-Byte der obersten RAM-Adresse
18
    out SPL, r20
19
20
21
;____________________________________________________________________________
22
23
Programm:      ;Hauptprogramm
24
  sbi portb,0 
25
  sbi portb,1
26
  sbi portb,2
27
  sbi portb,3
28
  sbic pinb,4
29
  rjmp Schleife
30
  rjmp Programm
31
32
Schleife:
33
  cbi portb,0
34
  rcall Zyklus
35
  sbi portb,0
36
  rcall Warten
37
  cbi portb,2
38
  rcall Zyklus
39
  sbi portb,2
40
  rcall Warten
41
  cbi  portb,1
42
  rcall Zyklus
43
  sbi portb,1
44
  rcall Warten
45
  cbi portb,3
46
  rcall Zyklus
47
  sbi portb,3
48
  rcall Warten
49
  rjmp Programm
50
51
;____________________________________________________________________________
52
53
Warten:        ;Warteschleif
54
  ldi r16,2
55
Warten1:
56
  ldi r17,255
57
Warten2:
58
  ldi r18,255
59
Warten3:
60
  ldi r19,255
61
62
Warten4:
63
  dec r19
64
  brne Warten4
65
  dec r18
66
  brne Warten3
67
  dec r17
68
  brne Warten2
69
  dec r16
70
  brne Warten1
71
  ret
72
73
Zyklus:
74
  ldi r22,255
75
Zyklus1:
76
  dec r22
77
  brne Zyklus1
78
  ret

Vielen Dank im Voraus...

von Peter (Gast)


Lesenswert?

und was geht nicht?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

AtMega Neuling braucht Hlife :-) schrieb:
> aber wenn ich das ganze auf den µC brenne geht gar nichts.
Hast du deine Hardware schon mal irgendwie gestestet?
Z.B. mit einer blinkenden LED?

BTW:
> rjmp Anfang
> Anfang:
Sieh dir mal an, wie diese Initialisierungssequenz bei anderen 
aussieht...

von spess53 (Gast)


Lesenswert?

Hi

Mindestens ein Fehler:

>   ldi r19, LOW(RAMEND)             ; LOW-Byte der obersten RAM-Adresse
>   out SPL, r20

MfG Spess

von AtMega Neuling braucht Hlife :-) (Gast)


Lesenswert?

Hi,

danke für die raschen Antworten. Also Hardware hab ich getestet und hab 
ne LED blinken lassen. :-) Ich werde den angesprochen Fehler mal 
korrigieren und mal schauen was passiert..

Die Sequenz
1
rjmp Anfang
2
Anfang:

wurde in der Literatur empfohlen. Werde mal Alternative probieren

Vielen Dank
Sven

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

AtMega Neuling braucht Hlife :-) schrieb:
> Die Sequenz
> rjmp Anfang
> Anfang:
> wurde in der Literatur empfohlen. Werde mal Alternative probieren
Ja schon, aber Sinn macht das nur, wenn da noch eine ORG Anweisung 
dabeisteht, damit über die Interruptvektoren weggesprungen wird...

> Werde mal Alternative probieren
Naja, mir ging es eher darum, dich anzuregen, was diese Anweisungen 
machen... :-/

von spess53 (Gast)


Lesenswert?

Hi

>wurde in der Literatur empfohlen. Werde mal Alternative probieren

Normalerweise liegt aber zwischen dem 'rjmp Anfang' und 'Anfang:' die 
Interruptvektortabelle. In deinem Fall ist das 'rjmp Anfang' sinnfrei.

MfG Spess

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.