Hello,
Ik ben een programma aan het schrijven voor een atmega64 in assembler.
Ik heb op mijn print 16 uitgangen op poorten C en D.
Ik heb ook 16 ingangen op poort e, de eerste vier van poort g en de laatste vier van poort f.
Als ik onderstaande regels programmeer:
opnieuw: sbis pinf,pinf4
rjmp uit
sbi portc,pc0
uit: sbic pinf,pinf4
rjmp weg
cbi portc,pc0
weg: rjmp opnieuw
dan lukt dit voor alle ingangen behalve die van poort G.
Er verschijnt de volgende foutmelding:
operand 1 out of range: 0x63
Met welke instructies kan ik deze ingangen wel gebruiken?
Moet ik dan deze poort eerst inlezen in een register om dan de ingangen te kennen of lukt dit ook ni
Akkoord maar dit geld wanneer hij in atmega103 compatibility mode staat (zie pagina 5)
Wanneer de M103C fuse niet geprogrammeerd staat dan is poort G een 5-bit bi-dirctionele I/O poort ( pagina 6 )
Blijkbaar is er geen enkele instructie echt bruikbaar voor het aanspreken van poort G. of vergis ik mij
pros
Prosper, yop la boum, c'est le roi du macadam (aldus Maurice Chevalier)
Uit de datasheet:
The ATmega64 is a highly complex microcontroller where the number of I/O locations
supersedes the 64 I/O location reserved in the AVR instruction set. To ensure backward
compatibility with the ATmega103, all I/O locations present in ATmega103 have the
same location in ATmega64. Most additional I/O locations are added in an Extended I/O
space starting from 0x60 to 0xFF (i.e., in the ATmega103 internal RAM space). These
location can be reached by using LD/LDS/LDD and ST/STS/STD instructions only, not
by using IN and OUT instructions.
Je kan poort G dus wel gebruiken, zij het niet met de gebruikelijke instructies.
