Forum: Mikrocontroller und Digitale Elektronik Probleme beim proggen mit lpc2148


von David S. (der_dave)


Lesenswert?

Tag auch, hab schonmal einen beitrag...in englisch verfasst den ich 
dummerweise net wiederfind... den hier bookmark ich mir ;)

erm geht sich um folgendes:

wir proggen grad an nem olimex lpc2148 ruzm und wollen eigentlich nur 
die einfache aufgabe bewältigen einen wert von einem optiksensor über 
den adwandler auf die konsole ausgeben zu lassen.
wir haben das ganze vorher schonmal geschafft aber mit einem anderen 
board. nun versuchen wir das ganze mit demlpc2148 aber das will net so. 
sensor ist getestet der gibt gute signale. wir haben an den pin ad03 
angestöpselt.
das ist unser code:
1
#include<targets/lpc2000.h>
2
#include<stdio.h>
3
4
5
static int erg;
6
int main(void) {
7
8
PINSEL1&=~(1<<29);
9
PINSEL1|=(1<<28);
10
11
AD0CR|=(1<<3); // Kanal 1
12
13
AD0CR|=(1<<9);
14
AD0CR|=(1<<10);
15
16
AD0CR|=(1<<16);
17
AD0CR|=(1<<21);
18
19
while(1){
20
  if(AD0DR3&(1<<31)){
21
    erg=(short)(AD0DR3>>6);
22
    debug_printf("%i\n",erg);
23
  }
24
}
25
26
return(0);
27
}

wir denken echt langsamwir haben n brett vormkopf. kann uns jemand sagen 
was los ist?

: Verschoben durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Und was hat das jetzt mit "PC-Programmierung" zu tun?
-> Verschoben

von David S. (der_dave)


Lesenswert?

Find mich hier im forum net wirklich zurecht...immerhin "programmiere 
ich an nem pc".... binmir da net sicher :P

von Wilhelm F. (Gast)


Lesenswert?

David Scheele schrieb:

>wir proggen grad an nem olimex lpc2148 ruzm und wollen
>eigentlich nur die einfache aufgabe bewältigen einen wert
>von einem optiksensor über den adwandler auf die konsole
>ausgeben zu lassen.

Funktioniert die Ausgabe auf die Konsole denn generell, unabhängig vom
ADC?

>wir haben das ganze vorher schonmal geschafft aber mit
>einem anderen board.

Auch LPC2148, oder was ganz anderes?

von David S. (der_dave)


Lesenswert?

Wilhelm Ferkes schrieb:
> Funktioniert die Ausgabe auf die Konsole denn generell, unabhängig vom
> ADC?

jo das funtkionert.wir haben schon den standartwert so 0, 256 usw 
abrufgen und aufzählen lassen können, aber das hilft uns ja auch nicht 
viel weiter ;)

ja vorher haben wir an nem anderen board geproggt.... das war ne 
niedrigere zahl weiß aber die nummer net mehr. da waren einige befehle 
die wir dann umändern mussten für dieses board.

von Wilhelm F. (Gast)


Lesenswert?

David Scheele schrieb:

>wir haben schon den standartwert so 0, 256 usw abrufgen und
>aufzählen lassen können, aber das hilft uns ja auch nicht
>viel weiter ;)

Aber sicher, das ist doch schon mal ein Ansatzpunkt, daß schon einiges 
funktioniert! Da kann man jetzt intern im Baustein weiter suchen, ob was 
mit der Initialisierung nicht stimmt, oder ob der Pin hardwaremäßig 
keine Verbindung zum Sensor hat...

>ja vorher haben wir an nem anderen board geproggt....

Meine Frage war, ob es ebenfalls ein LPC2148 war, oder ein anderer 
Baustein aus der LPC21xx-Reihe? Einfach um einzuschätzen, was ihr vorher 
gemacht habt.

Kürzlich war hier noch jemand mit einem LPC23xx, der ein falsches 
Headerfile eingebunden hatte. Als ich es bemerkte, und einen Hinweis 
gab, hat der Mann sich aber auch nie wieder gemeldet.

von David S. (der_dave)


Lesenswert?

Ja war auch ein lpc21xx dingen.
also wir haben schon alle befehle drei ma überprüft und den einen tag 5 
stunden nur an diesem problem gehockt und nix gebacken bekommn

konsole fuinktioniert wie gesagt und auch beimstoppen und den 
kramsselbst nachgucken scheint eigentlich so ungefähr alles richtig zu 
laufen.

das hier war der code der auf dem letzten board funktioniert hat:
1
 #include<targets/lpc2000.h>
2
#include<stdio.h>
3
4
static int b;
5
}
6
7
int main(void){
8
9
// AD CRAP CONFIG
10
ADCR|=(1<<1); //KANAL 1
11
12
ADCR|=(1<<9); // 110 an Bit 8-15 schreiben
13
ADCR|=(1<<10); // 110 an Bit 8-15 schreiben
14
15
ADCR|=(1<<16); // INSTANT START
16
ADCR|=(1<<21); // AN!
17
18
ADCR&=~(1<<17);
19
ADCR&=~(1<<18); // Auflösung auf 10 bits
20
ADCR&=~(1<<19);
21
22
// Ab hier LED 
23
while(1){
24
if((ADDR&(1<<31))) {
25
  b=((short)(ADDR>>6))*1250; 
26
  b =(short)(ADDR>>6);
27
  debug_printf("%i\n",b);
28
}}
29
30
return(0);
31
}

von Wilhelm F. (Gast)


Lesenswert?

So, ich hab mir mal ein Beispiel angeschaut.
Dort wird am Ende der Initialisierung noch Bit 24 (Start Conversion) in 
ADCR gesetzt. Dann kommt die while-Schleife. Kann es das sein?

von David S. (der_dave)


Lesenswert?

Wilhelm Ferkes schrieb:
> So, ich hab mir mal ein Beispiel angeschaut.
> Dort wird am Ende der Initialisierung noch Bit 24 (Start Conversion) in
> ADCR gesetzt. Dann kommt die while-Schleife. Kann es das sein?

wir haben den adcr 24er mit in die while schleife gepackt vorher mal
hat aber net geholfen

von Wilhelm F. (Gast)


Lesenswert?

Habt ihr mal bei Keil oder Hitex auf die Homepage geschaut?

Dort gibt es reichlich Beispiele für die LPC-Typen zum kostenlosen 
Download. Auch mit ADC. Die funktionierten bei mir auch immer.

Leider habe ich zur Zeit keine LPC-Hardware vor Ort, kann es also selbst 
nicht testen.

von David S. (der_dave)


Lesenswert?

Wilhelm Ferkes schrieb:
> Habt ihr mal bei Keil oder Hitex auf die Homepage geschaut?
>
> Dort gibt es reichlich Beispiele für die LPC-Typen zum kostenlosen
> Download. Auch mit ADC. Die funktionierten bei mir auch immer.

Ne noch net geschaut.
War grad drauf find aber net wirklich was was in die richtung geht

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.