Problem mit CS erzeugung bei PIC18f4320

Gast #860514
Lesenswert?

Hi,
nachdem ich nun das Problem mit MPLAB gelöst habe, habe ich schon wieder 
ein anderes Problem.
Ich möchte ein Chip-Select Signal erzeugen und dieses zunächst auf eine 
konstante 1 setzten.
In der Simulation funktioniert das alles bestens, nur bei der 
Echtzeitmessung am PICDEM2 Board von Microchip messe ich mit dem 
Oszillographen lediglich „einen“ Peak, statt einer konstanten 1.
Die Frage ist nun, warum der PIC mein CS nicht dauerhaft auf 1 setzt, 
sondern wieder zurück auf 0?

Hier der aktuelle Code:
1
#include <p18f4320.h>
2
#include <stdio.h>
3

4
#define ad_cs LATEbits.LATE0
5

6
#pragma code
7
void main (void)
8
{
9
  ADCON0=0x00;    //Inchip A/D wandler ausgeschalten mit Bit0=0
10
  ADCON1=0x3F;    //3 = Verwendung von Referenzspannung
11
            //F = Alle Portpins auf Digital I/O, 
12
  
13
  TRISE = 0x02;  //Port E Pin 1 = Eingang, rest Ausgang
14
  
15
  PORTE = 0x00;
16
  ad_cs = 1;
17

18
  while (1){
19
    
20
  }
21
}
Gast #860545
Lesenswert?

Wie Dir bereits bei www.fernando-heitor.de geantwortet wurde, sollte auf 
PORTE nur lesend zugegriffen werden. Zum Setzen der Portpegel den LATE 
verwenden.
Lass dieses PORTE = 0x00; einfach mal weg.

Da Du den A/D abgeschaltet hast, kann ich in der Software auch keine 
weiteren Fehlerquellen ausmachen. Wenn es dann immer noch nicht läuft 
ist Deine Hardware womöglich buggy.
Gast #860549
Lesenswert?

Oh und nochwas:

Womöglich optimiert der Compiler die leere while-Schleife weg, somit 
würde der Controller direkt nach dem Setzen von PIN_E0 in den Sleepmodus 
gehen. Dies könnte ebenfalls den kurzen "Peak" erklären. Schau Dir mal 
das Assemblerlisting an!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren