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
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