Jump to content
Schiffsmodell.net

Unser erstes Programm: Hardware-Test


Torsten

Recommended Posts

ZUM PASSENDEN DISKUSSIONSTHEMA -> BITTE HIER ENTLANG

 

Hallo Leute,

 

so... nun möchte ich euch hier das erste Programm vorstellen. Es testet die grundlegenden Signalgeber des Boards und spricht auch das LCD-Display an, wenn ihr die Adapterplatine dran habt. Ggf. müsstet ihr bei euch bitte Zeilen und Zeichen des Displays und die Texte hinter den LCd-Befehlen im Code ändern, wenn´s nicht zusammenpasst.

 

Solltet ihr die Adapter-Platine noch nicht haben, auch nicht schlimm: das Programm funktioniert auch auf dem nackten Evaluations Board.

Die Jumper auf dem Bord bitte alle stecken, damit die Signale des Prozessors auch zu den Schaltern und LED´s gelangen können.

 

Außerdem kann es auch über die RS232 und dem Terminal-Programm in Bascom mit eurem PC sprechen... das sollte auch über eine USB-RS232-Schnittstelle möglich sein.

 

FuseBits:

Einfach so lassen, wie der Prozessor geliefert wurde, oder die Fuses so einstellen, wie es bei der Beschreibung hier vorgegeben ist (1Mhz interner Takt).

 

'******************************************************
'
' (c)2012 SCHIFFSMODELL.NET
'
'******************************************************
'Projekt: Atmel-Programmierung für Einsteiger
'
'Prozessor: ATMega 16
'Bascom-Version: 2.0.7.5
'
'Programm 1: Hardware-Test
'
'Hardware:
'Atmel Evaluation Board V2.01
'LCD-Display 20x2
'Serielle PC-Verbindung RS232
'
'05.10.2012 T. Gietenbruch
'
'******************************************************
'======================================================
'System-Einstellungen
'======================================================
'Definition für Mega 16
$regfile "m16def.dat"
'Angabe der Taktfrequenz (1Mhz)
$crystal = 1000000
'Einstellung der RS232-Kommunikation
'!!! BAUDRATE IM TERMINAL-PROGRAMM MUSS GLEICH SEIN !!!
$baud = 4800
$hwstack = 32
$swstack = 10
$framesize = 40

'======================================================
'Konfigurationen
'======================================================
'Ein- und Ausgänge festlegen
Config Portd.2 = Input
Config Portd.3 = Input
Config Portd.4 = Input
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
'RS232-Kommunikation: I/O-Puffer
Config Serialin = Buffered , Size = 20
Config Serialout = Buffered , Size = 20
'LCD Konfiguration
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcd = 20 * 2

'======================================================
'Variablen-Deklarationen
'======================================================
Dim Taste_gedrueckt As Bit
'======================================================
'ALIAS-Zuweisungen
'======================================================
Taster_1 Alias Pind.2
Taster_2 Alias Pind.3
Taster_3 Alias Pind.4
Led_1 Alias Portd.5
Led_2 Alias Portd.6
Hupe Alias Portd.7
'======================================================
'Initialisierungen
'======================================================
' RS232 braucht Interrupt-Steuerung
Enable Interrupts

'======================================================
'Einmalige Aktionen vor Hauptprogramm
'======================================================
'Das LCD-Display vorbereiten
Cursor Off
Cls
Lcd "*****BOARD TEST*****"

'======================================================
'Hauptprogramm-Schleife
'======================================================
'Hier gehts los
Do
'Taster 1+2 auf LED´s 1+2 schreiben
Led_1 = Taster_1
Led_2 = Taster_2
'Mit Taster 3 Hupe einschalten
If Taster_3 = 1 Then
  Sound Hupe , 1 , 200
End If

'RS232- und LCD-Ausgabe
If Taster_1 = 1 And Taste_gedrueckt = 0 Then
  Taste_gedrueckt = 1
  'RS232
  Print "Taste 1 gedrueckt!"
  Print
  'LCD
  Locate 2 , 3
  Lcd "LED 1 leuchtet!   "
End If
If Taster_2 = 1 And Taste_gedrueckt = 0 Then
  Taste_gedrueckt = 1
  Print "Taste 2 gedrueckt!"
  Print
  Locate 2 , 3
  Lcd "LED 2 leuchtet!    "
End If
If Taster_3 = 1 And Taste_gedrueckt = 0 Then
  Taste_gedrueckt = 1
  Print "Taste 3 gedrueckt!"
  Print
  Locate 2 , 4
  Lcd "Jetzt hupt's!     "
End If
If Taster_1 = 0 And Taster_2 = 0 And Taster_3 = 0 Then
  If Taste_gedrueckt = 1 Then
     'LOCATE Zeile, Zeichen
     Locate 2 , 1
     '20 Leerzeichen -> untere Zeile löschen
     Lcd "                    "
  End If
  Taste_gedrueckt = 0
End If
'Hier ist Ende -> zurück nach DO
Loop

'Programmende (nur formal)
End

 

LCD-Befehle gehen aufs Display, die PRINT-Befehle auf die RS232-Ausgabe.

 

Ansonsten, einfach mal den Code ein wenig studieren - alles zwischen DO und LOOP wird zyklisch ausgeführt.

 

Viele Grüße

 

Torsten

Edited by Torsten
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.