-
Thread
Atxmega RTC Period
geladen, sodass rein theoretisch ja der Overflow-Interrupt jede Sekunde ausgelöst werden sollte. Geht aber nicht! Es dauert länger als 1s. Ich habe mir also das Period-register ausgeben lassen und musste feststellen, dass es nachwievor auf 0xffff steht. Laut der Assemblerausgabe des Compilers wird
-------------------------------- 'the txd pin of uartc0 must be set to output #define txdc0 as portc.3 txdc0.mode = output,high 'configure/enable the standard usart (usartc0) usart.baud = 19200 usart.rxd.enable usart.txd.enable #define LED as porte LED.mode = output,high '------------
-
Thread
ATmega8 geht nicht mehr nach Umstellung auf externen Quarzoszillator
Hallo, der Reset geht auf low, weil ich den Anfang eines Programmiervorgangs aufgenommen habe. Der ISP läuft mit 57.60KHz. Mit 4kHz hab ichs auch schon probiert. Es geht immer noch nichts :-(
>der nicht mehr geht Mit dieser Info kann niemand helfen! WAS GENAU GEHT NICHT MEHR? Fehlermeldungen inkl. Details? Kannst Du auch die Signature nicht lesen?
-
Thread
Multiplex+ICP
==0)) { PORTD=numbers[10]; PORTC |= (1 << PC2);} else { PORTD=numbers[zehner]; PORTC |= (1 << PC2);} break; case 3 : PORTD=numbers[einer]; PORTC
{ PORTD=numbers[10]; PORTC |= (1 << PC2);} else { PORTD=numbers[zehner]; PORTC |= (1 << PC2);} break; case 3 : PORTD=numbers[einer]; PORTC |= (1 <
-
Thread
PORTC geht nicht auf High
Hallo Ich programmiere einen ATmega 16, jedoch bringe ich Pin C5-C2 nicht auf high! Am Controller liegt es nicht, den habe ich schon ausgetauscht! Hier mein C-Code [C] #include <avr/io.h> int main (void) { DDRC = 0xFF; while(1) { PORTC = 0xFF; } return 0; } [/c] Auch wenn ich es so schreibe, bekomme ich die LED's nicht zum leuchten.. [c]#include <avr/io.h> int main (void) { DDRC = 0xFF; while(1) { PORTC |= (1<<PINC5
-
Thread
Programm funktioniert.aber wieso?
//4tes bit invertieren auf 0 PORTA=werth; //Ausgabe an PortA = Highbyte PORTC=wertl; //Ausgabe an PortC = lowbyte // PORTA=counter; // PORTC=0; //********************************************ADWANDLER AUSGELESEN RESULTAT AN PINS DES MIKROK**************
schrieb im Beitrag #3271114: > _delay_ms(0.005); //CONVERTIERUNG max 5 mikro sekunden Das geht?
-
Thread
I2C meldet status 0x38
nicht richtig;) > >0 spricht alle I2C-Teilnehmer an. Du willst aber nur einen. Wenn 0x0C nicht geht versuch 0x06.
Es geht immer noch nicht Hello world... 0x08 0x18 0x28 Byte sent: 1 0x38 Byte sent: 2 bekomme ich per RS232 zurück
-
Thread
Mal wieder Interrupts
Geht es denn, wenn du LED und LED2 vertauscht? Wenn dann die LED an RA4 blinkt und die andere nichts macht, kann man schonmal davon ausgehen, dass die Konfig der Pins richtig ist. Ggf musst du mal gucken, obs geht, wenn der Komparator ausgeschaltet ist, der an RA4 ist. Zudem: Bei einigen PIC16ern (gerade ältere) ist RA4 ein Open-Drain-Output, d.h. man benötigte dort einen Pull-Up-Widerstand. Im Datenblatt
-
Thread
EA eDIP 240 I²C liefert nur letztes Byte
****************************************/ void initLcdImage(unsigned char i2cDestination) { PORTC |= (1 << reset); // preset LCD reset DDRC |= (1 << DDC2); // reset PORTC &= ~(1 << I2CMode); // preset I2C mode DDRC |= (1 << DDC3); // /I2C mode //PCINT7 //Hardware:
Ja, I2CMODE liegt auf GND. Das Ding geht jetzt zurück und wir besorgen eins mit Evaluationskit. Danke für eure Hilfe!
-
Thread
Warum gibt es (fast) keine MC mit eingebauter Sigma-Delta Wandlung
wenn ein Sigma-Delta DAC in Hardware in vielen Fällen eine elegantere Lösung wäre. > Dieser Code geht auch auf einem little endian cpu wie AVR und Cortex M3, > dabe muss aber get[0] anstelle von get[1] verwendet werden. Netter Trick.
=0; if (ctr<brightness) leds|=0x01; if (accu&0x100) leds|=0x02; PORTC=leds; if (ctr==0) brightness+=2; } } ISR( TIMER0_OVF_vect ) { } [/c]
-
Thread
Über einen µC Laufzeit messen und über RS232 ausgeben
diesen Kanal ab. Stop des Kanals berechnet die Differenz zwischen aktueller Uhrzeit und Startzeit. Geht mit beliebig viel Kanälen.
2266 Bytes Wenn es so weiter geht wird es ein 3 Zeiler. :-)
-
Thread
2 ICs 74HCT595 an MEGA8
es sollten doch nur "Nullen" an den Ausgängen von IC2 sein PORTC=~muster;// Kontrolle des auszugebenden Bytes, wird an PORTC richtig angezeigt PORTD &=~ 1<<shiftpd3; // PD3 Shift PORTD &=~ 1<<storepd1; // PD1 Store for(int i=0;i<=7;i++
Ich habe es auch mit der SPI Hardware im Mega 8 gemacht. Geht wunderbar. Hier der Artikel dazu: http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Porterweiterung_f.C3.BCr_Ausg.C3.A4nge Dennis
-
Thread
AVR-gcc Wie IF-Abfrage richtig nachvollziehen
IRMP_DATA irmp_data; /* evaluate an IR remote signal */ void moodlight_remote(void) { /* es geht um genau diese IF-Abfrage, die ich nicht genau verstehe <<<<<<<<<<<<<--<<<<<<<<<---<<<<<<<<---*/ if ( irmp_data.protocol != MY_PROTO || irmp_data.address != MY_REMOTE) { PORTC
-
Thread
LED ein/aus schalten mit Taster
DDRC=0xff; // als ausgang definieren while(1) { if (PINB&(1<<PB0)) PORTC=PORTC &~(1<<PC0); else PORTC=PORTC |(1<<PB0); } } } [/C]
funktionieren nicht. LED_on / LED_off werden ersetzt durch das, was du definiert hast. Also steht da: if(PORTC |= 0xff) bzw. if(PORTC &= 0x00) Das erste ist true, das zweite false. Vergiss das ganz schnell. Das willst du gar nicht wissen. In diesem Fall, wo es um den ganzen Port geht, was natürlich auch
-
Thread
Atmega88 Pin Change Interrupt
>An Portd 0,1,2 Hab ich Leds dran,es geht keine LED an beim drücker der >Tasten. Natürlich geht keine LED an PORTD an. Da ist kein einziger Pin als Ausgang definiert.
Na klasse hab ich vergessen. DDRD = (1<<PD0 ) | (1<<PD1 ) | (1<<PD2 );//als ausgang es geht troztdem beim drücken der taster keine led an
-
Thread
UHR- if-bedingung
>wenn ein PullUP eingeschaltet ist, dann wird diese mit PORTC = (1 << >PC3); wieder abgeschaltet. Nur zum Verständnis: PORTC = ( 1 << PC0); entspricht PORTC = b'0000 0001' dadurch schalte ich mein Pull-up Widerstand ab, also muss ich PORTC = ( 1
steht, ist ein Ausgang, bei einer 0 ist das Bit ein Eingang. Für die Eingangsbits: Wenn du auf PORTC schreibst, bedeutet ein 1-Bit, daß der Pullup eingeschaltet wird und ein 0-Bit, daß der Pullup aus ist. Für die Ausgangsbits: Ein 1-Bit bedeutet, daß der Ausgang auf 1 (also HIGH) geht, ein 0-Bit
-
Thread
Hardware SPI Problem
falsch mache, denn den Code habe ich eingentlich aus dem entsprechenden Datenblatt entnommen. Es geht hierbei um den ATmega44a mit dem ich den CC1100 von TI ansprechen will. Ich habe vorher noch nicht mit Hardware SPI geareitet, daher bin ich erstmal dabei in dem CC1100 in die Register zu schreiben
// Port C2 - SI -> input without pullup // Port C3 - SCLK -> output default low */ PORTC = 0x02; DDRC = 0x0A; /* Port D Initialisierung // Port D0 - powersupply CC1100 -> output default low // Port D7 - LED -> output default low*/ PORTD = 0x00; DDRD = 0x81; }
-
Thread
AVR Bascom und I2C Problem
11,059200MHz läuft. Das hier z.B.: [code] $lib "i2c_twi.lbx" Config Twi = 400000 Config Scl = Portc.5 Config Sda = Portc.4 ... Startmag: I2cstart I2cwbyte Magwrite I2cwbyte &H00 I2cwbyte Takemeas I2cstop Return [/code] dauert Ewigkeiten, als wenn er da auf einen Timeout
Hi, Sensor ist jetzt dran und schon geht's. Ein Slave auf I2C der nicht antwortet klemmt Bascom fest. Ok, oder die fehlenden Pullups, ist mir jetzt aber auch wurscht. Gruß, Norbert
-
Thread
Interessante LCD Ausgabe
framesize = 100 Dim Sc(9) As Byte Dim Temperatur As Integer Dim Celsius As Single Config 1wire = Portc.5 Locate 2 , 8 Lcd Fusing(celsius , "##.##") 1wreset 1wwrite &HCC ' Überspringe Rombefehl Seriennummer weglassen 1wwrite &H44 'messen Waitms 1000 1wreset 1wwrite &HCC 1wwrite &HBE
keine Schande, wenn man den Computer dazu benutzt, dass er einem bei der Fehlersuche hilft. Ja, das geht! Und ehe man ein Gehäuse zuschraubt, macht man sowieso einen Funktionstest. Von daher geht mir das Argument "Ja, aber Gehäuse aufschrauben und neu flashen wäre so viel Arbeit gewesen" am Allerwertesten
-
Thread
Probleme mit PIC und Interrupt
alles rumprobieren nützt irgendwie nichts. Sobald eine Funktion als void interrupt deklariert ist, geht nix mehr. Außer in dem Beispiel Programm, wo ich nicht weiß, ob ich das hier einfach so posten darf.
Es geht... Code Offset auf 400 und fertig. Kann man ja nicht glauben :D Man war das ne schwere Geburt! Nur die LED blinkt viel zu schnell, aber da guck ich mal, wird irgendwo im Programm was sein. Das
-
Thread
rlf Befehl bei PIC16F887 klappt nicht!
Wert manuell ins Register schreibe für den nächsten Schritt klappt es. Also Zeitschleife und alles geht. nur diese blöden rotationsbefehle klappen nicht. Kann mir jemand sagen woran das liegt?
nicht als digitale I/O sonder als analoge Eingänge konfiguriert. Besser ist es da schon PORTB oder PORTC zu verwenden. Dann klappt auch der Übertrag des letzten Bits "RB7" ins Carrybit als Indikator, dass jetzt alle Bits durchgeschoben sind. So kann RB0 erneut gesetzt werden. -Alternativer Code-
-
Thread
Empfange nur Kauderwelsch am UART (Computer)
pullup */ DDRB = ~0x01; PORTB = 0x01; /* PC0-5 as output, all off*/ DDRC = 0xff; PORTC = ~0x00; while(1) { /* PB0 high: transmit once and turn on LED*/ if((PINB & 0x01) == 0 ) { PORTC = ~(1<<PC0); uart_putc('a'); while((PINB & 0x01) == 0) {}
1 as output */ DDRD = 0xff; PORTD = ~0x00; /* set PC0-1 as output*/ DDRC = 0x03; PORTC = ~0x02; while(1) { if((PINB & 0x01) == 0 ) { break; } } PORTC = ~0x01; while(1) { PORTD = 0xff; _delay_ms(1000); PORTD = 0x00; _delay_ms(1000
-
Thread
18B20 auf 7 Segmentanzeige
Zustand Hardware immer noch korrekt entwerfen kannst. So schwer ist ein [C] ISR( ... ) { PORTC = 0; digit=(digit+1)&7; PORTD=segmentabbild[ziffer[digit]]; PORTC=1<<digit; } [/C] dann auch wieder nicht. (Und da hab ich dann auch gleich noch das Ghosting eliminiert, das in deiner Lösung
man und Du auch zum Initialisieren braucht. Plus den Timer einstellen > ISR( ... ) > { > PORTC = 0; > digit=(digit+1)&7; > PORTD=segmentabbild[ziffer[digit]]; > PORTC=1<<digit; > } Main Tastatur abfrage ;hast du ja auch drin ;Und noch Tausend andre Sachen die der µC noch so
-
Thread
MPLAB X und PICkit 3 - Plötzlich "failed to program device"
Ein PIC ist sehr robust und geht nicht so einfach kaputt. Es wird am Kabel bzw. der Verbindung liegen. Ich weiß nicht wie dein Aufbau genau ausschaut, aber hier wird beschrieben auf was zu achten ist: http://www.sprut.de/electronic
CP_OFF & _MCLRE_ON org 0 Start: movlw ~(1<<T0CS) option MOVLW 0h TRIS PORTC CLRF PORTC BSF PORTC,0 GOTO $ END Erzeugt beim Bauen keine Fehler. Ist es eigentlich normal, dass er manchmal "waiting for unfinished Jobs" anzeigt und dann nach Abbruch
-
Thread
I/O Register Namen Atmega324A
mache: [C] #include <avr/io.h> int main(void) { DDRC |= (1<<PC3); while(1) { PORTC ^= (1<<PC3); } } [/C] Aber bei dem 324A, wird vom Compiler(AvrStudio6) das PC3 nicht erkannt. Das DDR Register wird aber angenommen, nur das PORT und PIN register wird nicht aktualisiert.
bekomme die Eigenschafts Registerkarte (ALT+F7) nicht mehr auf. Jedes mal wenn ich dies öffnen will, geht sie sofort wieder zu. Hab das AVR Studio schon in mehreren Versionen neu installiert, der Fehler bleibt.
-
Thread
link time optimization
dio.c: [c] #include <avr/io.h> #include "dio.h" volatile uint8_t *ports[] = { &PORTB, &PORTB, &PORTC, &PORTD}; void write_channel(channel_t channel, boolean value) { uint8_t pin; uint8_t port; pin = channel & 0x07; port = channel >> 3; if (value) *ports[port] |= (1 << pin
main.elf -flto -Os -fwhole-program -mmcu=atmega1284p -DF_CPU=18432000UL dio.c main.c compiliert, dann gehts. ;)
-
Thread
Funktionsaufruf
wait(); PORTC ^= ( 1 << PC7 ); } // Ende ISR // ##################### TIMER0 initialisieren ############################ void init(void) { TIMSK = (1<<TOIE0) ; TCCR0 = (1<<CS01); // Takt/8 DDRC=0xff; PORTC= 0xff; sei(); } // ###################################### main ########################### int main(void) { init(); while(1) { } return 0; } // Ende main //#
-
Thread
Anzeigetafel über lange Leitungen ansteuern
16 Decoder) for(verz=0;verz<laenge;verz++); for (i=0;i<4;i++) { PORTC &= ~(1<<PC4); for(verz=0;verz<laenge;verz++); PORTC |= (1<<PC5); for(verz=0;verz<laenge;verz++); PORTC &= ~(1<<PC5); for(verz=0;verz<laenge;verz
} for (i=4;i>0;i--) //In NO-OP Regi { PORTC &= ~(1<<PC4); for(verz=0;verz<laenge;verz++); PORTC |= (1<<PC5); for(verz=0;verz<laenge;verz++); PORTC &= ~(1<<PC5)
-
Thread
isr timer 0 ov mit atmel studio 6
. also einfach: PORTC |= (1<<PC7); // Testpin an ausgeben GV_NMRA_OV++; // Erhöhe Zeitwert (Overflow) um 1 schreiben.
scheiße es geht danke für eure schnelle hilfe lg doro
-
Thread
Microchip MPLAB X + Compiler installieren
. wenn du zu der gruppe "ich will nur open source und sonst keinerlei einschränkungen", der sdcc geht auch mit MplabX recht gut. mfg Peter
PIC-spezifische Syntax gleich. Man muss lediglich gucken, was machbar ist. Man kann logischerweise nicht auf PORTC zugreifen, wenn der PIC garkeinen PORTC hat. Dann kommt aber auch beim compilern ein Fehler.
-
Thread
Byte Wert suchen und Folgebyte speichern
// Set DDRC as output PORTC = 0x00; // Set PORTC is low sei(); // Enable Global Interrupt while (1) { TransmitState = spi_check_data();
) // Green LED on PORTC = 0x04; TCNT2 = 0; } }[/c]
-
Thread
ATmega88: Ports, PINs und DDR
haben die Port-Register eine >Breite von acht Bit. [...] Der ATmega88 besitzt die Ports PortA, PortB, PortC und >PortD, die man frei programmieren kann. Wenn ich das Datenblatt richtig verstanden habe, gibt es keinen PortA, oder? Und PortC hat auch "nur" 7 Bit? >Jeder einzelne I/O wird über die folgenden
die Port-Register eine >>Breite von acht Bit. [...] Der ATmega88 besitzt die Ports PortA, PortB, PortC und >>PortD, die man frei programmieren kann. > > Wenn ich das Datenblatt richtig verstanden habe, gibt es keinen PortA, Richtig. > oder? Und PortC hat auch "nur" 7 Bit? Er hat schon
-
Thread
AT Mega 88 Interrupt
vect) { ChargeCurrent_Write_Speed(); ChargeVoltage_Write(); InputCurrent_Write(); } geht leider aber immer noch nicht. Muss ich noch was definieren ? Habe ich was übersehen?
Befehl' wieder zurück. > P.S bitte nicht gleich "steinigen" wenn es zu einfach ist ..... Es geht nicht um "einfach". Es geht darum, dass diese Taktik der Problem-Präsentation in homöopathischen Dosen einfach nur nervt. Speziell wenn schon x-mal nach komplettem Code nachgefragt wurde und du dann
-
Thread
USART sendet nur kryptische Zeichen zurück
Eingänge mit internen Pull-Ups ausser PB0 & PB1 setzen DDRB = 0x00; PORTB = 0xFC; //PORTC die ersten 4 Bits auf Ausgänge setzten DDRC = 0x0F; uartInit(); //USART init sei(); //Interrupts erlauben //Hauptschleife while(1) { PORTC |= (1<<PC2);
auch ohne Quarz. Nun mit Interrupts habe ich plötzlich Probleme mit der Taktfrequenz ? Da geht mir der Zusammenhang irgendwo ab. PS: Vielen Dank für die tolle Hilfe ;)
-
Thread
Atmega Pins unterschiede?!
schon mal! LG termi Hier der relevante Code: [c] //define display lines #define ROWS_PORT PORTC #define ROWS_DDR DDRC #define ROW1 PC1 #define ROW2 PC3 #define ROW3 PC5 #define ROW4 PC6 #define ROW5 PC4 #define ROW6 PC2 #define ROW7
soweits geht optimieren, weil die internen 8Mhz waren einfach zu wenig und bei 20 Mhz gehts, wobei vermutlich nochn paar Zeilen Code dazu kommen werden. Die Mosfets und die 47 Ohm haltet ihr für geeignet für
-
Thread
LED mit Encoder ansteuern
gesetzt) + Compare Match Interrupt > Oder Normaler Modus + Overflow Interrupt > Aber beides mischen geht naturgemäss schief. ich denke das ich jetzt verstanden habe worauf du angesprochen hast. Ich geh das jetzt nochmal durch.
Der Ausgang PD0 geht bei mir gleich nach dem Einschalten auf HI, so als wenn der Taster gleich gedrückt ist. Auch mit get_key_long(TASTER1). Das liegt aber nicht am Taster selbst, denn auch wenn dieser nicht angeschlossen
-
Thread
manchmal abruptes Ein + ausschalten der LED
/------------------------------------------------------------------------ void init() //PORTC 0,1 und D2 Reserve Ein u Ausgänge { // Ports initialisieren DDRB |= _BV(1); // PORTB1 auf Ausgang (ausgabe der pwm für faden der lichter DDRC |= 0xff; //PORTC auf Ausgänge f LEDs
PORTB1 synchronisieren PORTC|=(1<<PC5); PORTC|=(1<<PC4); PORTC|=(1<<PC3); PORTC|=(1<<PC2);} else{ PORTC &=~(1<<PC5); PORTC &=~(1<<PC4); PORTC &=~(1<<PC3); PORTC &=~(1<<PC2);} } // Mainloop-Ende } //--
-
Thread
Bit in Byte mit Schleife schieben.
16 mal "i"erhöht werden, also i= 16 i= 32 i= 48 [c] void Eingaenge_abfragen () { PORTC |= (1<<PC4); // Mit PL alle Eingänge in das Register schieben. // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<
StatusEingangKarte[1] so aussieht: "0000 0000 0000 1000" [c] void Eingaenge_abfragen () { PORTC |= (1<<PC4); // Mit PL alle Eingänge in das Register schieben. // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<
-
Thread
Interrupt Atxmega 32 A4U
funktionieren. Im Prinzip habe ich einen gravierenden Fehler entdeckt. Falsch, hier wird nicht PIN 6 von PORTC konfiguriert: PORTC_PIN1CTRL, temp ;PORTC PIN6 Pull-Up und Interrupt bei fallender Flanke Hier wird ganz klar bei PIN1 und damit PORTC PIN1 der Pullup und Interrupt bei fallender Flanke gesetzt
PORTC_INTCTRL, temp ;Interrupt Level (low) ldi temp, 0b01000000 sts PORTC_INT0MASK, temp ;PORTC PIN6 auf INT0 sei ldi temp, 0b00000111 sts PMIC_CTRL, temp ldi
-
Thread
Atmega 8 will nicht
Hi >Frage: >Warum geht aber die verdammte Led nicht an? >Portc.0 = 1 Wie ist denn die Led angeschlossen? MfG Spess
$regfile = "m8def.dat" $crystal = 1000000 Config Portc.0 = Output do Portc.0 = 1 wait 1 Portc.0=0 wait 1 loop End LED nur mit Vorwiderstand verwenden! LED vorher prüfen. LED an + und über einen Widerstand an - Wenn das geht
-
Thread
400er LED-Schriftzug Schaltplan
Geht Klar wurde gemacht. Weitere Änderungen?
of cascaded TLC5947 chips #define TLC5947_N 2 //XLAT - PB2 SS #define SET_RGB_XLAT_HIGH {PORTC |= (1 << PC5);} #define SET_RGB_XLAT_LOW {PORTC &= ~(1 << PC5);} //BLANK - PB1 #define SET_RGB_BLANK_HIGH {PORTC |= (1 << PC1);} #define SET_RGB_BLANK_LOW {PORTC &= ~(1 << PC1);} #if (36
-
Thread
ASM Codeproblem
. LCD_Clear: cbi PORTC, 7 ldi XL, 0x00 ldi XH, 0x80 ;externes RAM ab 0x8000, mit AC7 low beginnt Speicher damit bei 0 clr temp ldi temp1, 0x00 ;Ende ATMega Speicher (0xFFFF) wenn XH = 0xFF + 1 rcall LCD_Clear_loop sbi PORTC, 7 ldi XL, 0x00 ldi XH, 0x80 rcall LCD_Clear_loop cbi PORTC, 7 sbi PORTD, AB16 ;Adreßbit an ldi XL, 0x00 ldi XH, 0x80 ldi
-
Thread
Probleme bei I2C Kommunikation
0b10010001 //TWI Defines: TWI an Port C angeschlossen #define TWI_DDR DDRC #define TWI_PORT PORTC #define SCL PC0 #define SDA PC1 //TWI Defines: TWI an Port B angeschlossen #define Temp_DDR DDRB #define Temp_PORT PORTB #define EnTemp PB0 int main(void) { //Ports
TWSR & 0xf8) lauten, denn da sind noch Bits die dir das Ergebnis verhauen können vielleicht gehts dann
-
Thread
74HCT165 Eingänge gehen nicht
EPL_Anzahl 1 // Anzahl der Eingangsplatinen void Eingaenge_abfragen () { PORTC |= (1<<PC4); // Mit PL alle Eingänge in das Register schieben. // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<
bitte sagen wie ich das am schönsten machen kann? [c] void Eingaenge_abfragen () { PORTC |= (1<<PC4); // Mit PL alle Eingänge in das Register schieben. // PL auf High PORTC |= (1<<PC5); // PL auf Low PORTC &= ~(1<<PC5); // PL auf High PORTC |= (1<
-
Thread
LED Matrix und 4 Gewinnt
lassen. Weil ich denke, dass du den Kardinalfehler Nummer 1 machst, wenn es um eine LED-Matrix geht. Du zerbrichst dir den Kopf darüber, wie du ein deinem Programm, meinetwegen in der Hauptschleife, welche Ausgabepins wie einstellen musst, damit genau diese eine LED leuchten kann. Diese Fragestellung
unterste Zeile in der mittleren Spalte Rot leuchten lassen will und die darüber liegende LED Grün, dann geht das nicht mit dem nach Rocks hier geposteten Schaltplan. Dann leuchtet entweder immer eine Spalte Rot oder Grün. Oder mach ich da noch etwas falsch?
-
Thread
If-Schleife übersprungen
Wenn ich die Blöcke tausche, gehts auch nicht. Es muss irgend etwas Prinzipielles sein.
K. S. schrieb im Beitrag #3208417: > Wenn ich die Blöcke tausche, gehts auch nicht. > Es muss irgend etwas Prinzipielles sein. was geht da nicht, wird der 1. Block wieder übersprungen oder diesemal der 2.?
-
Thread
Skurriles Problem mit BS170 Mosfets
* Serial protocol for 74HC595 shift register */ #define DDR_SER DDRC #define PORT_SER PORTC #define PIN_SER PINC #define SER PC0 #define DDR_SCK DDRC #define PORT_SCK PORTC #define PIN_SCK PINC #define SCK PC1 #define DDR_SCL DDRC #define PORT_SCL PORTC
brueckst und die LED ist immer noch an: -> BS170 defekt. Das habe ich gerade gemacht und tatsächlich geht das bei demjenigen, dessen LED am hellsten leuchtet, nicht, dass die LED ausgeht. Bei einem der Ok ist (Segment geschaltet) geht die LED aus. Bei einem desssen LED ohne Pegel ein wenig leuchtet geht
-
Thread
T6963c Ansteuerungsproblem
Logo dort abbilden, sprich im Progmem hinterlegen und dann aufrufen (externes EEProm oder SD-Karte geht leider nicht, da ich alle Pins brauche).
dort >>abbilden, sprich im Progmem hinterlegen und dann aufrufen (externes >>EEProm oder SD-Karte geht leider nicht, da ich alle Pins brauche). > > Mmh, da brauchst du wohl ein Programm was dir aus Bitmaps > ein C-Array macht. Ist auf der Seite von dem Typen keins? Hi, dein Code geht leider
-
Thread
Pointer in Struct-Arrays Werd Wahnsinnig!
identisch ist zum Ausdruck [C] *(2 + a) [/C] Du wirst jetzt sagen: no - na. Aber die Sache geht weiter. Denn daraus und aus der Tatsache, dass [] Operationen sofort in Pointer Arithmetik umgewandelt werden muss, folgt auch, dass in C [C] a[2] [/C] und [C] 2[a] [/C] in allen Belangen
{ char *p; p = x; PORTA = p[0]; // 1 p = &x; PORTB = p[0]; // 2 p = y; PORTC = p[0]; // 3 p = &y; PORTD = p[0]; // 4 for(;;); } [/c] Ausdruck 1, 2, 3 haben das gleiche Ergebnis, nur Ausdruck 4 nicht. x ist ein Array, d.h. die Konstante: Adresse des 'H'.