Protokolle

Antworten
Tommes
Beiträge: 255
Registriert: 17.10.2005 19:03
Name: Thomas
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2005
Angestrebter Abschluss: Dipl-Ing.

Protokolle

Beitrag von Tommes » 10.05.2008 10:54

Protokolle
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Wer Rechtschreibfehler findet, darf sie behalten!

Benutzeravatar
kbumml
Beiträge: 63
Registriert: 05.01.2004 23:34
Wohnort: DD

Re: Protokolle

Beitrag von kbumml » 25.07.2008 15:01

Quelltexte
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
motte
Beiträge: 15
Registriert: 13.05.2009 12:31
Name: Motte
Geschlecht: männlich
Studienrichtung: Informatik
Matrikel: 2007
Angestrebter Abschluss: Dipl-Ing.

Re: Protokolle

Beitrag von motte » 01.06.2010 21:30

Ansteuerung eines Gleichstrommotors
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

mentesis
Beiträge: 34
Registriert: 28.01.2009 23:23
Geschlecht: männlich
Studienrichtung: Informatik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.

Re: Protokolle

Beitrag von mentesis » 22.07.2011 16:04

Einlesen einer Spannung durch Interrupt (INT) an Port 5 und Anzeige des Spannungswerts auf dem LCD

Code: Alles auswählen

#include <reg167.h>
#include <stdio.h>
#include <string.h>


sbit led=P2^0;
sbit RS=P7^0;
sbit RW=P7^1;
sbit DE=P7^2;

typedef union{
	char lines[4][17];
}disp_t;


const char dispAdr[] = {0,0x40,0x10,0x50};


disp_t lcdanz;


void wait(unsigned int t)
{
	/* Aufloesung T3: 1.6 us */
	T3 = 0;
	T3R = 1;
	while (T3 < t);
	T3R = 0;
}

unsigned int dispBusy(){
	unsigned int data=0;	

	DP8=0;
	RS=0;
	RW=1;
	DE=1;
	wait(10);
	DE=0;
	
	data=P8;
	
	DP8=0xFF;	

	return data&0x80; // BF=1 ... busy, BF=0 ... idlÈ*/
}

void dispWriteCmd(unsigned int cmd,data){
	P7=cmd&0x03; // nur RS und RW
	P8=data;
	DE=1;
	wait(4);
	DE=0;
}

void dispInit(){
	// Laut Datenblatt...	

	wait(9375);
	dispWriteCmd(0,0x30);
	wait(2815);
	dispWriteCmd(0,0x30);
	wait(65);
	dispWriteCmd(0,0x30);
	while(dispBusy());
	dispWriteCmd(0,0x38);
	
	while(dispBusy());
	dispWriteCmd(0,0x3F);
	
	while(dispBusy());
	dispWriteCmd(0,0x0A); 	// Display aus
	while(dispBusy());
	dispWriteCmd(0,0x01);	// Display lˆschen
	while(dispBusy());
	dispWriteCmd(0,0x0E);	// Display an
	while(dispBusy());
	dispWriteCmd(0,0x06);

	while(dispBusy());
	dispWriteCmd(0,0x0D);
}

void dispRefresh(){
	char i=0;
	char j=0;
	
	T0IE=0;	  // In Ruhe Display beschreiben --> Sys-Tick ausschalten
	
	for(j=0;j<4;j++){
		// Adresse weiterschieben (letzen 4 Zeichen ¸berspringen)
		while(dispBusy());
		dispWriteCmd(0,dispAdr[j]+0x80);
		
		// Daten schreiben
		for(i=0;i<16;i++){
			while(dispBusy());
			dispWriteCmd(0x01,lcdanz.lines[j][i]);
		}
	}
	
	T0IE=1;
}

void t0_int() interrupt 0x20{ // Interruptserviceroutine
	
	// Status-LED
	if (led==0) led=1; // 0x20 Interruptquelle
		else led=0;
	
	sprintf(lcdanz.lines[2],"* U = %1.3f V  *",(float)(ADDAT&0x03FF)*5/1024,3); // Umrechnung und Puffer-Beschreiben
	dispRefresh();
}

void main(){
    
	DP2=1;
	DP8=0xFF;
	DP7=0x07;


	P5DIDIS=1; //disconnect digital input stage

	T01CON=0x0005; //T0R=0 Stopp, T0M=0 Timermode
					//T0I=5 Vorteiler 256 --> 12,8 μs
	T0REL=0x1B1E; //65536-6942=58594 --> 0,75s
	T0=T0REL; //T0 zählt ab T0REL aufwärts
	T0IC=0x44; //T0IE=1 Interrupt erlaubt

	T3CON = 0x0002; // Timer f¸r wait

	//ILVL=1, GLVL=0
	
	//ADC config
	ADCIC=0x00;		//kein Interrupt nach Conversion
	ADEIC=0x00;		//ADC Error
	

		
	ADCON=0xF210; //ADCH=0, maximale Verzögerung, Read-Control, Und los!
	ADST=1;	
			
	dispInit();	

	strcpy(lcdanz.lines[0],"** EC_JAN_209 **");
	strcpy(lcdanz.lines[1],"*              *");
	strcpy(lcdanz.lines[2],"*              *");
	strcpy(lcdanz.lines[3],"****************");

	dispRefresh();
	
	IEN=1; //globaler Interrupt freigegeben
	T0R=1; //Timer0 Start
  
  while(1){
   
  }
}
Wir hatten ziemlich Probleme mit den Cursor-Adressen des LCD. Uns hat das PDF im Anhang - im Gegensatz zu denen in der braunen Mappe - sehr geholfen. Ansonsten einfach mal euer Display abschrauben und das Datenblatt zu dem Controller raussuchen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

phoenixV02
Beiträge: 20
Registriert: 31.01.2009 10:47
Name: Eddy
Studienrichtung: Informatik
Matrikel: 2008
Angestrebter Abschluss: Dipl-Ing.

Re: Protokolle

Beitrag von phoenixV02 » 26.07.2011 14:29

Frequenzmessung eines Rechtecksignales.
Drauf zu achten ist das die beiden ISR die gleiche Priorität haben, das sollte noch abgeändert werden.
(z.b. 0x45 statt 44)
Es funktioniert auch so, aber is etwas hässlich, da die Messung an sich die höhere Priorität haben sollte.
( Jedoch ist ein zeitgleiches auftreten sowieso faktisch augeschlossen, und die kurze Ausgabe ISR sorgt( ffalls dennoch Gleichzeitigkeit auftritt) nur für minimalen Messfehler)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Having fun with a Vacuum Tube Tesla Coil

morido
Beiträge: 1
Registriert: 20.05.2013 01:40

Re: Protokolle

Beitrag von morido » 20.05.2013 01:52

Protokoll und Quelltext zum Praktikum mit dem Titel:
Einlesen der Signale des Encoders durch Interrupt (INT) an Port 8 und Anzeige der Stellung des Encoders als Dezimalzahl auf dem Bildschirm.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
tilman
Beiträge: 37
Registriert: 21.10.2009 14:33
Geschlecht: männlich
Studienrichtung: Mechatronik
Matrikel: 2009
Angestrebter Abschluss: Dipl-Ing.

Re: Protokolle

Beitrag von tilman » 22.07.2013 13:20

Auslesen eine SMT160-30 Temperatursensors.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

benedikt.schmalzl
Beiträge: 6
Registriert: 25.06.2014 23:05

Re: Protokolle

Beitrag von benedikt.schmalzl » 02.08.2016 11:45

Temperaturmessung.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

van_orleon
Beiträge: 12
Registriert: 15.12.2015 09:42

Re: Protokolle

Beitrag von van_orleon » 26.05.2017 13:12

Protokoll und Quelltext zur Aufgabe:

Einlesen der Flankenwechsel des Encoders durch Verwendung des Interrupts (INT) und Ausgabe eines Spannungswertes über ein angeschlossenes digitales Potentiometer.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten

Zurück zu „Embedded Controller“