Display mit Atmega32

ATMega-Controller in BASIC programmieren

Postby anna83 » Sat Dec 29, 2012 12:00 am

Hallo,
ist mein erstes mal hier und bin noch bascom anfängerin.
kann mir jemand sagen warum das Display den Text 1 mal anzeigt und dann wieder ausgeht?

Es muss mit dem Timer zusammenhängen. Denn ohne dem Timer funktioniert alles einwandfrei.

$regfile = "m32def.dat"
$crystal = 1000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , _
Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input

Portb.0 = 1 'PullUp-Widerstand einschalten
Portb.1 = 1 'PullUp-Widerstand einschalten
Portb.2 = 1 'PullUp-Widerstand einschalten


Dim Ausg1 As Bit
Dim Ausg2 As Bit
Dim Ausg4 As Bit
Dim Ticks As Byte

Config Timer0 = Timer , Prescale = 64 'Timer konfigurieren Eingangstest blinken
Start Timer0
On Ovf0 Timer0isr
Enable Timer0
Enable Interrupts


Cursor Off
Cls

Do

If Pinb.0 = 0 Then 'Abfragen der Eingänge
Ausg1 = 0
Else
Ausg1 = 1
End If

If Pinb.1 = 0 Then
Ausg2 = 0
Else
Ausg2 = 1
End If

If Pinb.2 = 0 Then
Ausg4 = 0
Else
Ausg4 = 1
End If

Locate 1 , 1 'Anzeige der VAriablen im Display
Lcd Ausg1

Locate 1 , 3
Lcd Ausg2

Locate 1 , 5
Lcd Ausg4

Loop

Timer0isr: 'Anzeige Display im wechsel Eingangstest/Bestanden
Ticks = Ticks + 1

If Ticks = 1 Then
Locate 2 , 1
Lcd "Eingangstest"
End If
If Ticks = 100 Then
Locate 2 , 1
Lcd "Bestanden"
End If
If Ticks = 200 Then Ticks = 0
return

End
anna83
 
Posts: 4
Joined: Fri Jan 03, 2014 1:52 pm

Postby ag » Sat Dec 29, 2012 12:00 am

Hallo Anna,

ich habe den BASCOM-AVR Kurs nicht belegt, aber für mich sieht es aus als ob der Anzeigeroutine sich innerhalb der do-loop befinden sollte.

Oder ist da vielleicht ein Discrepanz zwischen

Start Timer0

und

Timer0isr

???

Falls meine Kommentare für dich keinen Sinn ergeben, einfach ignorieren, denn wie gesagt, kenne ich mich mit BASCOM-AVR nicht aus.

Viele Grüße,
Ag
Ag
ag
 
Posts: 532
Joined: Thu Jan 02, 2014 10:37 am

Postby anna83 » Sat Dec 29, 2012 12:00 am

Hallo Ag,
ich habe den Bascom Kurs auch nicht belegt.
Aber ich weis auch nicht wo ich das noch reinschreiben könnte.

Der Text wird ja einmal angezeigt, und dann wird die ganze anzeige gelöscht.

Die Anzeige wird zu dem Zeitpunkt gelöscht, wo eigentlich die Zweite Zeile auf Bestanden springen sollte.

ich denke auch das mit dem Timer etwas nicht ok ist.
Aber was? Ich komme da nicht hinter, ist bestimmt wie immer nur eine kleinigkeit.

Aber danke für deine Info, ich bin über jede Info dankbar.

LG Anna
anna83
 
Posts: 4
Joined: Fri Jan 03, 2014 1:52 pm

Postby ag » Sat Dec 29, 2012 12:00 am

Hallo Anna,

bei

On Ovf0 Timer0isr


versuche es mit 0xF0.

(Achte darauf, dass sowohl am Anfang und am Ende es ein Null und kein Ohh sein muss, und "v" hat bei Hexwerte nichts zu suchen.)

Viele Grüße,
Ag
Ag
ag
 
Posts: 532
Joined: Thu Jan 02, 2014 10:37 am

Postby anna83 » Sat Dec 29, 2012 12:00 am

Hallo Ag,
wo soll ich denn 0xF0 eingeben?
Das sagt mir irgendwie nichts.
anna83
 
Posts: 4
Joined: Fri Jan 03, 2014 1:52 pm

Postby ag » Sat Dec 29, 2012 12:00 am

Anna83Hallo,
ist mein erstes mal hier und bin noch bascom anfängerin.
kann mir jemand sagen warum das Display den Text 1 mal anzeigt und dann wieder ausgeht?

Es muss mit dem Timer zusammenhängen. Denn ohne dem Timer funktioniert alles einwandfrei.

$regfile = "m32def.dat"
$crystal = 1000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.3 , Db5 = Porta.2 , Db6 = Porta.1 , _
Db7 = Porta.0 , E = Porta.4 , Rs = Porta.5

Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Input

Portb.0 = 1 'PullUp-Widerstand einschalten
Portb.1 = 1 'PullUp-Widerstand einschalten
Portb.2 = 1 'PullUp-Widerstand einschalten


Dim Ausg1 As Bit
Dim Ausg2 As Bit
Dim Ausg4 As Bit
Dim Ticks As Byte

Config Timer0 = Timer , Prescale = 64 'Timer konfigurieren Eingangstest blinken
Start Timer0
On Ovf0 Timer0isr <-- HIER!!!
Enable Timer0
Enable Interrupts


Cursor Off
Cls

Do

If Pinb.0 = 0 Then 'Abfragen der Eingänge
Ausg1 = 0
Else
Ausg1 = 1
End If

If Pinb.1 = 0 Then
Ausg2 = 0
Else
Ausg2 = 1
End If

If Pinb.2 = 0 Then
Ausg4 = 0
Else
Ausg4 = 1
End If

Locate 1 , 1 'Anzeige der VAriablen im Display
Lcd Ausg1

Locate 1 , 3
Lcd Ausg2

Locate 1 , 5
Lcd Ausg4

Loop

Timer0isr: 'Anzeige Display im wechsel Eingangstest/Bestanden
Ticks = Ticks + 1

If Ticks = 1 Then
Locate 2 , 1
Lcd "Eingangstest"
End If
If Ticks = 100 Then
Locate 2 , 1
Lcd "Bestanden"
End If
If Ticks = 200 Then Ticks = 0
return

End
Ag
ag
 
Posts: 532
Joined: Thu Jan 02, 2014 10:37 am

Postby anna83 » Sat Dec 29, 2012 12:00 am

Hallo Ag,
habe ich versucht, leider sagt Bascom:
Unknown Interrupt

Config Timer0 = Timer , Prescale = 64 'Timer konfigurieren Eingangstest blinken
Start Timer0
On 0xf0 Timer0isr
Enable Timer0
Enable Interrupts

Ich möchte doch nur das in der unteren Zeile ein Text im wechsel blinkt

Ich habe das mit dem
On Ovf0 Timer0isr
aus einem Buch und ich habe es sonst auch schonmal verwendet und es hat funktioniert aber mit dem Display eben nicht.

LG Anna
anna83
 
Posts: 4
Joined: Fri Jan 03, 2014 1:52 pm

Postby ag » Sat Dec 29, 2012 12:00 am

Hallo Anna,

Ich möchte doch nur das in der unteren Zeile ein Text im wechsel blinkt


Das sollte funktionieren wenn du:

Timer0isr: 'Anzeige Display im wechsel Eingangstest/Bestanden
do '<-- hier eine neue schleife beginnen
Ticks = Ticks + 1

If Ticks = 1 Then
Locate 2 , 1
Lcd "Eingangstest"
End If
If Ticks = 100 Then
Locate 2 , 1
Lcd "Bestanden"
End If
If Ticks = 200 Then Ticks = 0
loop '<-- und hier es wieder beendest


Da aber hier ohne Timer geloopt wird, muss vermutlich die Anzahl der Ticks angepasst werden, sonst wird der Text u.U. zu schnell wechseln um richtig gesehen zu werden.

Viele Grüße,
Ag

Nachtrag: habe inzwischen den Basiskurs BASCOM-AVR von Elektor zugelegt. Mit Ovf0 ist die ATMega Akronym für die Timer0 Interrupt "Overflow" (Überlauf) Sprungaddresse im Code angsprochen, und nicht, wie ich zuerst angenommen hatte, ein Tippfehler bei ein Hexwert. Codezeile mit
 On Ovf0 Timer0isr
ist also völlig richtig.
Ag
ag
 
Posts: 532
Joined: Thu Jan 02, 2014 10:37 am


Return to BASCOM-AVR-Kurs

Who is online

Users browsing this forum: No registered users and 1 guest