hallo! bin "microcontroller-newbie". habe schaltung mit atmega, externem quarz(8mhz)+2*22pf kondi´s gegen masse und pin 9 - reset über 10k auf 5v + 100nf gegen masse, blockkondensator 100nf unter ic-sockel, und an port c 8-fach dip-schalter gegen masse... verdrahtung sollte soweit ok sein. programmiert wird der mega über ein externes universalprogrammiergerät (galep3) und dann in die schaltung eingesetzt. bekomme den controller nicht zum laufen, das einzige was funktioniert ist die umschaltung (cksel 0001) takt intern auf (cksel 1111) takt extern. sowie der externe takt eingeschalten ist, kann ich mit dem oszi an xtal 1 und xtal 2 die schwingungen sehen was mich nur wundert, die amplitude beträgt so ca. 1V. jedoch funktioniert mein kleines testprogramm nicht(siehe anhang) keine bewegungen auf den ports. habe den code mit avr-studio 4 erstellt und dann das hex-file übner den galep in den chip geschrieben. wo könnte mein fehler liegen??? ist der chip noch zu retten? was hab ich nicht beachtet?
Nur mal so als Anreiz: Stackpointer sollte am Programmstart
initialisiert werden. Siehe unter WICHTIG!
Ansonsten glaubst Du anscheinend, das der Inhalt von r16 nach jedem out
VERLOREN geht da Du r16 immer wiederholt mit dem selben Wert (0xFF oder
IN r16,PINC) füllst.
Es reicht auch nur einmal setzen und X-mal ausgeben.
Ansonsten setze CKSEL mal wieder zurück auf 0001 und prüfe, ob der 8515
auch mit den internen 1MHz läuft.
Wenn ja, dann ist CKSEL für den 8MHz-Quarz falsch gesetzt oder Du mußt
aufpassen, das Programmed = 0 und Unprogrammed = 1 ist.
Also statt für CKSEL 1111 setzt Du 0000 (externer Takt) oder statt 0001
eben 1110 für internen Takt.
.include "m8515def.inc"
;****interrupt vectors
 rjmp los             ;reset vector address
 .....
los:    ;WICHTIG! Stackpointer initialisieren
    ldi zl,low(RAMEND)
    out SPL,zh
    ldi zh,high(RAMEND)
    out SPH,zh
  cli        ;schaltet interrupts ab
    ldi r16, 0x00
    out DDRC, r16   ; port c -->eingang
    ldi r16, 0xFF
    out PORTC, r16  ; schaltet die internen pull-ups
    out DDRE, r16   ; portrichtung e  schreiben
    out DDRA, r16
    out DDRB, r16   ; schreibe port
    out DDRD, r16
loop:    in r16, PINC  ;lese port c ein
    out PORTE, r16  ;gib port c an port e aus
    out PORTA, r16  ;gib port c an port a aus
    out PORTB, r16  ;gib port c an port b aus
    out PORTD, r16  ;gib port c an port d aus
    rjmp loop
MfG
Andi
  ...grrrr...
immer dieser Copy->Paste-Teufel!
Stackpointer initialisieren sollte so sein:
    ldi zl,low(RAMEND)
    out SPL,zl
    ldi zh,high(RAMEND)
    out SPH,zh
MfG
Andi
  danke, andi für deinen hinweis mit dem register, dachte mir schon das das so wie du es geschrieben hast richtig ist, nur wei der controller absolut nicht reagierte, hab ich die register jedesmal neu geladen. du weißt sicherlich, was mann alles versucht um fehler auszuschließen... die sache mit dem stackpionter war mir neu, allerdings brachte auch dies keinen erfolg. die sache mit dem cksel- scheint auch ok zu sein, da im auslieferungszustand die fuse ja 0001 gesetzt ist. wie geschrieben, fängt der externe quarz an zu schwingen, wenn ich cksel von 0001 auf 1111 setze. das ist aber die einzigste aktion, die ich zur zeit dem m8515 entlocken kann. die ports kommen mir als hochohmig geschaltet vor(tristate). es ist also keine spannung zwischen gnd oder vcc zu messen. nun steh ich mal wieder dumm da... mfg marcel
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.