PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Definition file für MEGA168



Matthias Mikysek
13.04.2005, 19:13
Hallo Bascom Gemeinde,

ich brauche eine Definition Datei für den MEGA168. Da Bascom die (noch) nicht bietet, aber wohl eine für den MEGA88 habe ich versucht die zu ändern. Also Ärmel hoch und hinein in die Datenblätter.....
Nun. ich habe nun eine m168def.dat die soweit auch funktioniert d.h. bascom compiliert funktionierenden code, aber es hakt noch mit den Interrupts. Die Vektoradressen habe ich angepasst und ein paar einträge geändert die die Interuptsprungbefehle entsprechend den MEGAS einstellen. Mein Code springt nun auch in die ISR, aber nur auf level und nicht auf Flanke (weder Falling noch Rising). Ich weiss auch warum: aus der BASIC Anweisung:

config INT1 = RISING

macht der Compiler:

ldi r24, 0x73 ; 0047 E783
out UCR, r24 ; 0048 B98A
in r24, MCUCR ; 0049 B785
andi r24, 0xF3 ; 004A 7F83
ori r24, 0x0C ; 004B 608C
out MCUCR, r24 ; 004C BF85

und hier liegt das Problem, denn der Wert 0C gehört für den M168 nicht in das Register MCUCR sondern in das Register EICRA.

Ich hab jetzt schon recht lang gesucht und probiert aber nicht gefunden wo der entsprechende Eintrag ist der den Compiler auf diesen unterschied hinweist.

Hat wer Erfahrung mit den DAT Files?


Gruß

Matthias

cure
19.04.2005, 15:12
Hier je ein 'def' für Mega 88, 48 und 168

Ohne Gewähr

Matthias Mikysek
19.04.2005, 16:47
Danke cure,

aber diese definition habe ich schon mal gefunden. Doch davon funzt ja nicht einmal die 48 und die 88 und die sind ja bei bascom 1.1.7.7 schon incl. alle diese definitions basieren scheinbar auf einer m128.dat.

Trotzdem Danke

Matthias

Matthias Mikysek
28.04.2005, 12:38
Also, jetzt weiss ich warum meine m168def.dat die ich ja auf der Basis der m88def.dat erstellt habe nicht klappt (siehe oben):

AUCH DIE M88DEF.DAT IST SCHON BUGGY!!#-o

Hatte bis heute nämlich nur den m168 zum probieren, und nun hab ich mir extra den m88 bestellt, weil ich glaubte, dass das dann klappt. WUT!


Also Vorsicht.

Vielleicht sollte ich doch endlich auf C umsteigen oder gleich in Assembler programmieren.


Gruß

Matthias

Kjion
28.04.2005, 13:56
Vielleicht sollte ich doch endlich auf C umsteigen oder gleich in Assembler programmieren.

Da muss ich doch gleich mal anmerken das es mit avr-gcc kein Problem ist den ATMega168 zu programmieren. Man musste sich zwar noch ein .config File für Avrdude ab ändern um ihn programmiert zu bekommen, aber das gibts mittlerweile auch im Internet. Dem Wechsel steht also nichts mehr im Weg ;-)

MfG Kjion

( sorry, nur eine private Meinung )