Protokolle
-
- Beiträge: 255
- Registriert: 17.10.2005 19:03
- Name: Thomas
- Geschlecht: männlich
- Studienrichtung: Elektrotechnik
- Matrikel: 2005
- Angestrebter Abschluss: Dipl-Ing.
Protokolle
Protokolle
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Wer Rechtschreibfehler findet, darf sie behalten!
Re: Protokolle
Quelltexte
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- 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
Ansteuerung eines Gleichstrommotors
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 34
- Registriert: 28.01.2009 23:23
- Geschlecht: männlich
- Studienrichtung: Informatik
- Matrikel: 2008
- Angestrebter Abschluss: Dipl-Ing.
Re: Protokolle
Einlesen einer Spannung durch Interrupt (INT) an Port 5 und Anzeige des Spannungswerts auf dem LCD
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.
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){
}
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 20
- Registriert: 31.01.2009 10:47
- Name: Eddy
- Studienrichtung: Informatik
- Matrikel: 2008
- Angestrebter Abschluss: Dipl-Ing.
Re: Protokolle
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)
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
Re: Protokolle
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.
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.
- tilman
- Beiträge: 37
- Registriert: 21.10.2009 14:33
- Geschlecht: männlich
- Studienrichtung: Mechatronik
- Matrikel: 2009
- Angestrebter Abschluss: Dipl-Ing.
Re: Protokolle
Auslesen eine SMT160-30 Temperatursensors.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 6
- Registriert: 25.06.2014 23:05
- Name: Di_Schlaubi
- Matrikel: Ich bin doch kein Student.
- Angestrebter Abschluss: Wie oft denn noch? Ich nix Student.
Re: Protokolle
Temperaturmessung.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 12
- Registriert: 15.12.2015 09:42
Re: Protokolle
Protokoll und Quelltext zur Aufgabe:
Einlesen der Flankenwechsel des Encoders durch Verwendung des Interrupts (INT) und Ausgabe eines Spannungswertes über ein angeschlossenes digitales Potentiometer.
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.