PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ansteuerung LCD des Butterfly AVR mit BASCOM Demo 1.11.7.7



Thomas-R
05.03.2005, 14:08
Hallo!

Ich möchte das doch recht vielseitige Entwicklungsboard Butterfly AVR mit BASCOM in Version 1.11.7.7 programmieren.

Zur Ansteuerung des LCDs gibt es eine Lib (LBX) "lcd_butterfly.lbx". Weiterhin gibt es unter /samples das Programm "m169_lcd.bas", welches die grundlegende Funktion zur Anzeige demonstrieren soll. Leider bricht bei mir dieses Programm mit Error Code 320 beim Syntaxcheck ab. Ich vermute, daß es irgendwas mit dem Label "Lcd_butterfly_data:" und dem folgenden Datenfeld zu tun haben muß, kann den Fehler aber nicht finden. Am Programm selbst habe ich nur die o.g. lib durch lbx ersetzt ansonsten aber keine Änderungen vorgenommen.

Das Problem tritt bei mir an unterschiedlichen Rechnern (WIN98 und XP) auf. Kann es mit den Beschränkung der Demo-Version zusammen hängen? Funktioniert bei anderen Usern dieses Sample-Programm?

Thomas!

05.03.2005, 21:07
Hi,
Benutzt duch auch die Demoversion?
Ich hab das selbe Problem wie du,
der Fehler liegt aber anscheinend nicht im Lcd_butterfly_data bereich, sondern anscheinend einfach beim einbinden der libray.
Der Code lässt sich problemlos compilieren, wenn mann die ganze $lib zeile auskommentiert.
Leider funktioniert der Code dann aber nicht, wenn mann ihn auf das butterfly überträgt (Bei mir brummt der Speaker nur kurz auf)

Ich denke man benötigt einfach die lcd_butterfly.lib (welche ja anscheinend bei der vollversion dabei ist)

mfg KingNothing

Nick_Knatterton
05.03.2005, 22:44
Hallo,

ich hatte das gleiche Problem.
Schaut euch doch mal diese Seite an:

http://www.mcselec.com/forum/viewtopic.php?t=343&highlight=butterfly

dort gibt es eine leicht modifizierte lcd_butterfly.lbx-Datei

In eurem File folgende Einstellung nicht vergessen:

$lib "lcd_butterfly.lbx"

und

Dim _butterfly_digit As Byte


Gruß

06.03.2005, 09:37
thx Nick_Knatterton,
leider funktioniert bei mir immer noch nicht,
das beispiel lässt sich jetz ohne Probleme compilieren,
aber wenn ich das HEX file mit avrdude auf das Butterfly übertrage und dort starte höre ich nur ein Knacken im Lautsprecher. :(

Bin am verzweifeln
KingNothing

Nick_Knatterton
06.03.2005, 11:01
Ich benutze zum programmieren PonyProg2000 (Freeware ;-)) und einen parallelen Programmieradapter. (AVR-ISP-kompatibel)

Die LCD-Demo funktionierte bei mir einwandfrei, nachdem ich oben genannte Änderungen gemacht habe.

Wird das File in den richtigen Bereich kopiert? PonyProg unterscheidet hier zwischen Programm-Memory und Daten-Memory.
Hast du als Prozessortyp den ATMega169 eingestellt?

06.03.2005, 11:29
Ich benutze Avrdude (wegen Linux), PonyProg unterstützt das Programmieren per Serieller Schnittstelle (über den Bootloader) AFAIK ganicht.
Das Programmieren kann es eigentlich nicht sein, weil das ADC Beispiel klappt einwandfrei.
Den richtigen Prozessortyp? Meinst du im Bascom? Ja hab ich.

Kannst du mir vielleicht mal dein HEX file senden, dann sehn wir ja ob es am Compiler oder am Übertragen liegt.

P.S: Programmier tu ich es mit dem Befehl


avrdude -p atmega169 -P /dev/ttyS0 -c butterfly -U flash:w:M169_LCD.HEX

Nick_Knatterton
06.03.2005, 18:04
Hier erst einmal das dazugehörige Bas-File (incl. Tastaturabfrage und Tastenquittungston):


:'-------------------------------------------------------------------------------
' (c) 2004, MCS Electronics
' M169_LCD.BAS demonstrates LCD butterfly driver
'-------------------------------------------------------------------------------

$regfile = "m169def.dat"
$crystal = 8000000
$baud = 9600
$lib "lcd_butterfly.lbx"

'you need to dim this byte
Dim _butterfly_digit As Byte
Dim S As String * 6
Dim I As Byte
Dim Taster_nummer As Byte
Dim Pulses As Word , Periods As Word
Pulses = 256 : Periods = 100 'set variables
Speaker Alias Portb.5 'define port pin


Declare Sub Taster_1_routine
Declare Sub Taster_2_routine
Declare Sub Taster_3_routine
Declare Sub Taster_4_routine
Declare Sub Taster_5_routine

Config Pinb.4 = Input
Portb.4 = 1
Config Pinb.6 = Input
Portb.6 = 1
Config Pinb.7 = Input
Portb.7 = 1
Config Pine.2 = Input
Porte.2 = 1
Config Pine.3 = Input
Porte.3 = 1
'Config Serialin = Buffered , Size = 12




Restart:

Cls
S = "AVR"

Cls : Lcd "BASCOM" : Wait 2

Cls : Lcd S : Wait 1





Do
For I = 1 To 5
Taster_nummer = I
Select Case Taster_nummer
Case 1 : Debounce Pinb.6 , 0 , Taster_1_routine , Sub
Case 2 : Debounce Pinb.7 , 0 , Taster_2_routine , Sub
Case 3 : Debounce Pinb.4 , 0 , Taster_3_routine , Sub
Case 4 : Debounce Pine.2 , 0 , Taster_4_routine , Sub
Case 5 : Debounce Pine.3 , 0 , Taster_5_routine , Sub
End Select
Next

Loop

End

Sub Taster_1_routine
Gosub Tastenquittung
Cls : Lcd "NORD"
Print "NORD"
End Sub

Sub Taster_2_routine
Gosub Tastenquittung
Cls : Lcd "SUED"
Print "SUED"
End Sub

Sub Taster_3_routine
Gosub Tastenquittung
Cls : Lcd "SELECT";

End Sub


Sub Taster_4_routine
Gosub Tastenquittung
Cls : Lcd "WEST";
Print "WEST"
End Sub

Sub Taster_5_routine
Gosub Tastenquittung
Cls : Lcd "OST"
Print "OST"
End Sub

Tastenquittung:
Sound Speaker , Pulses , Periods 'make some noise
Return



Lcd_butterfly_data:
Data 0% ' space
Data 0% ' !
Data 0% '""
Data 0% ' #
Data 0% '$
Data 0% ' %
Data 0% ' &
Data 0% ' '
Data 0% ' (
Data 0% ' )
Data 0% ' *
Data 0% ' +
Data 0% ' ,
Data 0% ' -
Data 0% ' .
Data 0% '/
Data &H5559% ' 0
Data &H0118% '1
Data &H1E11% ' 2
Data &H1B11% ' 3
Data &H0B50% ' 4
Data &H1B41% ' 5
Data &H1F41% '6
Data &H0111% ' 7
Data &H1F51% ' 8
Data &H1B51% '9
Data 0% ':
Data 0% ';
Data 0% '<
Data 0% '=
Data 0% '>
Data 0% '?
Data 0% '@
Data &H0F51% ' A
Data &H3991% , &H1441% , &H3191% , &H1E41% , &H0E41% , &H1D41% , &H0F50% , &H2080% , &H1510% , &H8648% , &H1440% , &H0578%
Data &H8570% , &H1551% , &H0E51% , &H9551% , &H8E51% , &H9021% , &H2081% , &H1550% , &H4448% , &HC550% , &HC028% , &H2028% , &H5009%

hier das Hex-File dazu:

KingNothing
06.03.2005, 18:35
Tja...
Dein Hex läuft einwandfrei,
wenn ich es selbst compiliere und übertrage passiert allerdings rein garnichts! :-(

Mir ist aufgefallen das mein HEX-File nur 439 Byte gross ist, es scheint mir als würd ich die Lib garnicht mir Linken.

Ich muss nicht noch etwas bestimmtes umstellen damit es funktioniert?

Nick_Knatterton
06.03.2005, 18:53
Ich habe zwar die Optionen, soweit bekannt, eingestellt, aber inwiefern diese Einfluß auf die Generierung des Hex-Files haben weiß ich nicht.

Im Compiler-Menü kann man z.B. die Ports für die diversen Schnittstellen angeben, die defaultmäßig nicht mit dem Butterfly-Board übereinstimmen.

Chip: m169def.dat
I2C: SCL-> Port E.4; SDA->Port E.5
SPI: Clock-> Port B.1; MOSI-> Port B.2; MISO-> Port B.3; SS-> Port B.0

ich verwende z.Z. übrigens die hier gepostete 1.11.7.8'er EXE-Datei und die genannte lcd-library.

KingNothing
06.03.2005, 19:31
Ich hab auch mal auf die 1.11.7.8. EXE geupdatet und die Ports geändert,
hat jedoch nichts gebracht,
benutzt du denn auch die Demoversion?

Nick_Knatterton
06.03.2005, 20:00
ja genau, ich benutze die Demo unter Windows98se bzw Windows XP

Thomas-R
06.03.2005, 20:27
Hallo Alle,

das Übersetzen des Programms mit der neuen .lbx funktioniert fehlerfrei. Danke für den Hinweis auch zur Anmeldung beim MCS-Forum.

PS: MCS hatte mir auf Support-Anfrage eine Programmdatei 1.11.7.8 geschickt, die nichts brachte.

Ich werde nun versuchen, das Progrämmchen seriell in meinen Butterfly zu übertragen. Ich werde Euch über Ergebnisse informieren.

Gruß und Danke Thomas!

KingNothing
06.03.2005, 20:37
Hm,
dann weiss ich auch nicht was es sein könnte.

Ich fänds mal interessant zu hören wie es bei anderen Leuten mit der Demo & Butterfly aussieht.

13.03.2005, 21:10
Hallo Alle,

ich habe das LCD-Testprogramm mit serieller Selbstprogrammierung ohne Problem auf den Butterfly bekommen. Es hat auch alles wunderbar funktioniert. Ich bin jetzt im Austesten der Möglichkeiten des Butterfly. Ein Temperatur oder Helligkeitslogger sollte doch drin sein...

Ein Problem hätte ich noch: Im AVR-Studio4 gibt es einen Simulator, den man auch mit dem Butterfly LCD aufrüsten kann. Allerdings habe ich die Simulation meines Testprogramms nicht dahingehend zum Laufen gebracht, daß das Display funktionierte. Hat da jemand Erfahrungen mit der Materie?

Gruß Thomas!