-
Thread
PIC16F887 auf MC2V0 - I2C
durch eine For schleife, solange du mit dem XC8 arbeitest. Im Anhang ein Bild von der Anzeige des PORTC direkt nach dem Ausführen der Zeile SDA=1; Man sieht, RC4 ändert seinen Zustand.
For schleife, solange du mit dem XC8 > arbeitest. > > Im Anhang ein Bild von der Anzeige des PORTC direkt nach dem Ausführen > der Zeile SDA=1; > Man sieht, RC4 ändert seinen Zustand. Hm bei mir geht er nicht mehr aus... werd mal mit dem Osci paar PINs testen mfg J. Bier
-
Thread
Vergleich von Variable mit Zahl geht nicht
Stück code: [c] test = result; //ist beides uint16_t if(test*1000 > test*100) { PORTC |= (1<<PORTC5); //LED an } else { PORTC &= ~(1<<PORTC5); //LED aus } [/c] jetzt sollte die LED immer leuchten, oder? Nun, das tut sie aber nicht immer: wenn die Variable "test"
weil mein eigentlicher code so aussieht: [c] if(var1 + var2 + var3*20000 > var4*1000) { PORTC |= (1<<PORTC5); //LED an } else { PORTC &= ~(1<<PORTC5); //LED aus } [/c] Die Multiplikation braucht es bei meinem Programm. Da ich aber nicht verstanden habe, wieso es bei grossen
-
Thread
Umstieg von ATmega16 auf ATmega32
Dank für die Tipps! Das iom32.h hab ich tatsächlich erst eingefügt, als ich feststellte, dass nix geht. Das mit dem Programm ist richtig, ich hab vieles noch in der main.h definiert. Allerdings läuft es ja am 16er. Ebenso andere bereits getestete Programme. Aber am 32er geht keines davon. Der Fehler
So, hatte grade wieder Zeit. Mit nem komplett neu aufgesetzen Programm gehts tatsächlich. Vielen Dank für eure Hilfe! Rein aus Interesse: Kann sich jemand vorstellen, warum es auf Pin-gleichen Controllern (16 und 32), die (bis auf 2 Register und leicht andere Vektoren) augenscheinlich
-
Thread
Einschaltverzögerung Bodenstrahler mit BM
wirds nicht gehen. Das Projekt besteht aus vier Teilen, das macht die Sache sehr übersichtlich. Es geht sicher auch viel kompakter ("einfacher" - entsprechende Beiträge werden nicht lange auf sich warten lassen), aber dann ist es nicht gut für Anfänger geeignet. a) die Leistungsschalter für die Lampen
#define PWM_DDR_1 DDRD // Datenrichtungsregister für PWM #define PWM_PORT_2 PORTC // Port für PWM #define PWM_DDR_2 DDRC // Datenrichtungsregister für PWM #define PWM_CHANNELS 11 // Anzahl der PWM-Kanäle // ab hier nichts ändern
-
Thread
atmega 1284p interrupt fehler?
bis konvertierung abgeschlosen PORTC = ADCH; if (ADCH <50){ // Begrenzung des Registers OCR2A OCR2A=50; } else { OCR2A = ADCH; } } }
(ja der kondensator ist zu weit weg dann) das mit dem timer drei probiere ich aus...dachte das geht nur mit nem interrupt weil ich kein hardwareseitige anbindung habe. vielen dank schonmal lg fabian
-
Thread
ATMEGA startet ab und an nicht
oder BOD höher. 10nF gegen Masse an Reset können auch helfen, oder falls so eine Modifikation noch geht, einen externen Quarz.
BOD höher. 10nF gegen Masse an >Reset können auch helfen, oder falls so eine Modifikation noch geht, >einen externen Quarz. Quark. Die Einstellungen vom OP sind voll OK, der AVR läuft damit solide an. Das Problem liegt woanders. Vielleicht spinnt der angesteckte Programmieradapter?
-
Thread
MM5450 driver mit Atmega8
ich habe die erste 5*7 dot matrix geschaft zu starten aber fuer den rest ,ich weiss nict wie es geht wieter. im datenblat steht dass ,mm5450 sorgt fuer eine multplixung danke im voraus C code : #define F_CPU 16e6 // 16MHz #include <avr/io.h> #include <util/delay.h> //
struct bits*)&port).b##pin) #define SBIT(x,y) SBIT_(x,y) #define DAT SBIT( PORTC, PC0 ) #define DAT_DDR SBIT( DDRC, PC0 ) #define CLK SBIT( PORTB, PB0 ) #define CLK_DDR SBIT( DDRB, PB0 ) void mm5450_wr( uint8_t num, uint8_t val ) { do{
-
Thread
DCF77 library
und folgendes im Programm hinzugefügt: im Header: #define DCF77_PON PC6 im Hauptprogramm: PORTC |= (1<<DCF77_PON); PORTC &= ~(1<<DCF77_PON); damit gebe ich ihm doch eine fallende Flanke - oder? Ich habe diese Schaltung in einem Forum gefunden von jemandem mit einem ähnlichen Problem wie
ok, die Dinge waren schnell gegoogelt. Punkt an euch ^^ Hab die Schaltung jetzt aufgebaut, geht aber noch nicht.
-
Thread
interne Pull-Up's
PORTC = 0b00111111; Schau mal ob dein Compiler nicht doch Probleme mit dem 0b.. hat und gib mal direkt in Hex oder Dezimal den Wert vor. Schnapp dir mal nen 47k Widerstand und zieh darüber den Pin
Und Achtung, einige neuere AVRs haben separate Register für die Pullups. Da geht das so wie oben nicht mehr. Tiny841 z.B. gruß cyblord
-
Thread
Cosinus Bereichsanpassung
Interrupts****************/ ISR (TIMER1_COMPA_vect) //Zündung erste Halbwelle { PORTC &= ~(1<<PC0); //T1 AN W1 Low Aktiv OCR1B = ALPHAnutz + 400; //ALPHAnutz + Zuendimpulsbreite; } ISR (TIMER1_COMPB_vect) //Löschen aller gezündeten Pins { PORTC
der Triac geht aus, wenn der Strom am Triac 0 wird. Denn kann man nicht selber ausschalten
-
Thread
Taster-Interrupt Fragen
wieder am Erstellen von Beispielprogrammen und mehr und mehr zu verstehen, was so alles mit nem µC geht und vor allem wie ich meine praktischen Fragenstellungen und Aufgaben lösen kann. Ich hangel mich ja immer von einem Punkt zum anderen und bau mir immer verzweigte Progs auf. Diesmal habe ich nun
0x08 = 0x18 // -> 0001 1000 LED_Port = i // -> LED3 geht AUS // -> LED4 geht AN (verständlich) // Step c.)--------------------------------------------- i = (0001 1000 & 0000 0111) | (0011 0000 & 1111 0000) = 0011 0000
-
Thread
xmega port remap
Hallo, versuch mal den PORTC_OUTSET = PIN7_bm; PORTC_DIRSET = PIN7_bm; als Ausgang zu schalten Gruß G.G.
funktioniert nicht. Das Signal bleibt auf PC3 (wo es nicht bleiben soll). Laut Debugger wird das PORTC_REMAP-Register gar nicht beschrieben. Hat jemand vielleicht einen Tipp für mich? Hier mein Code: [c] //Remap TC0D from PC3 to PC7 PORTC_DIRSET = 1<<PIN7_bp; PORTC_REMAP = 1<<3;
-
Thread
Verzögerte Schaltung
define F_CPU 1000000 #include <util/delay.h> int main (void){ DDRC=0b00000111; _delay_ms(500); PORTC = 0b11111110; _delay_ms(500); PORTC = 0b11111100; _delay_ms(500); PORTC = 0b11111000; _delay_ms(500); PORTC = 0b11111111; while(1) } ODER : #include <avr/io.h> #define F_CPU 1000000 #include <util/delay.h> int main (void){ DDRC=0b00000111; _delay_ms(500); PORTC = 0b00000001; _delay_ms(500); PORTC = 0b00000011; _delay_ms(500); PORTC = 0b00000111; _delay_ms(500); PORTC = 0b00000000; while(1) } und Freilaufdioden nicht vergessen.
-
Thread
1023 PWM sind 0 v?
Getadc(0) Compare1a = Wert Locate 1 , 1 Lcd ; Wert Waitms 10 Cls If Wert < 600 Then Portc.5 = 1 Elseif Wert > 700 Then Portc.4 = 1 Else Portc.5 = 0 Portc.4 = 0 End If Loop End [/code] wo liegt der Fehler? ich such jetzt schon 3 Stunden nach dem Problem und finde nichts .
Also bei mir gehts. Kann es sein, daß Du was falsch verstehst? Weil, Du schreibst "1023 PWM sind 0 Volt". Es geht ja soherum: Du legst an ADC0(PINC.0) einen Wert vor, z.B. mit einem Poti. Diesen Wert, übersetzt in
-
Thread
Abbruch beim EEPROM-Flashen eines ATMega8 mit AtmelStudio 6.2
Pollin Board > flashen, so wie beim STK500? Für das Pollin-Board braucht man PonyProg und das geht nur mit einer echten seriellen Schnittstelle. Vom AVR-Studio aus geht es nicht. Wenn du dir einen AVR-ISPmkII kaufst, dann den Originalen, mit den Klonen gibt es immer Probleme bei neuen AVR-Studio
Bequemlichkeit, da ich damit direkt aus dem AVR-Studio heraus programmieren konnte und bei größeren Files geht es auch deutlich schneller.
-
Thread
AVR Studio 6 Simulation zeigt nicht alles
0xff; // Pullups für die Eingänge aktivieren // PC6 ist Reset, PC7 Gibs bei ATMega8 nicht PORTC = ((1 << PC0) | (1 << PC1) | (1 << PC2) | (1 << PC3) | (1 << PC4) | (1 << PC5)); PORTD = ((1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4) | (1 << PD5) | (1 << PD6) | (1 << PD7));
dachte ich mir auch schon bis jetzt habe aber nur ne anleitung dafür gefunden die bei mir aber nicht geht. Vielleicht weil ich Studio 6 hab.
-
Thread
AtTiny48 Stromprobleme im PowerDown (ASM)
nicht unter 17uA Stromverbrauch. Bin seit einer Woche am lesen, Googln und ausprobieren doch er geht nicht runter. Heute hab ich einen 2ten, gebrauchten, Tiny in Dip-Gehäuse mit dem selben Programm ausprobiert um auf nummer sicher zu gehen, und siehe da, 450 uA Stromverbrauch. Es ist zum Mäuse melken
-7] zulassen ldi r16, 255 sts didr0, r16 //keine Digitalen Signale an PortC zulassen //***************Stack Pointer*****************// ldi r16, HIGH(RAMEND) out sph, r16 ldi r16, LOW(RAMEND) out spl, r16 //****************Sleep Mode vorbereitung************
-
Thread
Spannungsabfall in 74HC 238?
schaltet eine der Spalten nach GND durch. (die sitzen also in der unteren waagrechten) Aber: das geht bei einer LED-Matrix. Bei einem Cube kommst du mit dem Timing nicht mehr hin. Da müssen schon alle LED einer Ebene potentiell wirklich gleichzeitig leuchten koennen. Sonst kriegst du ein miserables
schreibst. Ein "if(zahl1==zahl2*5") wird sicher viel mehr Maschinencode erzeugen als ein einfaches "PORTC |= (1<<PC3);" > Achja, reichen 8MHz für So nen cube? Abhängig davon was du genau anzeigen willst ja oder nein. Ein Kollege hat einen 8x8x8 Cube mit einem PIC16 mit 5 MIPS realisiert. Das entspricht
-
Thread
"Include-Libs" - Teufelswerk?
static-Funktion > nicht verwendet, sagt der gcc das ja auch. Bei den vorgeschlagenen Compiler-Schalter geht es nicht um static-Funktionen. Werden solche nicht verwendet landen sie eh nicht im Code, da der Compiler, durch das static, sichergehen kann dass diese auch nicht von extern aufgerufen werden sollen
channel, boolean value); [/c] Dio.c [c] volatile uint8_t * const ports[] = { &PORTA, &PORTB, &PORTC, &PORTD}; const uint8_t masks[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; #define Dio_GetPinFromChannel(channel) channel & 0x07 #define Dio_GetPortFromChannel(channel)
-
Thread
Hilfe Ports lassen sich nicht beschalten
---------------------------------------- ziffer_0: movlw b'00011111' movwf PORTC call delay clrf PORTC movlw b'00101001' movwf PORTC call delay clrf PORTC movlw b'01001001' movwf PORTC call delay clrf PORTC movlw b'10001111' movwf PORTC call delay clrf PORTC btfsc PORTB,7 goto main goto ziffer_0
-
Thread
PSMC 3 Phasen Ansteuerung PIC 16F1788
Zusammenhang bringen mit der PSMC Geschichte... Hat wirklich keiner das MOdul schon zum laufen gebracht? Geht bei jemandem das Beispielprogramm? Gruß PS: hier das Datenblatt http://ww1.microchip.com/downloads/en/DeviceDoc/41675A.pdf auf Seite 289 ist die Registerübersicht.
"push pull setup" BANKSEL TRISC BCF TRISC, 0 ; enable pin drivers BCF TRISC, 1 Bei dir ist PORTC,0 auf INPUT geschaltet !?!?
-
Thread
wieder Probleme mit dem LCD
Ja natürlich, das muss PINB heißen *facepalm* Allerdings geht es immernoch nicht :D
Samuel J. schrieb im Beitrag #3577189: > nur das geht nicht wie ich es will Was genau geht nicht? Kannst du messen, ob das Busy-Flag gesetzt wird?
-
Thread
ILI9341 langsam Verbesserungsvorschläge?
.PC7 D/C........PC0 MOSI.......PC3 SCK........PC5 Im Code ILI9341.h: #define controlport PORTC // fuer Mega2560 #define controlddr DDRC #define controlpin PINC #define rstport PORTC #define rstddr DDRC #define rstpin PINC #define dc 0 // controlport
Schaltungsaufbau entspricht sowie einige Bilder. Ich hab mir eine andere Kammera geliehen aber schärfer geht es nicht mehr.
-
Thread
An I/O Pin 2V statt Low
nicht? Vermutlich erst dann wenn du JTAG in den fuses deaktivierst EDIT: Achnee die sind auf PortC
>Vermutlich erst dann wenn du JTAG in den fuses deaktivierst Jtag liegt an Portc. >Kurzschluss kann keiner vorhanden sein, Genau solche Effekte können Kurzschlüsse aber erzeugen. Das geht nicht immer satt auf 0 oder 5V. Dein Programm da oben hat jedenfalls keinen Fehler
-
Thread
Kleiner 8Kanal DMX Empfänger erweitern
For N = 1 To 8 Portpin = N - 1 If _dmx_received(n) > My_counter Then Portc.portpin = 0 Else Portc.portpin = 1 End If Next N If My_counter > 255 Then My_counter = 0 End If Loop End [/code]
Portpin = N - 1 kanal = n If _dmx_received(kanal) > My_counter Then Portc.portpin = 0 Else Portc.portpin = 1 End If kanal = n + 8 If _dmx_received(kanal) > My_counter Then .... Next N [/code] Auf die Anpassung im
-
Thread
Stoppuhr Anzeigeproblem
'8 wird an dritter Stelle ausgegeben PortC = &B00000100 waitms 2 portB = &B00000011 '3 wird an vierter Stelle ausgegeben PortC = &B00001000 waitms 2 .....usw Return ------------------
'Erste Stelle der Minutenanzeige einschalten Waitms 2 Portc = Lookup(m2 , Tabelle) 'Lookup-Befehl: (Für jeden Wert von M2 wird der dazugehörige wert in der Tabelle an PortC ausgegeben) Portb = &B00001000
-
Thread
DIP Schalter abfrage funktioniert nicht
auf PINB3 PORTD |= 1<<PIND5 | 1<<PIND6 | 1<<PIND7; //Pull up PORTB |= 1<<PINB0; PORTC |= 1<<PINC2 | 1<<PINC3 | 1<<PINC4 | 1<<PINC5; sei(); //Interrup zulassen while(1) { //Timer für Sekunde definieren TCCR1B |= 1<<WGM12 | 1<<CS11 | 1
); [/c] ganz automatisch beim Lesen vermittelt, ist eine ungleich höhere und höherwertige. Hier geht es nicht mehr um Ports und Bits. Hier geht es darum, was das Programm an dieser Stelle aus einer logischen Sicht der Dinge macht.
-
Thread
Timer Läuft im Sim - Aber nicht in real?
F_CPU und der gewünschten Zeitdauer ausrechnen. aber: warum einfach, wenns auch umständlich geht.
meine Lösung vielleicht nicht die kürzeste, aber doch genau so > Richtig und Schnell. Darum gehts überhaupt nicht. Du hattest 2 Fehler in 2 Anweisungen. Beide mit der richtigen Schreibweise leicht vermeidbar. Darum gehts. Es geht nicht darum, was am µC am schnellsten abläuft. Es geht darum
-
Thread
2 atmega einen als porterweiterung
Julian Bertsch schrieb im Beitrag #3565344: > PORTC |= (1<<PC0); > ausschalten muss? Mit |= ausschalten geht nicht.
Ich hab das schonmal nachgeschlagen aber wenn ich die ausschalten will mit der üblichen methode geht das bei mir an portc an und ich weiß noch nicht warum ich poste mal die configuration
-
Thread
Display Init
schiebe nach rechts LSR AK_M_1 ; schiebe nach rechts OUT PortC,AK_M_1 ; schreibe in PortC SBRS AK_M_2,0 ; wenn bit 0 gesetze SBI PortB,5 ; setze b,5 SBRC AK_M_2,0 ; wenn bit 0 gelöscht CBI PortB,5 ; claer b,5 SBRS AK_M_2,1 ; wenn bit 1 gesetze
verstehe ich noch nicht, wie du dir das mit dem Write Puls vorstellst. Meinem naiven Verswtändnis nach, geht der Ablauf doch so: Erst werden die Daten an den Bus angelegt und dann kommt der Write Puls. Zumindest erscheint mir das logisch. Bei dir ist das ineinander verzahnt. [avrasm] CBI PortB,2
-
Thread
Niveau von Elektor
ATmega328, das Programm würde auch in einen Mega44 passen. AVCC und ein GND-Pin nicht beschaltet. PortC wird allerdings benutzt. Kein Kondensator am Eingang des 7805. Sieht irgendwie schlampig aus.
austauschbare Geräte-Schnittstellen mit dem „ECC" https://www.youtube.com/watch?v=xPgJqp2tYeg Eigendlich geht hier über nen Vorgeschlagenen Standard für ne Uart-Steckerbelegung "ECC"
-
Thread
Seminarprojekt Binäruhr, passenden µC gesucht
muß, und dafür auch eine gute Note bekommt. So weit es der Schulklasse entspricht. Sich übernehmen, geht oft nach hinten los.
> Eine Uhr ist wie oben gezeigt relativ trivial. Wenn man weiß, wies geht, ist alles trivial. Sogar eine Uhr, die nach 2 Monaten immer noch auf 3 Sekunden genau geht. Oder eine Blinddarmoperation.
-
Thread
AVR-GCC: Welchen Datentypen haben SFRs?
ReadFromPort(PORT) (\ (&PORT==&PORTA) ? (DDRA) :\ ( (&PORT==&PORTB) ? (DDRB) :\ ( (&PORT==&PORTC) ? (DDRC) :\ ( (&PORT==&PORTD) ? (DDRD) :\ 0 ) ) )\ ) [/c] wird zu: [code] uint8_t a = ReadFromPort(PORTC); 1f28: 84 b3 in r24, 0x14 ; 20 1f2a: 08 95
fooPort( A ) = barPort( B ); foobarPort( C ); [/c] jenes da: [c] PORTA = PINB; DDRC = 0x2a; PORTC = 0x2a; [/c]
-
Thread
Bascom RND Befehl nicht wirklich Randome?
Zufall As Byte Dim Speed As Byte Dim I As Byte Dim Speed2 As Byte Portb.2 = 1 Portc.5 = 1 Do If Pinb.1 = 1 Then Zufall = Rnd(10) Speed = 1 Speed2 = 0.7 If Zufall = 7 Then Cls Locate 1 , 2 Lcd "1111" For I = 1 To 3 Portb.2 = 0 Wait Speed2
gleichen Worte und die gleichen Phrasen vor, so dass das alles nach kurzer Zeit recht flott von der Hand geht. Du musst ja nur Lesen und nicht Schreiben.
-
Thread
0-10v in Pwm umsetzen für Konstantstromquelle
Einen PORTA gibt`s beim Mega8 nicht, der ADC liegt auf PORTC
Flakern ist nicht aus zu halten und wird immer teutlicher um soweniger ich Spannung rein fahre. Geht mann jedoch über 50% ist kein Flakern mehr mit bloßen Auge erkennbar. Was ist zutun ????
-
Thread
DS1820 an Atmega8 Probleme
m8adef.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config 1wire = Portd.7 Dim Temp(9) As Byte Dim I As Integer Cls Do 1wreset 1wwrite &HCC 1wwrite &H44
danke, nun geht es. allerdings eine verständnisfrage: der wert im array ist doch binär? also in jedem feld (1-9) steht entweder ne 0 oder ne 1? wieso gibt er dann im o.a. quellcode den wert dezimal wieder? erst
-
Thread
RS485 nach 2,5 Paketen ist schluss
MAX485 an Board B, an Rx an?! Durch die Peaks sieht man ja, dass Board B in die empfangs routine geht und sie zu früh verlässt. Das erste Paket kommt an und die erste Antwort geht fehlerfrei raus. Board B geht das zweite Mal in die Empfangsroutine und empfängt nicht vorhandene Daten und stoppt
Ohne Autolinefeed void rs485_send_16Byte(uint8_t *s) { uint8_t i = 0; _delay_ms(15); PORTC |= (1<<PORTC4); //RS485 auf Sendemodus _delay_ms(5); while(i<16) { rs485_putc(*s); s++; i++; } _delay_ms(5); PORTC &= ~(1<<PORTC4); //sendemodus beenden - Empfänger
-
Thread
Beaglebone Black per SPI mit atmega328p verbinden
der Takt ankommt, aber nicht die Daten. Besteht das Problem in beide Richtungen oder nur in eine?(Geht hier nicht so genau hervor von wo nach wo du Sendest und wo die Anzeige herkommt). Auf einem Logic Analyzer würde man hier mit großer Wahrscheinlichkeit recht schnell sehen wo es nicht passt...
/* Wait for reception complete */ while(!(SPSR & (1<<SPIF))){} PORTC = SPDR; }
-
Thread
Drehzahlmesser Digital Simson s51 an Zündanlage (Vape)
Elseif A > 6000 Then Portc = &B00111111 Portd.6 = 0 Portd.7 = 0 Elseif A > 5000 Then Portc = &B00011111 Portd.6 = 0 Portd.7 = 0 Elseif A > 4000 Then Portc = &B00001111 Portd.6 = 0 Portd.7 = 0 Elseif A > 3000 Then Portc = &B00000111 Portd.6 = 0 Portd.7 = 0 Elseif A > 2000 Then Portc = &B00000011 Portd.6 = 0 Portd.7 = 0 Elseif A > 1000 Then Portc = &B00000001 Portd.6 = 0 Portd.7 =
-
Thread
DIP-Schalter an ATmega8515
High). Schaltplan im Anhang:) Hierzu kam mir folgende Idee: [c] DDRC = 0x00; // Gesamter PORTC als Ausgang. PORTC = 0xff; // Interne Pull up's an. [/c] Nun noch eine Methode die für den Anfang mal nur PC0 auswerten soll. [c] int DMXStartadresse() { volatile uint8_t y; if( PD0
ausführlich geschrieben damit es ein wenig anschaulicher ist. Ich weis natürlich dass, das kürzer geht :)
-
Thread
ADC Text-LCD-Ausgabe
//Mittelwertübergabeaus 5 Einzelmessungen - Kanal 0 if (adcval >= 1) { PORTC |= ~(1<<PC0); } else { PORTC |= ~(1<<PC3); } /* LCD-Überprüfung zur Probe - eigentlich soll hier der ADCW ins itoa und dann aufs LCD */ char my_string[12
diese Aussage macht das ADSC Flag: * Ich tu nichts mehr, das Ergebnis steht im ADCW * Holla, heut gehts rund, Bin bei der Arbeit einen Wert zu wandeln
-
Thread
Problem mit EA-DOGM204 Display
REG_PORT ist PORTE, wobei Reset Pin0, RS_PIN, RW_PIN und E_PIN die Pins 5-7 sind. Der DATA_PORT ist PORTC. LCD_Read_ST() ist so aufgebaut wie LCD_Write_IS(), nur RW_PIN wird gesetzt und der DATA_PORT wird am Anfang auf Eingang gesetzt und zwischen Enable ausgelesen. Soll an der Stelle nur prüfen, ob
(FSTN Display): 0x3A, 0x0B, 0x06, 0x3D, 0x6E, 0x54, 0x7C, 0x38, 0x0F, 0x01 Die Ansteuerung geht nun über SPI und funktioniert einwandfrei. Danke trotzdem ;) LG Nico
-
Thread
Midi mit Bascom und AVR
Um 8 Relais anzusteuern benötigst du kein Midi. Das geht mit 8 Transistoren oder besser einem Array von Transistoren (Vorwiderstand nicht vergessen). Programmchange ist nur bei bereits midifizierten Geräten angebracht. Wenn keine Notendaten oder Sysex
Konstanten ' --------------------------------------------------------------- Relais1 Alias Portc.5 'Relais Namenvergabe Relais2 Alias Portc.4 Relais3 Alias Portc.3 Relais4 Alias Portc.2 Relais5 Alias Portc.1 Relais6 Alias Portc.0 Plus Alias Pind.5 ' Schalter Namenvergabe
-
Thread
Pic 18F27J53 problem mit einem Pin
Hallo zusammen, ich habe ein Problem mit meinem Pic 18F27J53. Es geht darum, dass ich das Bluetooth Modul (HC-05) in Kombination mit meinem Pic verwende. Das Bluetooth Modul empfängt Signale von einem Handy und übermittelt diese an meinen Pic weiter. Der Pic empfängt
vorgegeben Makro) mit den entsprechenden Controllerregistern durchzuführen und Configuriere dir danach den PORTC.6 für deine Zwecke (der wird von EUSART Modul auf Output gestellt). Keine Ahnung ob das funkteoniert da noch nie probiert.....
-
Thread
STM32 Beste/Schönste Methode um Bits in Register zu setzen
// Bus freigeben SYSTEM.SCKCR.LONG = (unsigned long) 0x00030100; PORT5.DDR.BIT.B3 = 1; PORTC.DDR.BYTE = 0x3f; PORTC.DR.BIT.B2 = 0; .... PORTC.DR.BIT.B2 = 1; PORTB.DDR.BYTE = 0xff; PORTD.DDR.BYTE = 0xff; IOPORT.PFCR0.BYTE = 0x06; // CS1 + CS2 Da kann man bis auf die
Bit-Ebene (auch Bitfelder) die Peripherie nach > belieben ansprechen. Gähhnnn, hatten wir schon, geht mit Bitbanding.
-
Thread
LANC Implementierung
] == 0x30) PORTC |= (1<<PC5); } return 0; } [/c]
. Aber das verstehe ich nicht. Nach allen guten C Geistern ist doch ein char genau ein Byte!? Was geht denn da schief?
-
Thread
WinAvr - Variable wird nicht von einer *.c in die andere übernommen
steckt der empfangsinterrupt. Das ganze funktioniert auch, das sehe ich an meinen LED's die ich am PortC angeschlossen habe. Wenn das Telegrammendezeichen empfangen wurde wird Portc auf 0x0A gesetzt. Gleichzeitig setze ich uart0_rxd_complete=1;. Jetzt müsste in der main.c die Abfrage if(uart0_rxd_complete
generell keine Variable von der uart.c in die main.c übertragen werden kann. Hab ich überprüft und es geht. Aber wieso dort nicht ? Das Programm ist sehr klein. Die Variable wird 100%ig nirgendswo auf 0 gesetzt. Jetzt hab ich echt kein Plan mehr :(
-
Thread
Programm von mega32 auf mega328P convertieren
tun, gar nichts. Und das Kuriose ist, das ich nur ein paar Ports nicht initialisieren muss und es geht. Welche ist egal Hauptsache ein paar raus.... Mache ich die Klasse rein, geht es, mache ich ein paar Ports und die Klasse raus, geht es. Ich habe versucht an dem LSS File (mit und ohne Klasse)
überhaupt nicht! Nimmt einfach die 4.5er Version! Also: direkten Verweis auf 'avr-gcc-4.7.2' -> jetzt geht's!
-
Thread
AVR: Komischer Fehler nach dem Ein- / und Ausschalten
der Mikrocontroller berechnet die Funktion falsch. Nach einem hin und her aus Aus-/ und Einschalten geht’s dann wieder, wie durch Zauberhand. Hat jemand schonmahl Ähnliche Probleme gehabt? Viele Grüße und schonmahl Danke im Voraus für Anregungen und Tipps Tobias
Funktion funktioniert immer noch. Mittlerweile auch so, dass ich Spannung An- und Aus machen kann und es geht dann auch immer noch