-
Thread
C-Code für Fahrtregler anpassen
PINB6 = 6 ; Port B Input Pins bit 6 .equ PINB7 = 7 ; Port B Input Pins bit 7 ; ***** PORTC ************************ ; PORTC - Port C Data Register .equ PORTC0 = 0 ; Port C Data Register bit 0 .equ PC0 = 0 ; For compatibility .equ PORTC1 = 1 ; Port C Data Register bit 1 .equ PC1 = 1 ; For compatibility .equ PORTC2 = 2 ; Port C Data Register bit 2 .equ PC2 = 2 ; For compatibility .equ PORTC3 = 3 ; Port C Data Register bit 3 .equ PC3 = 3 ; For compatibility .equ PORTC4 = 4 ; Port C Data Register
-
Thread
PIC16F630 Schleife für Delay einer LED
Reset-Vektor für Prozessor ;****Ports definieren**** bcf STATUS,RP0 ;Bank 0 clrf PORTC ;Init PORTC bsf STATUS,RP0 ;Wechsel zu Bank 1 movlw 0x00 ;Alle Ports als Ausgang movwf TRISC bcf STATUS,RP0 ;Wechsel zu Bank 0 movlw 0x01 ;LED
Speicherstelle Label1 ;****Ports definieren**** bcf STATUS,RP0 ;Bank 0 clrf PORTC ;Init PORTC bsf STATUS,RP0 ;Wechsel zu Bank 1 movlw 0x00 ;Alle Ports als Ausgang movwf TRISC bcf STATUS,RP0 ;Wechsel zu Bank 0 movlw 0x01
-
Thread
Registernamen/Variablennamen erstellen
Ist Dir klar was [c] #define PORTC _SFR_IO8(0x15) [/c] bedeutet?
Ahem schrieb: >Ist Dir klar was > >#define PORTC _SFR_IO8(0x15) > >bedeutet? Nein, leider nicht. Was bedeutet eigentlich SFR? Johann L. schrieb: > Vielleicht erklärst du mal, was du machen willst, also wozu du das > brauchst. > >
-
Thread
ATMega16 kein Strom an PORTC (JTAG deaktiviert)
Hallo, in der Übeschrift steht schon alles wichtige. Ich bekomme an meinem PORTC keinen Strom obwohl JTAG deaktiviert ist. (Fusebits L: 0xE4 H: 0xD9) Jemand eine Idee woran das liegen kann ?
-
Thread
Mega8 PortC trennen ?
Moin, ich möchte für ein Projekt den Port C vom M8 trennen. Also PinC.0 als ADC-Eingang, und den rest als Taster eingänge. Ist das möglich, oder sind dann alle als ADC/Digital eingänge ?
-
Thread
timer interrupt atmega128a
TIFR |= (1<<OCF0); OCR0 = 56; sei(); while(1) {} return 0; } ISR(TIMER0_COMP_vect) { PORTC ^= ~(1<<PC1); } [/c]
> PORTC ^= ~(1<<PC1); Toggle? => ohne "~" ? Wenn's ein neuer AVR ist, dann besser: PINC = (1 << PC1)
-
Thread
ADC zieht 80mA
den ADC Eingang. Es verhalten sich alle Eingänge auf PORTC gleich und auch bei einem aderen Atmega8 habe ich gleiches Verhalten. Ist das normal? Laut DB sollte es doch deutlich weniger sein oder? Außerdem schwankt der ADC Wert um gut +-10! Danke für eure
Sicher, dass Portc = DAC ist?? warm machst du: PORTC=0x00; DDRC=0x00;?? DDRC=0x00; ist doch gleich als Eingang.. aber dass der 8ßmA Zieht kann ich mir nicht vorstellen, die eingaennge sind im allgemienem bei CMOS
-
Thread
LCD Befehl zu langsam in BASCOM
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 Cursor Off Tasterauf Alias Portc.2 Portc.2 = 1 Tasterunter Alias Portc.1 Portc.1 = 1 Txd_enable Alias Ucsrb.txen Txd_pullup Alias Portd.1 Rxd_enable Alias Ucsrb.rxen Rxd_pullup Alias Portd.0 Dim Rs232byte As Byte Dim R
1 , 1); If Z = 16 Then Z = 0 End If Return _init_micro: Config Portd = &B11111100 Config Portc = &B00000000 Set Rxd_pullup Reset Txd_pullup Return [/pre]
-
Thread
XMega 192A3U / Frage zu Counter Type 2
für den Compare-Output nicht auf dem OUT Portpin (C0) aus. Hier mal der Testcode: [c] PORTC.DIR = 0xff; PORTC.PIN0CTRL = PORT_INVEN_bm; // Invert output // Init timer stuff TCC2.CTRLE = TC_BYTEM_SPLITMODE_gc; TCC2.CTRLB = TC2_LCMPAEN_bm; TCC2.CTRLC = 0
der Hardware funktioniert es nicht. Ich kann den Port ganz normal als Ausgang verwenden und mit PORTC.OUT beliebige Werte auch für den Pin ausgeben, der eigentlich für den LCMPA sein sollte. Also wird irgendwie die alternative Funktion nicht auf den Port geschaltet. Grüße Markus
-
Thread
Einzelne Bits vom Wert eines Array-Elem. auf Port-Pins ?
mir mttlerweile gelungen auf jeder Spalte immer nur die richtigen LEDS zu schalten: [c] PORTC |= _BV(PC3); // zuerst alle PORTs PORTC |= _BV(PC4); // für Zeilen PORTD = 0b11111100; // auf "1", d.h. "AUS" if (Array_ & 0b00000001) PORTD &= ~_BV(
) PORTD &= ~_BV(PD3); if (Array_ & 0b00100000) PORTD &= ~_BV(PD4); if (Array_ & 0b01000000) PORTC &= ~_BV(PC3); if (Array_ & 0b10000000) PORTC &= ~_BV(PC4); [/c] Bei jeder Spalte schaltet dieser Code verschiede Leds und schon nach den ersten 6 Spalten erscheint das erste Zeichen des Textes
-
Thread
Timer sek zähler
main: cpi temp5,5 ; 5 Sekunden breq led_stat rjmp main led_stat: sbis PINC,0 sbi PORTC,0 sbic PINC,0 cbi PORTC,0 ldi temp5,0 ; Wieder auf 0 und von vorne... rjmp main [/c] Momentan lasse ich damit noch ein LED blinken, damit ich mit dem Oszi den Zeitabstand messen
*** main: cpi temp5,5 breq led_stat rjmp main led_stat: sbis PINC,0 sbi PORTC,0 sbic PINC,0 cbi PORTC,0 ldi temp5,0 rjmp main [/c]
-
Thread
Selbsgebauter Controller für Qualcom Quickcharge 2.0
lautet wie folgt: [c] #include <avr/io.h> int main() { DDRC = 0xFF; //Alle Pins von PortC als Ausgang PORTC = 0b00010000; //LED anschalten PORTC = 0b00010001; _delay_ms(2000); PORTC = 0b00010011; _delay_ms(100); PORTC = 0b00010001; _delay_ms(200); PORTC = 0b00010101; PORTC = 0b00011101; while (1) { ; } } [/c] Hier gibts weitere Infos über Quickcharge http://www.hackvlog.com/2016/12/bitbanging-quick-charge
-
Thread
Verständnissfrage bei ADC
_t ReadChannel(uint8_t mux); int main(void) { DDRC = 0b11111111; // Ausgänge am PORTC PORTC = 0b11111111; // LEDs Aus uint16_t adcval; adcval = ReadChannel(1); /* MUX-Bits auf 0b0001 -> Channel 1 */ if (adcval > 0) { PORTC= 0b00000000
eingestellt. > > Leider funtioniert es immer noch nicht, es leuchtet warum auch immer die > 2 LED (PORTC1), aber sonst pasiert nichts. Nimm einen anderen Port. Auf PORTC liegen Sonderfunktionen, die Defaultmaessig aktiviert sind. Die kann man mit einer Fuse (JTAGEN) abschalten aber dazu musst du
-
Thread
ATMEGA8, RN-MiniControl, Lauflicht per CTRL-Stecker
(70); PORTC = numbers[i]; delay_ms(70);*/ } return 0; } [/c] Nur müsste jetzt in die while-Schleife eine ähnliche Form wie die hier kommen: [c]PORTB ^= (1<<PB0) | (1<<PB5);[/c]
& 0x04, PORTB, PB0 ); SWITCH_LED( Licht & 0x08, PORTB, PB5 ); SWITCH_LED( Licht & 0x10, PORTC, PC3 ); SWITCH_LED( Licht & 0x20, PORTB, PB3 ); SWITCH_LED( Licht & 0x40, PORTD, PD3 ); SWITCH_LED( Licht & 0x80, PORTC, PC2 ); delay_ms(70); } return 0; } [/C]
-
Thread
[ATmega32] Verlassen der Schleife verlässt alle Schleifen
++; } x++; // wird beim verlassen der 2. while() 1x ausgeführt und verlässt dann while() } PORTC = 0x00; // wird genauso 1x ausgeführt und verlässt die for() } [/c]
wird beim verlassen der 2. while() // 1x ausgeführt und verlässt dann while() } PORTC = 0x00; // wird genauso 1x ausgeführt und verlässt die for() } [/c]
-
Thread
Werden die AVR Mikrocontroller nach der Herstellung garnicht überprüft?
void initIO_Ports(void) { DDRA = 0; PORTA = 0; DDRB = 0; PORTB = 0; DDRC = 0; PORTC = 0; DDRD = 0; PORTD = 0; } void long_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } int main(void) { uint8_t Port_blinken = 0; initIO_Ports(); for (;;
== 0) { Port_blinken = 1; PORTA = 0xFF; PORTB = 0xFF; PORTC = 0xFF; PORTD = 0xFF; } else { Port_blinken = 0; PORTA = 0; PORTB = 0; PORTC = 0; PORTD = 0; } long_delay(500); }
-
Thread
Negative Spannung am Ausgang des Atmega8
Hi, hab mal ne Frage zum Atmega8. Ich habe an den AD-Wandler ein 3x4 Matrix Tastatur (PORTC0) angeschlossen(bei jeder Taste wir ein anderer Spgwert eingestellt) so habe jetzt mal zu Versuchszwecken nur eine LED (PORTC1) angeschlossen die bei Taste 0 angehen soll. Ich habe mir den Verlauf
genommen auch für das Oszi)? Das Oszi war auf DC gestellt. Noch zur Schaltung für denn AD-Wandler (PORTC0) sihe Anhang. Ja und der Ausgang ist in diesem Fall PortC1 und 2 diese bestehen nur aus nem 1,2k Widerstand und einer LED. Mir wurde noch gesagt das eventuell die Vcc zusammenbricht aber deshalb dürfte
-
Thread
AVR Multiplexing 7 Segment-Anzeigen
Florian D. schrieb im Beitrag #4617937: > Ist es so trotzdem (aufgeteilt auf PORTC und PORTD) relativ gut machbar Ja. Man kann die Bits einzeln setzen, siehe Arduino digitalWrite http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1
Florian D. schrieb im Beitrag #4617937: > Ist es so trotzdem (aufgeteilt auf PORTC und > PORTD) relativ gut machbar, Es ist gut machbar. Lege die Ansteuerung der beiden Segmente von PD0+PD1 auf PC0+PC1. Die Digits werden dann mit PC2 - PC5 angesteuert.
-
Thread
JTAG deaktivieren ATMega16
du denn dann wissen, daß du an PortC "keinen Strom bekommst"? Irgendwas stimmt in deinen Angaben nicht! Vielleicht versuchst du dich mal darin, die Sache etwas systematischer anzugehen und für uns auch nachvollziehbar darzustellen?
JTAG deaktiviere, denn mir wurde in einem anderem Thread hir gesagt das es am JTAG liegt das auf PORTC nichts rauskommt. Und überprüft habe ich es indem ich es gemessen habe und ich habe auch LEDs am ausgang hängen , am PORTA läuft alles 1A.
-
Thread
Frequenzmessung mit Timer0 ohne ICP
lcd.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #asm .equ __lcd_port=0x15 ;PORTC #endasm unsigned char buffer[16]; float Frequenz; unsigned int Zeit=0, i=0,Messzeit,takt=62500,Ueberlaeufe=0; void Ausgabe () { lcd_gotoxy(0,0); ftoa(Frequenz,3,buffer
//LEDs an PB2, PD0 und PC5 ein- oder aus-schalten if(n==0) {PORTB &= ~(1<<2); PORTD &= ~(1<<0); PORTC &= ~(1<<5);} else {PORTB |= (1<<2); PORTD |= (1<<0); PORTC |= (1<<2);} } //dann so verwenden: alle_LEDS_setzen(1); //alle LEDs ein alle_LEDS_setzen(0); //alle LEDs aus [/c] > Das
-
Thread
Display mit Touchscreen bei Pollin?
> PortC 2..5 liefern keinen Strom. Ein alter Hut: JTAG Enable in den Fuses ausschalten. Thomas
Hallo Armin, bei deinem ATmega32 könnte es nicht zufällig ein Problem mit der JTAG Fuse und PortC sein ? Gruß Dirk
-
Thread
AVR Atmega8 / Atmega32 - BAS Signal
< 17) { PORTC = 0b00000000; } if(n == 621|622|623|624|625 && TCNT1 > 16 && TCNT1 < 257) { PORTC = 0b00000001; n ++; if(TCNT1 == 256) { TCNT1 = 0; }
{ PORTC = 0b00000001; //schwarz } } if(n > 10 && n <= 620 && TCNT1 > 496 && TCNT1 < 513) //hintere Schwarzschulter { PORTC = 0b00000001; n ++;
-
Thread
ADC Wandlung funktoniert nicht wenn verschiedene Analogeingänge benutzt werden (AVR)
Wandlung nicht übernommen. */ (void) ADCW; while(1) { //Phase ausgeben PORTC = 0x00; PORTC = getADCmax(3); _delay_ms(7); PORTB = 0x08; for(i = 0; i < 200; i++) _delay_ms(1); //Strom ausgeben PORTC = 0x00; PORTC = getADCmax(2);
PORTB = 0x04; for(i = 0; i < 200; i++) _delay_ms(1); //Spannung Ausgeben PORTC = 0x00; PORTC = getADCmax(1); _delay_ms(7); PORTB = 0x00; for(i = 0; i < 200; i++) _delay_ms(1); } } [/c] Kann mir da jemand weiterhelfen? Grüße
-
Thread
problem mit #define
Wenn es nur darum geht, dass Du in Deinen Code NULL schreibst und daraus die beiden Anweisungen PORTC = 0b00000001 und PORTB = 0b00000001 werden sollen, kannst Du das so machen: [c] #define NULL \ PORTC = 0b00000001; \ PORTB = 0b00000001; [/c]
dann muss deine Textersetzung daher diese Gestalt haben [c] #define SWITCH_ERROR_LED(x) if(x) PORTC |= (1<<PC1); else PORTC &= ~(1<<PC1); [/C]
-
Thread
Register, RAM und Addressraum
Register stehen. Ein Auszug aus einer solchen Datei: [pre] #define PORTB _SFR_IO8(0x05) #define PORTC _SFR_IO8(0x08) #define PORTD _SFR_IO8(0x0B) [/pre] Im Programm-Quelltext benutzt man (in diesem Fall) die Namen PORTB, PORTC und PORTD. Der Compiler erzeugt daraus Maschinencode, welcher die Adressen
Register stehen. Ein Auszug aus einer solchen Datei: [pre] #define PORTB _SFR_IO8(0x05) #define PORTC _SFR_IO8(0x08) #define PORTD _SFR_IO8(0x0B) [/pre] Im Programm-Quelltext benutzt man (in diesem Fall) die Namen PORTB, PORTC und PORTD. Der Compiler erzeugt daraus Maschinencode, welcher die Adressen
-
Thread
Wie macht man solche Lichtmodes? Lauflicht, PWM und Co
ein Board mit einem ATMega128A. Der ATMega erzeugt 32 PWM Kanäle. Der komplette PortA, PortB, PortC und PortE laufen als PWM. Ich habe dazu den Software PWM Code hier aus dem AVR-GCC Tutorial von 8 auf 32 CH geändert. Dieser läuft mit Timer1. Nachdem alle 32 PWMs funktionierten habe ich
PB4); PWM_PORTB &= ~(1<<PB5); PWM_PORTB &= ~(1<<PB6); PWM_PORTB &= ~(1<<PB7); PWM_PORTC &= ~(1<<PC0); PWM_PORTC &= ~(1<<PC1); PWM_PORTC &= ~(1<<PC2); PWM_PORTC &= ~(1<<PC3); PWM_PORTC &= ~(1<<PC4); PWM_PORTC &= ~(1<<PC5); PWM_PORTC &= ~(1<<PC6); PWM_PORTC &= ~(1<<
-
Thread
Probleme mit rjmp beim AVR Atmega 8L
), bis die drei > Zeilen wieder darunter kommen, schon geht die Leuchtdiode (dies mal halt > an PORTC)wieder an :-( ldi r17,0b00000100 mov r16,r17 out PORTC,r17 warum kopierst du r17 nach r16, wenn du dann doch r17 ausgibst? (Außerdem müssten so an Port C alle LEDs leuchten bis
bis die drei >> Zeilen wieder darunter kommen, schon geht die Leuchtdiode (dies mal halt >> an PORTC)wieder an :-( > > > ldi r17,0b00000100 > mov r16,r17 > out PORTC,r17 > > > warum kopierst du r17 nach r16, wenn du dann doch r17 ausgibst? > (Außerdem müssten so an Port C alle
-
Thread
PNP Transistor schaltet nicht
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Lcdbus = 4 Cursor Off Ddrb = &B00100000 Cls Locate 1 , 1 Lcd "Hallo Welt" Do Portb.5 = 1 Loop
-
Thread
Schnittstelle USB->RS232 und C++
Output Blue_3 = 0 Green_3 Alias Portb.7 Config Green_3 = Output Green_3 = 0 Red_3 Alias Portc.3 Config Red_3 = Output Red_3 = 0 Blue_4 Alias Portc.2 Config Blue_4 = Output Blue_4 = 0 Green_4 Alias Portc.1 Config Green_4 = Output Green_4 = 0 Red_4 Alias Portc.0 Config Red_4 =
Do Incr Pwm_counter If Pwm_counter = 255 Then Pwm_counter = 0 Portb = 0 Portc = 0 '' Gosub Neuerwert End If If Blue1 <= Pwm_counter Then Blue_1 = 1 End If If Blue2 <= Pwm_counter Then Blue_2 = 1
-
Thread
Pin auf high setzen MKL26
pointer */ #define PORTB ((PORT_Type *)PORTB_BASE) /** Peripheral PORTC base address */ #define PORTC_BASE (0x4004B000u) /** Peripheral PORTC base pointer */ #define PORTC ((PORT_Type *)PORTC_BASE) /*
eingeschaltet? Wenn nein dann mach das: [c] // PORT C einschalten SIM->SCGC5 |= SIM_SCGC5_PORTC_MASK; // Pin PTC01 auf Alternative 1 (GPIO) PORTC->PCR[1] = PORT_PCR_MUX(1); PTC->PDDR |= (1 << 1); //Pin PTC01 auf Ausgang PTC->PDOR |= (1 << 1); //Pin PTC01 auf High
-
Thread
AVR NET IO + 433Mhz Sender Signallängen stimmen nicht
for (i=0; i<25 ; i++) { lcd_print(1,i,0, "%i", send_code[i]); if ('1'==send_code[i]) { PORTC |= (1<< PC6); //ein _delay_us(545); PORTC &= ~(1<< PC6); //aus _delay_us(182); } if ('0'==send_code[i]) { PORTC |= (1<< PC6); //ein _delay_us(182); PORTC &= ~(1<< PC6); //aus _delay_us(545); } if ('2'==send_code[i]) { PORTC |= (1<< PC6); //ein _delay_us(182); PORTC &= ~(1<< PC6); //aus _delay_us(5215); } } } PORTC &= ~(1<< PC6); //aus lcd_print(1,0,1, "Code gesendet."); _delay_ms(5000); lcd_clear
-
Thread
AT90s4433 - Uhrzeit mit BASCOM
supported wäre. $regfile = "4433def.dat" $crystal = 4000000 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Config Lcd = 16 * 2 'configure lcd screen Config 1wire = Portd.7
-
Thread
Port Konfigration zur Laufzeit festlegen
OUT_PORTB) { DDRB|=pinval; PORTB&=~pinval; // port low } else if (port==OUT_PORTC) { DDRC|=pinval; PORTC&=~pinval; // port low } else if (port==OUT_PORTD) { DDRD|=pinval; PORTD&=~pinval; // port low } } } [/c] und setOutputChannel
) { if ( val ) PORTB |= pinval; else PORTB &= ~pinval; } else if ( port == OUT_PORTC ) { if ( val ) PORTC |= pinval; else PORTC &= ~pinval; } else if ( port == OUT_PORTD ) { if ( val ) PORTD |= pinval; else PORTD &= ~pinval; } } [/c] Ich verdrehe
-
Thread
UART gibt zu viele Zeichen aus
UBRR_VAL ((F_CPU/(BAUD*16))-1) uint8_t spalten[16][5]; uint8_t bytecount; void schieb () { PORTC|=(1<<PC2); PORTC&=~(1<<PC2); return; } void setdata () { PORTC|=(1<<PC1); PORTC&=~(1<<PC1); return; } void clrreg() { PORTC = 0x00; uint8_t i; for (i=1; i <= 56;
-
Thread
Wie Ports am Besten zusammenfassen?
= PC1 .equ LED_LAYER2 = PC2 .equ LED_LAYER3 = PC3 .equ LED_LAYER_DDR = PORTC .def temp1 = r16 main: ldi temp1, 1 << LED1 | 1 << LED2 | 1 << LED3 | 1 << LED4 | \ 1 << LED5 | 1 << LED6 | 1 << LED7 | 1 << LED8 out LED_DDR1, temp1 in temp1,
avrasm] Aktuell habe ich halt das Problem, dass ich wissen muss, dass LED9 an Port LED_PORT2 (=PORTC) hängt. Damit kann ich mir das "Herausziehen" des Portnamens aber auch sparen. Oder mache ich hier irgendwas systematisch falsch? Mit freundlichen Grüßen,
-
Thread
PIN bei Atmega128 abfragen
Hallo, ich möchte bei einem Atmega128 den Zustand der PINS am PORTC anfragen. Ich setze diese als Eingang mit einem PULL UP und möchte einen von extern anliegenden LOW Pegel detektieren. Habe also folgende Konfiguration: PORTC = 0xFF; //High setzen DDRC =
wunderbar. Vielen dank für die Tips und sehr schnelle Reaktion !! PS. Tatsächlich funktioniert es beim PORTC mit PIN0 nicht, aber andere PINS des C Ports funktionieren.
-
Thread
Anfängerproblem mit PullUp Widerstand
schaltet also die internen Pullups ein ; möglicherweise Schreibfehler sinnvoller z.B. out PORTC,r16 ; alle Pins an Port C HIGH ldi r16, 0x00 out DDRD, r16 ; 0x00 Port D auf Eingang sbi PINC,2 ; ??? Sinnvoll könnte sein sbi PORTC,2 ; um Ausgang PC2 HIGH zu setzen
nächsten ; Befehl überspringen rjmp main cbi PINC,2 ; ??? Sinnvoll könnte sein cbi PORTC,2 ; um Ausgang PC2 LOW zu setzen rjmp main ; Alternative: main: sbis PIND,2 ; PD2 abfragen, wenn HIGH, dann cbi PORTC,2 ; diese Zeile überspringen rjmp main
-
Thread
Atmega 1284 Pin-Change Interrupt, funktioniert nicht
--> Ausgang PORTA |= 0x00; //All Outputs PORTB |= 0x00; //All outputs/undefined PORTC |= 0xff; //SW 0..5 with Pull-Up PORTD |= 0x40; //SW 6 with Pull-Up SW_Init(); //Initialize Taster sei(); //Global IRQ-Enable //SW_Init(); //Initialize Taster }
--> Ausgang PORTA |= 0x00; //All Outputs PORTB |= 0x00; //All outputs/undefined PORTC |= 0xff; //SW 0..5 with Pull-Up // c-->f PORTD |= 0x40; //SW 6 with Pull-Up SW_Init(); //Initialize Taster sei(); //Global IRQ-Enable } void SW_Init() { PCICR = 0x0c
-
Thread
Nokia 3310 Display an ATMega48 tut nichts
F_CPU korrekt?, Code Optimierung ein?) Dies sieht mir out-of-sequence aus: > int main(void) { > PORTC &= ~(1<<PC0); //Reset (active LOW) > PORTC |= (1<<PC0); //Reset (active LOW) -status beenden (high setzen) > PORTC |= (1<<PC2); //Display SPI Interface einschalten > DDRC = 0x0F; //PC0, PC1,
Stefan B. schrieb im Beitrag #1743281: > Dies sieht mir out-of-sequence aus: >> int main(void) { >> PORTC &= ~(1<<PC0); //Reset (active LOW) >> PORTC |= (1<<PC0); //Reset (active LOW) -status beenden (high setzen) >> PORTC |= (1<<PC2); //Display SPI Interface einschalten >> DDRC = 0x0F; //PC0, PC1
-
Thread
Programm Problem ATmega32
iom32.h> #define SYSCLK 3686400 #define Preclk 3600 #define LEDS_DDR DDRC #define LEDS_PORT PORTC int i=0; void delay_ms(unsigned int ms); signal (SIG_OUTPUT_COMPARE0 ) { PORTC=~PORTC; delay_ms(10); } void delay_ms(unsigned int ms) { unsigned int zaehler; while
{ /*if(TCNT0==0xEF) { if(PINC==0x10) { PORTC=0x08; delay_ms(100); } else { PORTC=0x10; delay_ms(100);} } */ } }
-
Thread
Wie unterbreche ich ein Programm ?
.1 = Input Portd.1 = 1 Taster1 Alias Pind.1 Config Lcdpin = Pin , Db7 = Portb.5 , Db6 = Portc.1 , Db5 = Portc.2 , _ Db4 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Lcd = 16 * 2 Cls Cursor Off Do Pause = 2 Speed = 1 If Taster1 = 0 Then Do Incr G Waitms Speed
-
Thread
SRAM auslesen aund ausgeben [AtMega64]
Wert aus dem Ram an adresse Z (r30, r31) in einem Register speichern out $3, r2 ; Ausgabe an PORTC inc Z ; Z incrementieren lds r2, Z ; Wert aus dem Ram an adresse Z in einem Register speichern out $15, r2 ; Ausgabe an PORTE [/avrasm]
Übertrag kann es hier ja nicht geben und Addition von 0 zu ZL ändert ja nichts ld temp,Z+ out PORTC,temp ld temp,Z out PORTE,temp [/avrasm] Gruß aus Berlin
-
Thread
ASM Codeproblem
gesetzt, sind auch die oberen Bereiche bis 80 KByte (81920 Byte) zu adressieren. 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
Senderenschalten vor der Sendung per Uart
nach den Senden, mit einem 3ten Portpin. Wie geht den das? Zur zeit mache ich noch: [code] PORTC |= (1 << PC4); delay_ms (1); sendecode(werte); delay_ms(1); PORTC &= ~(1 << PC4); [/code] Gruß Paul
Paul J. schrieb im Beitrag #5489069: > Zur zeit mache ich noch: > PORTC |= (1 << PC4); > delay_ms (1); > sendecode(werte); > delay_ms(1); > PORTC &= ~(1 << PC4); Wenn es funktionert, warum nicht. Wir kennen Deinen Sender nicht, wissen also nicht, welche Vorlauf
-
Thread
Problem beim Vergleich von ADwandlerwerte zwischen Master und Slave
LED obwohl der Differenz ist > immer kleiner als 150 [C] if ( maxi > 150 ) PORTC |= (1<<PC3); else PORTC &= ~ (1<<PC3); [/C] Und deine LED ist sicher so verschaltet, dass sie leuchtet wenn der Pin auf 1 gezogen wird? Meistens ist das nämlich genau anders rum verschaltet: eine LED wird zum leuchten gebracht, indem man den Pin auf 0 setzt. PORTC: Welchen Prozessor benutzt du? Hat der ein JTAG? Liegt das zufällig am PORTC und ist nicht ausgeschaltet?
-
Thread
CVAVR und DS1820 nix als Ärger!
return (temp); } void send_byte(uchar x) //以下为显示程序 { uchar i; for(i=0;i<8;i++) { PORTC&=~(1<<5); // PC5为底 为164提供时钟信号 if((x&(1<<(7-i)))||((dp==1)&&(i==0))) //判断每位数据的电平,及小数点判断 PORTC|=(1<<4); //若为高着PC4输出高电平 else PORTC&=~(1<<4); //若为低着输出低电平 PORTC|=(1<<5); //PC5 提供始终信号 } //PORTC
{ if(i==3) dp=1; //小数点控制位 send_byte(disp_table[temp[5-i]]); dp=0; } break; } } PORTC|=(1<<4); }
-
Thread
ATMEGA32 16MHz Fusebits richtig setzen?!
' generated. Take care that the chip supports all fuse bytes. $baud = 9600 Config Portc.0 = Output Config Portc.1 = Output Config Pind.7 = Input Portd.7 = 1 Do If Pind.7 = 1 Then Portc.0 = 0 Portc.1 = 0 Else Portc.0 = 0 Portc.1 = 1 Waitms 1000 Portc.0 = 1 Portc.1 = 0 Waitms 1000 End If Wait 1 Loop End -------------------------------------------------------- Es sollten
-
Thread
Ultraschall Modul HCSR04, falsche Auswertung
_delay_ms(100); PORTC &= ~(1<<PC0); // _delay_us(15); // -> Löst die Messung des HCSR04 aus. PORTC |= (1<<PC0); // //Jetzt löst der Interrupt aus, weil das Modul den Echo auf high
while (1) { PORTC &= ~(1<<PC0); // _delay_ms(100); // -> Löst die Messung des HCSR04 aus. PORTC |= (1<<PC0); // //Jetzt löst der Interrupt aus, weil das Modul den Echo auf
-
Thread
Probleme mit LCD TC1602A
die Zeichen, die ausgegeben werden sollen erscheinen auch nicht. Das Display wird im 8 Bit modus an PORTC betrieben. PORTC->Data PA0->RS PA1->RWT PA2->EN Ich verwende folgendes Datenblatt http://www.winstar.com.tw/UserFiles/downloads/13511323500823064564.pdf Init auf Seite 11 Source Code
(1<<PA2); } void vLCDPutCommand(uint8_t _ui8Command){ PORTA &= ~((1<<PA1) || (1<<PA0)); PORTC = _ui8Command; vLCDEnable(); } void vLCDPutChar(char _cZeichen){ PORTA &= ~(1<<PA1); PORTA |= (1<<PA0); PORTC = _cZeichen; vLCDEnable(); } [/c] Grüße Hubba
-
Thread
Global typedef struct mit signed char?
AxisRelPos += AXIS[AxisSelect].AxisDirection; if (AXIS[AxisSelect].AxisRelPos < 0) PORTC = 0; else PORTC = 255; }[/c] Wird mit signed / unsigned int deklariert, so wird AxisRelPos richtig als vorzeichenbehafteter Integer betrachtet. Wird dagegen int16_t
im Beispielcode an der unterschiedlichen Ausführung des Branches. Mit "signed int AxisRelPos" wird PORTC = 0, mit "int16_t AxisRelPos" wird PORTC = 255 ausgeführt. Das darf so nicht sein. Würd' vorschlagen, das sich das jemand Anders noch anschaut, nicht dass ich was übersehen hab'. Kann auch sein