www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega2560 und Bascom1.11.9.1 ADC8-15 lesen geht nicht


Autor: Mr. Kaktus (kaktus-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

bin im Moment ziemlich ratlos.

Habe folgendes Problem:

Möchte mit Bascom1.11.9.1 von einem AT-MEGA2560 unter anderem die ADC 
Ports 0-15 auslesen. 0-7 klappt wunderbar, 8-15 geht jedoch nicht, egal 
was ich mache.
$prog , 255 , &B11011001 ,                                  'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44

$crystal = 16000000                                         'Quarzfrequenz

Config Pind.5 = Output
Led Alias Portd.5


$baud = 57600

Dim Kanal As Byte
Dim X As Word



'*** RS232 Protokoll ***

Const Tz = ","

' *** ADC ***
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
Start Adc

'*** Hauptschleife ***

Do


 Kanal = 0
 Print "*" ; Tz;
 Led = 0
 Adcsrb.mux5 = 0
 Waitms 100
 For Kanal = 0 To 7
 X = Getadc(kanal)
 Print X ; Tz;
 Next Kanal

 Adcsrb.mux5 = 1
 Kanal = 0
 Waitms 100
 For Kanal = 0 To 7
 X = Getadc(kanal)
 Print X ; Tz;
 Next Kanal
 Led = 1
 Print "#" ; Tz



Loop
End


Das hier hab ich natürlich zuerst probiert:
For Kanal = 0 To 15
 X = Getadc(kanal)
 Print X ; Tz;
 Next Kanal

Autor: Herbert von Caravan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Hilfe zu Getadc sagt:
"But it is important that no I/O switching is done while using the A/D 
converter."

Du machst aber ein I/O Switching mit dem Printbefehl. Ich denke auch, 
daß Du die Kanäle zu schnell nacheinander abfragst, so daß der 
AD-Wandler noch gar nicht mit dem Wandeln eines Kanals fertig ist, wenn 
schon der nächste dran kommt.

Hochachtungsvoll
Herbert von Caravan

Autor: Mr. Kaktus (kaktus-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, habe es mal etwas umgestellt, ist zwar jetzt total umständlich , 
dafür aber übersichtlich.

Jedoch ist das Ergebnis das gleiche
Die ADC Eingänge hängen in der Luft, habe sie nur mit der Hand berührt.
Man kann aber deutlich den Unterschied zwischen den ersten 0-7 und den 
Rest ADC 8-15 sehen.

Ich habe das Gefühl der bekannte Bascom Fehler ist immer noch nicht 
behoben.

1023,1023,1023,1023,1023,1023,1023,1023,10,511,511,511,511,511,511,512,< 
\r><\n>

$prog , 255 , &B11011001 ,                                'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44
$crystal = 16000000                                         'Quarzfrequenz

Config Pind.5 = Output
Led Alias Portd.5


'$baud = 57600
Config Com4 = 57600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4                               'USB Buchse

Dim X0 As Word
Dim X1 As Word
Dim X2 As Word
Dim X3 As Word
Dim X4 As Word
Dim X5 As Word
Dim X6 As Word
Dim X7 As Word
Dim X8 As Word
Dim X9 As Word
Dim X10 As Word
Dim X11 As Word
Dim X12 As Word
Dim X13 As Word
Dim X14 As Word
Dim X15 As Word


Const Tz = ","    ' Trennzeichen Komma

' *** ADC ***
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
Start Adc

'*** Hauptschleife ***

Do
 Led = 0

 X0 = Getadc(0)
 X1 = Getadc(1)
 X2 = Getadc(2)
 X3 = Getadc(3)
 X4 = Getadc(4)
 X5 = Getadc(5)
 X6 = Getadc(6)
 X7 = Getadc(7)
 X8 = Getadc(8)
 X9 = Getadc(9)
 X10 = Getadc(10)
 X11 = Getadc(11)
 X12 = Getadc(12)
 X13 = Getadc(13)
 X14 = Getadc(14)
 X15 = Getadc(15)

print #4 , X0 ; Tz;
print #4 , X1 ; Tz;
print #4 , X2 ; Tz;
print #4 , X3 ; Tz;
print #4 , X4 ; Tz;
print #4 , X5 ; Tz;
print #4 , X6 ; Tz;
print #4 , X7 ; Tz;
print #4 , X8 ; Tz;
print #4 , X9 ; Tz;
print #4 , X10 ; Tz;
print #4 , X11 ; Tz;
print #4 , X12 ; Tz;
print #4 , X13 ; Tz;
print #4 , X14 ; Tz;
print #4 , X15 ; Tz

Led = 1

Loop
End

Autor: John Small (linux_80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab was gefunden, will aber nicht nochmal alles hier reinkopieren, 
deswegen Link:
http://www.roboternetz.de/phpBB2/viewtopic.php?p=3...

Autor: Mr. Kaktus (kaktus-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke ! War ein heiser Tipp.

Habe mir das Datenblatt nochmal angeschaut, erscheint mir jetzt auch als 
logisch was du da schreibst

100000 ADC8 entspricht DEZ 32
100001 ADC9
100010 ADC10
100011 ADC11
100100 ADC12
100101 ADC13
100110 ADC14
100111 ADC15 entspricht DEZ 39


Mit folgendem Bascom 1.11.9.1Code funktioniert es jetzt bei mir

$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             ' 64
$swstack = 68                                               '44

$crystal = 16000000                                         'Quarzfrequenz

Config Pind.5 = Output
Led Alias Portd.5


$baud = 57600
'Config Com4 = 115200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'Open "com4:" For Binary As #4                               'USB Buchse


Dim Kanal As Byte

Const Tz = ","                                              ' Trennzeichen ist ein Komma

' *** ADC ***
Config Adc = Single , Prescaler = Auto , Reference = Internal_1.1
Start Adc

'*** Hauptschleife ***

Do
 
 Print "*" ; Tz;
 Led = 0

     For Kanal = 0 To 15
     If Kanal > 7 Then Kanal = Kanal + 24                   ' Wegen Bascom 1.11.9.1 Bug notwendig
     Print Getadc(kanal) ; Tz;
     If Kanal > 7 Then Kanal = Kanal - 24                   ' Wegen Bascom 1.11.9.1 Bug notwendig
     Next Kanal

 Led = 1
 Print "#" ; Tz

Loop
End



man kann natürlich auch zwei getrennte Schleifen programmieren
For Kanal = 0 To 7
und
For Kanal = 32 To 39 ' = 8-15

Nochmal Danke und viel Spaß weiterhin

Autor: abbas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hello
i want config adc for adc8-15( bascom)
please help me

Autor: huch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abbas schrieb:
> hello
> i want config adc for adc8-15( bascom)
> please help me

After reading this thread during the last four years and not able to 
formulate your question more specific, I doubt that anyone can help you.

By the way: BASCOM 1.11.9.1 is out of date!

Autor: Mr Kaktus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war ja auch 2008 ihr Schlaumeier

Das Thema ist längst erledigt. Siehe letzter Beitrag von mir.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.