-
-
Erfahrener Benutzer
Begeisterter Techniker
Hallo Heiko,
also mal die Kurzfassung:
- alle Register für die LCD-Treiber liegen im I/O-Raum ab SRAM &H60 und werden daher nicht wie normale I/O-Register sondern wie SRAM-Variablen angesprochen.
- der "vorgetäuschte" Mega16 versorgt den Compiler mit korrekten Daten über Flash, EEPROM- und SRAM-Größe und mit falschen Daten für Interrupts und Register-Namen, die aber im Beispielprogramm nicht stören
Auf der CD sind für das Butterfly 2 Beispielprogramme vorhanden. Die zweite Version ist für Bascom >= 1.11.7.5. Dort scheint der Mega169 schon unterstützt zu werden. Ich poste hier mal beide Beispielprogramme:
'Butterfly.bas: ATmega169 mit Bascom 1.11.7.4
'Hardware: AVR-Butterfly
'----------------------------------------------------------
$Regfile="m16def.dat" 'ATmega16 vortäuschen
$Crystal=1000000 'Interner RC-Oszillator mit 1 MHz
'
'Register im erweiterten I/O-Bereich als Variablen:
Dim LCDCCR As Byte At &HE7 'LcdContrastControlRegister
Dim LCDFRR As Byte At &HE6 'LcdFrameRateRegister
Dim LCDCRB As Byte At &HE5 'LcdControlAndStatusRegister B
Dim LCDCRA As Byte At &HE4 'LcdControland StatusRegister A
Dim LCDDR0 As Byte At &HEC 'LcdDriverRegister 0
Dim LCDDR1 As Byte At &HED 'LcdDriverRegister 1
'
'LCD initialisieren:
LCDCRB=&B10100100 '32768Hz, Bias 1/3, Duty 1/3,
' PortMask SEG0...SEG20
LCDFRR=&B00000110 'LCD-Takt 49Hz, siehe Tabelle im Datasheet
LCDCCR=&B00001110 'LCD-Spannung 3.3 V (Kontrast)
LCDCRA=&B10000000 'LCD an
'
'Eine kleine LCD-Ausgabe:
LCDDR0=&B01000100 'Segmente "1" und "2"
LCDDR1=&B00100010 'Segmente "4" und "5"
'
Do:Loop
'[Listing zum AVR-Mikrocontroller-Lehrbuch von Roland Walter, www.rowalt.de]
'Butterfly.bas: ATmega169 mit Bascom >= 1.11.7.5
'Hardware: AVR-Butterfly
'----------------------------------------------------------
$Regfile="m169def.dat" 'ATmega169-Deklarationen
$Crystal=1000000 'Interner RC-Oszillator mit 1 MHz
'
'LCD initialisieren:
LCDCRB=&B10100100 '32768Hz, Bias 1/3, Duty 1/3,
' PortMask SEG0...SEG20
LCDFRR=&B00000110 'LCD-Takt 49Hz, siehe Tabelle im Datasheet
LCDCCR=&B00001110 'LCD-Spannung 3.3 V (Kontrast)
LCDCRA=&B10000000 'LCD an
'
'Eine kleine LCD-Ausgabe:
LCDDR0=&B01000100 'Segmente "1" und "2"
LCDDR1=&B00100010 'Segmente "4" und "5"
'
Do:Loop
'[Listing zum AVR-Mikrocontroller-Lehrbuch von Roland Walter, www.rowalt.de]
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen