Aktuelle Zeit: 05:30:07 26.05.2013

  • Deutsch (German)
  • English

Avr

Avr ist die Basis-Klasse (der Controller). Die Eigenschaft „Device“ muss als erste Eigenschaft vor allen Anderen gesetzt werden.

Eigenschaften (nur schreiben)
Name Beschreibung Wert
Avr.Device=Controllername Controller-Klasse wählen1) Name
Avr.Clock=Konstante Taktrate in Hz 2) > 0
Avr.Stack=Konstante Stackgröße in Bytes. > 1
Avr.Isr.<InterruptAdr>=Isr-Label Direktes Setzen einer Interrupt-Serviceroutine.3) Adresse
Avr.CodeStartAddr=Adresse Startadresse des Codes setzen, z.Bsp. für Bootloader „avr.CodeStartAddr = LARGEBOOTSTART“. Führt dazu, dass der erzeugte Maschinencode ab der angegebenen Adresse im Programmspeicher geschrieben wird. Adresse (Wordorientiert)
Eigenschaften (nur lesen)
Name Beschreibung Typ
Ergebnis = Avr.StackPointer Aktuelle Position des Stackpointers word
Eigenschaften (lesen/schreiben)
Name Beschreibung Typ
Avr.<Portname> Direkter Zugriff auf sämtliche Ports des Controllers. byte
Avr.<Portname>.<Bit> Direkter Zugriff auf die Bits des angegeben Ports. byte
Methoden
Name Beschreibung
Avr.Interrupts.enable Globale Interrupts einschalten
Avr.Interrupts.disable Globale Interrupts ausschalten
Avr.Idle Ruft das Idle-Event auf, sofern vorhanden.

Beispiel1

avr.device = atmega32 // Atmega32
avr.clock = 8000000   // 8 Mhz Taktrate
avr.stack = 32        // 32 Bytes Programmstack
// Programmcode

Stack-Größe

Die Größe des benötigten Stacks richtet sich nach der Anzahl der Parameter und lokalen Variablen, sowie der Verschachtelungstiefe von Methodenaufrufen. Bei Verschachtelten Aufrufen addieren sich die benötigten Anzahl bytes. Eine Methode benötigt mindestens 2 bytes (Rücksprungadresse). Hinzu kommen die Parameter und deklarierte Variablen (sofern vorhanden).

Direktzugriff auf Controller-Ports

Neben den abgebildeten Objekten und Funktionen kann man wie in C/Assembler auf die Ports des Controllers direkt zugreifen. Weiterhin sind alle im Datasheet benannten controllerspezifischen Bitnamen bzw. Eigenschaften der jeweiligen Ports standardmäßig definiert. Im Editor der Luna-IDE werden sie bei korrekter Schreibweise/Existenz auf dem aktuell im Source definierten Controller farblich hervorgehoben. Die Ports und Namen werden beim Einladen und Speichern der Source-Datei anhand der avr.device-Eigenschaft aktualisiert.

Beispiel2

avr.device = atmega32 // Atmega32
avr.clock = 8000000   // 8 Mhz Taktrate
avr.stack = 32        // 32 Bytes Programmstack
 
dim a as word
dim b as byte
 
avr.TIMSK = 1<<TOIE1 or 1<<OCIE1A      ' Timer 1 und Compare1A aktivieren
a.LowByte = avr.TCNT1L                 ' Low-Byte des Timer-Counters lesen
a.HighByte = avr.TCNT1H                ' High-Byte des Timer-Counters lesen
 
avr.TCNT1H = a.HighByte                ' High-Byte des Timer-Counters schreiben (beim Schreiben immer High-byte zuerst!)
avr.TCNT1L = a.LowByte                 ' Low-Byte des Timer-Counters schreiben
avr.DDRA.PINA0 = 1
b = avr.PORTA.PINA0
avr.Isr.ICP1Addr = myIsr
 
do
loop
 
isr myIsr
 [..]
endisr
1) Avr.Device ist auch lesbar, gibt jedoch einen String als Konstante zurück
2) Das setzen dieser Eigenschaft beeinflusst nicht die physikalische Taktrate, sondern definiert sie für verschiedene darauf zugreifende Funktionen, damit diese wie erwartet funktionieren können.
3) ab Version 2012.r4. InterrupAdr ist die Hardware-Interruptadresse im Interruptvektor des Controllers, z.Bsp. ICP1Addr.
Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 chimeric.de = chi`s home
(c) 2011 rgf software, all rights reserved