Manuel1980
27.12.2007, 21:22
Hallo zusammen
Ich habe erst kürzlich angefangen in die Bascom Programierung für die Atmel Prozesoren einzusteigen.
Ich habe einen ATMega32, schreibe die Programme in Bascom und nutze Ponyprog2000 als Prommer-Tool.
Einfache digitale E/A Programme klappen soweit ganz gut.
Jetzt habe ich mich an die analogen Eingänge gewagt.
Ich habe einen Spannungsteiler mit 10k Poti an Pin PA0 angeschlossen und habe über den Befehl x=GETADC(0) auch schon Werte einlsesen können. Über Vergleiche von Constanten mit dem gelesenen Analogwert habe ich dann an Port C verschiedene LEDs angesprochen.Soweit so gut...
Jetzt wollte ich aber in disesm Programm auch digitale Eingänge nutzen.
Da Port D noch komplett frei ist wollte ich Pin PD7 nutzen um an PC7 eine LED anzusprechen. Aber der Pin PD7 reagiert nicht als Eingang.
Ich habe auch schon diverse andere Pins von Port D und B probiert....keiner geht.
Ohne den ADC gehen sie aber....könnt ihr mir weiterhelfen?
hier noch mein Code:
$regfile = "m32def.dat" ' we use the M32
$crystal = 8000000
Config Adc = Single , Prescaler = Auto , Reference = Internal
'Ausgangs/Eingangsport deklarieren
Config Portc = Output
Config PortD = Input
'Ausgangs/Eingangsport auf Pull-UP
Portc = 255
Portd = 255
'Now give power to the chip
Start Adc
'Variablendeklaration
Dim W As Word
'Programmschleife
Do
' Analogwert vom Channel PA0 einlesen
W = Getadc(0)
'Auswertung wie hoch der Pegel ist und anschließenden
'Aktivierung der dementsprechenen LEDs
If W > 100 Then
Portc.0 = 0
Else
Portc.0 = 1
End If
If W > 200 Then
Portc.1 = 0
Else
Portc.1 = 1
End If
If W > 300 Then
Portc.2 = 0
Else
Portc.2 = 1
End If
If W > 400 Then
Portc.3 = 0
Else
Portc.3 = 1
End If
If W > 500 Then
Portc.4 = 0
Else
Portc.4 = 1
End If
If W > 600 Then
Portc.5 = 0
Else
Portc.5 = 1
End If
If W > 700 Then
Portc.6 = 0
Else
Portc.6 = 1
End If
If portd.7 = 0 Then
Portc.7 = 0
Else
Portc.7 = 1
End If
Loop
End
Ich hoffe ich habe meinen ersten Beitrag ordentlich verfasst und ihr könnt mir weiterhelfen.
Gruß Manuel
Ich habe erst kürzlich angefangen in die Bascom Programierung für die Atmel Prozesoren einzusteigen.
Ich habe einen ATMega32, schreibe die Programme in Bascom und nutze Ponyprog2000 als Prommer-Tool.
Einfache digitale E/A Programme klappen soweit ganz gut.
Jetzt habe ich mich an die analogen Eingänge gewagt.
Ich habe einen Spannungsteiler mit 10k Poti an Pin PA0 angeschlossen und habe über den Befehl x=GETADC(0) auch schon Werte einlsesen können. Über Vergleiche von Constanten mit dem gelesenen Analogwert habe ich dann an Port C verschiedene LEDs angesprochen.Soweit so gut...
Jetzt wollte ich aber in disesm Programm auch digitale Eingänge nutzen.
Da Port D noch komplett frei ist wollte ich Pin PD7 nutzen um an PC7 eine LED anzusprechen. Aber der Pin PD7 reagiert nicht als Eingang.
Ich habe auch schon diverse andere Pins von Port D und B probiert....keiner geht.
Ohne den ADC gehen sie aber....könnt ihr mir weiterhelfen?
hier noch mein Code:
$regfile = "m32def.dat" ' we use the M32
$crystal = 8000000
Config Adc = Single , Prescaler = Auto , Reference = Internal
'Ausgangs/Eingangsport deklarieren
Config Portc = Output
Config PortD = Input
'Ausgangs/Eingangsport auf Pull-UP
Portc = 255
Portd = 255
'Now give power to the chip
Start Adc
'Variablendeklaration
Dim W As Word
'Programmschleife
Do
' Analogwert vom Channel PA0 einlesen
W = Getadc(0)
'Auswertung wie hoch der Pegel ist und anschließenden
'Aktivierung der dementsprechenen LEDs
If W > 100 Then
Portc.0 = 0
Else
Portc.0 = 1
End If
If W > 200 Then
Portc.1 = 0
Else
Portc.1 = 1
End If
If W > 300 Then
Portc.2 = 0
Else
Portc.2 = 1
End If
If W > 400 Then
Portc.3 = 0
Else
Portc.3 = 1
End If
If W > 500 Then
Portc.4 = 0
Else
Portc.4 = 1
End If
If W > 600 Then
Portc.5 = 0
Else
Portc.5 = 1
End If
If W > 700 Then
Portc.6 = 0
Else
Portc.6 = 1
End If
If portd.7 = 0 Then
Portc.7 = 0
Else
Portc.7 = 1
End If
Loop
End
Ich hoffe ich habe meinen ersten Beitrag ordentlich verfasst und ihr könnt mir weiterhelfen.
Gruß Manuel