-
Thread
AVR C array Programmierung wo liegt der Fehler?
} R1_temp = R1_temp >> 1; if (G1_temp & 0x1){ PORTC |=(1<<G1);} else{ PORTC &= ~ (1<<G1); } G1_temp = G1_temp >> 1; if (B1_temp & 0x1){ PORTC |= (1<<B1);}
//Clock Signal erzeugen PORTC |= (1<<CLK); _delay_us(0.1); PORTC &= ~(1<<CLK); } //Ein"latchen" der Reihe PORTC |= (1<<PC5); _delay_us(0.1); PORTC &= ~(1<<PC5)
-
Thread
Wie kann ich den Inhalt eines Arrays in einen port schreiben?
TIMER0_OVF_vect ) // Overflow Interrupt Vector { voice++; if (voice == 16) { PORTC |= (1<<PC5); //Reset High voice =0; } else { PORTC &= ~ (1<<PC5); //Reset LOW } PORTC ^= (1<<PC4); //CLK } [/c] mit [c] if (voice == 8) [/c]
TIMER0_OVF_vect ) // Overflow Interrupt Vector { voice++; if (voice == 8) { PORTC |= (1<<RESET); //Reset High voice =0; PORTC &= ~ (1<<RESET); //Reset LOW } PORTC |= (1<<CLK); PORTC &= ~(1<<CLK); } [/C]
-
Thread
PIC PORTA geht nicht
Hallo hab mein erstes Programm für den PIC 16F630 geschrieben, wo ich LEDs blinken lasse. Mit PORTC klappt das auch wunderbar, aber an PORTA kann ich komischerweise immer nur einen Pin auf 1 legen! Ich kann z.B. alle LEDs nacheinander leuchten lassen; lege ich dagegen alle oder mehrere Pins gleichzeitig
s haben. Du brauchst also keine externen Pull-UP´s, sondern nur die internen einschalten. Wie das geht, steht in der Beschreibung zum PortA. MfG Andreas
-
Thread
Interrupt ATtiny85 - Hilfe
Idee?. /*Interrupt Service Routine for INT0*/ ISR(INT0_vect) { PORTB=~PORTB; /* Toggle PORTC */ _delay_ms(50); /* Software debouncing control delay */ } int main(void) { //DDRB=0xFF; /* Make PORTC as output PORT*/ // PB2 - input DDRB &= ~ (1<< PB2);
Michael schrieb im Beitrag #7552446: > PORTB=~PORTB; /* Toggle PORTC */ 1. der Tiny kennt keinen PortC 2. damit stirbt der Pullup ab, und danach ist nix mehr mit kontrolliertem "rising" Michael schrieb im Beitrag #7552446: > // PB4 - output > DDRB = (0<<
-
Thread
ATMega8 Externer Interrupt INT0
PORTC=0x02; _delay_ms(40); PORTC=0x00; _delay_ms(40); } } void tuwas3 (void) { // toggle c2 80 msec sei(); PORTC=0; while(1){ PORTC=0x04; _delay_ms
PORTC = 0x00; } return 1; } [/C]
-
Thread
ISR springt nicht mehr raus
Laufkatze clearbit(PORTC,0); // Zurücksetzen von Joystick } if (Zeitlk2 == time) { setbit(PORTA,1); setbit(PORTC,0); // setzen hochziehen
>> clearbit(PORTC,0); // Zurücksetzen von Laufkatze >> clearbit(PORTC,0); // Zurücksetzen von Joystick Sicher?
-
Thread
Init Problem mit KS0066 (Conrad)
Werten nicht mehr geht, habe ich es jetzt auf 100 runter gesetzt. Funktioniert genauso.
void led (unsigned char led) { PORTC |= _BV(led); _delay_ms (100); PORTC &= ~_BV(led); } Ich habe es jetzt korrigiert, dass die LED direkt wieder aus geht. Leider blinkt sie trotzdem nur 1x. Versucht habe ich jetzt auch schon
-
Thread
LED-Lauflicht wie Gummiball?
Programm sieht jetzt so aus: [code] avr.device = atmega32 avr.clock = 20000000 avr.stack = 16 portc.mode = output, pulldown dim i as byte do for i=0 to 7 portc = led.ByteValue(i) waitms 50 next for i=6 downto 1 portc = led.ByteValue(i) waitms 50 next loop
hab das mal umgesetzt: [code] avr.device = atmega32 avr.clock = 20000000 avr.stack = 16 portc.mode = output, pulldown dim i as byte do for i=0 to 7 portc = led.ByteValue(i) waitms 10*(i+1) next for i=7 downto 0 portc = led.ByteValue(i) waitms 10*(i+1) next
-
Thread
AVR Scheduler von Peter Danneger will nicht
Nimm dieser Makros [c] #define MotorspeedON PORTC |= (1<<PINC1) #define MotorspeedOFF PORTC &= ~(1<<PINC1) #define MotorLinksON PORTC |= (1<<PINC2) #define MotorLinksOFF PORTC &= ~(1<<PINC2) #define MotorRechtsON PORTC |= (1<<PINC3) #define MotorRechtsOFF PORTC &= ~(1<<PINC3) #define IniRearSlow PIND & ( 1 << PIND5 ) [/c] aus schedule.h raus und in main.c rein. erstens haben die dort nichts verloren (im schedule.h geht es um den Scheduler
-
Thread
RC5-Auswertung Problem
*push* Ich bin am verzweifeln... warum geht das nicht?
Letzter_befehl As Byte , Startwert As Byte Dim Interrupt_vektor As Byte Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.6 , Rs = Portc.7 Config Lcd = 20 * 2 Config Timer0 = Timer , Prescale = 8 On Ovf0 Tim0_isr Enable Timer0 Startwert = 125
-
Thread
AVR TWI Master und Slave Funtionen in C
8000000 $hwstack = 32 $swstack = 32 $framesize = 64 $baud = 19200 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.6 , Rs = Portc.7 Config Lcd = 20 * 2 Dim Twi_control As Byte Dim Twi_status As Byte Dim Twi_data_em As Byte Dim Twi_data_se As Byte
für mich für die Repeatet Start Bedingung? Oder von mir aus auch nen anderen SC, wo Repeatet Start geht, sodass ich das auf Mannis SC umschreiben kann und und wenns geht natürlich hochlade :-) Danke im Vorraus! Maik
-
Thread
LCD Mit pc verbinden
Portd = Output 'C1=Ausgang -> LED Ddrc.1 = 1 Portb.1 = 1 'Taste an C0 -> PullUp Ddrc.0 = 0 Portc.0 = 1 Do Waitms 100 Cls Lcd "so habe ich was" Lowerline Lcd "am display.. " 'Taste auswerten If Pinc.0 = 0 Then 'LED -> an Portc.1 = 1 Else 'LED ->
aus Portc.1 = 0 End If Loop End [/code]
-
Thread
Schalterlänge auswerten
Timer0 = Timer , Prescale = 1024 Enable Timer0 On Timer0 Isr_timer0 Enable Interrupts Config Portc.1 = Output Config Portc.2 = Output Config Pinb.0 = Input Portb.0 = 1 Dim W As Byte Do Select Case W Case 1 To 50 : Portc.1 = 1 Wait 1 Case 50 To 255 : Portc.2 = 1 Wait 1 W = 0 Case Else Portc.1 = 0 Portc.2 = 0 End Select Loop End Isr_timer0: If Pinb.0 = 0 Then Incr W End If Return
-
Thread
Brauche dringend Hilfe wegen LED Matrix!
Cube-Hardware */ ISR(TIMER1_OVF_vect) { int i; TCNT1 = preload; for(i=0;i<=7;i++) { PORTC = ~(1<<i); PORTA = Array[i]; _delay_ms(1); } PORTC = ~(1<<0); PORTA = clicks; _delay_ms(1); clicks = clicks +3; } /* diverse Dinge initialisieren */ void init(void)
Das ist jetzt schon recht kompakt, das solltest du verstehen lernen. BTW: Das hier [c] PORTC = ~(1<<0); [/c] ist das selbe wie das: [c] PORTC = ~(1); [/c] ist das selbe wie das: [c] PORTC = 0xFE; [/c] Such mal das 0xFE in meinem Programm, da taucht das auch auf. Der, der
-
Thread
Hat jemand Erfahrung mit dem 2,4GHz-Transceiver RFM70?
sind alle IRQ aktiviert. Aktive IRQ werden durch schreiben einer 1 im Register 7 gelöscht. Danach geht der IRQ Pin auf high.
> Ich sende ein Datenbyte (0xAF) > Das FIFO-Status_Register lese ich permanent aus (Ausgabe am PORTC) und > erhalte 0010 0001 also TX FIFO full und RX FIFO empty. > IRQ = immer 0. Wenn der IRQ auf low geht, könnte es auch bedeuten das kein ACK von der RX-Seite zurück kommt. Der Grund steht im
-
Thread
ATmega168 Interrupts funktionieren nicht mehr.
0,128 ms 1/(16000000 / 8 / 256) Sekunden Counter1++; }//ISR Ende ISR(INT0_vect) {PORTC |= (1<<PC4) ; //zum überprüfen ob er die ISR betritt,geht niemals an if(Aufoderab==0) { TIMSK0 = 0x01; // 0x01 = 1<<TOIE0);; Aktiviert den Zähler Aufoderab=1; EICRA = 0x02;
PORTC |= (1<<PC4) ;//LED_4 an. } } ISR(INT0_vect) { PORTC |= (1<<PC3) ;//LED_3 an. } [/c]
-
Thread
Stromverbrauch steigt exponentiell
funktioniert bin ich über glücklich: [c] #include <avr/io.h> #define F_CPU 10000000 #define GR_ON() PORTC |= (1<<1); #define GR_OFF() PORTC &= ~(1<<1); #define RE_ON() PORTC |= (1<<2); #define RE_OFF() PORTC &= ~(1<<2); int main() { DDRC |= (1<<2) | (1<<1); RE_ON(); GR_ON(); while
hauen... ich hab beim Programmieren immer die falsche hex-Datei genommen! ARGH! Trotzdem danke, es geht!
-
Thread
ATmega8: AD-Wandler geht nicht
@A.K.: Der ADC-Takt war außerhalb. Teiler jetzt auf 128 geändert, geht allerdings "genausogut" wie vorher, nämlich garnicht :-(((( In echter Hardware tut sich auch nix. Mein Code sieht jetzt so aus: #include <avr/io.h> #include <avr/interrupt.h> #include <
@Christian B.: Beim ATmega8 ist aber doch IMHO der AD-Wandler auf PORTC :)
-
Thread
portc.4 nur 1.5V
ach ja und ich programmiere in basic also a la portc.4 = 1 :)
JTAG Fuse abschalten, dann sollte es laufen. > ach ja und ich programmiere in basic also a la portc.4 = 1 :) Falls es um BASCOM geht: damit kann man auch die Fusebits programmieren.
-
Thread
LED einzeln an per Funktion
Doch doch, Ausschalten geht auch mit meiner Variante, zumindest bei PortA und PORTC bei PORTD geht garnichts mit dieser Variante, nichtmal einschalten :(
Dominique wrote: > Doch doch, Ausschalten geht auch mit meiner Variante, zumindest bei > PortA und PORTC Klar, wenn man das ganze Portregister Null schreibt, dann geht alles aus. Nur ist das, was Rufus schreibt, spätestens dann relevant, wenn
-
Thread
Assemblerprogr. LCD ansteuerung will nicht funktionieren
r18 andi r18, 0b11110000 out portd, r18 nop sbi portc, pine nop nop nop nop cbi portc, pine cbi portc, pinrs nop rcall ms2 ret ;----------Befehle Senden befehl: cbi portc, pinrs
nop nop nop cbi portc, pine rcall ms2 ret ;----------Befehl für ini mit zeit befehlini: cbi portc, pinrs out portd, r17 nop sbi portc, pine nop nop nop
-
Thread
In Interruptroutine einen aufruf/sprung machen
Alles klar, wenn ich nun das reti hier einfüge: programm: out PORTC, led com led ldi status,0b00000000 reti funktioniert es natürlich. Ich denke mal, dass mich dafür einige Köpfen, weil guter Stil natürlich was anderes ist ;)
_overflow: inc status cpi status, 50 brne ungleich out PORTC, led com led ldi status,0b00000000 ungleich: reti [/avrasm]
-
Thread
AT90USB162 PortC funktioniert nicht als Eingang
output PORTB = 0x00; // initial state: no channel is on DDRC = 0x0f; // upper nibble of PORTC as input, lower nibble as output PORTC &= 0x0f; // no pull-ups on upper nibble of PORTC uint8_t sel = 0; unsigned long cnt = 0; PORTB_SET(7); // set PB7 to 1 // Channel
ging davon aus, dass das Bit3 ohne Funktion ist und beim Schreiben einer 1 diese einfach in Nirvana geht... Ich habs jetzt mal entsprechend mit einer 0 versucht: DDRC = 0x07; PORTC &= 0x07; aber das liefert das gleiche Resultat. Die while Schleife läuft nicht an...
-
Thread
Definition der baudrate: Fehler- "expected identifier or '(' before numeric constant"
include <util/delay.h> #include <util/setbaud.h> #include <stdio.h> void io_init(void){ PORTC_DIR |= (1<<4); } void setUPSerial() { PORTC_REMAP |= 0x16; PORTC_OUTSET = PIN3_bm; PORTC_DIRSET = PIN3_bm; PORTC_OUTCLR = PIN2_bm; PORTC_DIRCLR = PIN2_bm; USARTC0
; } void setUPSerial() { PORTC_REMAP |= 0x16; PORTC_OUTSET = PIN3_bm; PORTC_DIRSET = PIN3_bm; PORTC_OUTCLR = PIN2_bm; PORTC_DIRCLR = PIN2_bm; USARTC0_BAUDCTRLB = 0; USARTC0_BAUDCTRLA = 0x22; USARTC0
-
Thread
bitte helfen
ok danke also es geht mir um das bascom programm
'Config ATmega8535 $regfile = "m8535.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , Rs = Port.5 , E = Portc.4 'Config ADC Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Adc konfigurieren Start Adc
-
Thread
C-Code ist Fehlerhaft
mich auch beschweren. Schreib es doch mal auseinander, vielleicht fällt Dir dann was auf? if(PORTC = PORTC | 0x40 && PORTD = PORTD | 0x80) { Wo fragst Du da was ab? Du setzt jeweils ein Bit in PORTC und PORTD... Gruß aus Berlin Michael
Inhalte von PORTC und PORTD.
-
Thread
Atmega32 PortC
Hi, ich hätte da ein kleines Problem... Ich habe auf PortC des Atmega32 zum Test ein paar LEDs angeschlossen (mit widerstand gegen Vcc). Das Program legt lediglich richtungsregister fest und setzt den Port auf Gnd. Leider leutchen nun aber nur die LEDs von
Hi Deine Fuse-Bits sind noch nicht richtig gesetzt. Disable dein JTAG Interface und PORTC steht dir zur Verfügung :-). Vielleicht ist sogar noch der interne Takt aktiviert...dann ist dein Chip noch mit 1MHz am tickern..das kannst Du ja dann gleich mit umstellen....nur so als Tip. MfG
-
Thread
Bit auf Variable setzen?
Um welche Sprache geht es eigentlich? C? C++?
schnellerem Code: [c] $cat test.c #include <avr/io.h> #include <stdbool.h> void f1(bool x) { PORTC= (PORTC & ~(1<<PC0)) | (x<<PC0); } void f2(bool x) { if (x) PORTC= PORTC | (1<<PC0); else PORTC= PORTC & ~(1<<PC0); } [/c] Compilieren mit [code]avr-gcc -c -mmcu=atmega8 -save-temps
-
Thread
Timer1 PIC16F1823 funktioniert nicht
TMR1L = 0x02; //low byte INTCON.TMR1IF = 0; //re-enabling the interrupt PORTC.B2 != PORTC.B2; } } void wait_ms(int time) { for(i = 0; i<time; i++) Delay_ms(1); } void init_Timer1() { //Timer1 always on T1CON.TMR1ON = 1; T1GCON.TMR1GE
TMR1L = 0xFF; //low byte } void main() { init_Timer1(); TRISC = 0x00; //Define PORTC as output PORTC = 0x00; PORTC.B2 = 1; while(1) { } } [/c]
-
Thread
LCD +Bascom zeigt 1. Zeile Nix 2. Zeile voll
so jetzt gehts mal wieder weiter. zu ratbers fragen 1. die spannungsversorgung ist nur ein 7805 ohne kondies. 2. die kabellänge beträgt 20cm 3. ich weiss nicht ob er geht aber er ist neu. ich kann ja
initialisieren lassen. Bei mir wir folgender Text zur Definition und Initialisierung eingegeben Config Portc = Output Config Lcd = 16 * 2 Config Lcdpin = Pin , R = Portc.7 , E = Portc.5 , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 Config Lcdbus = 4 Config Lcdmode = Port Initlcd
-
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
-
Thread
Anfängerfrage I/O über interne Pullups
{ DDRC=0xff; //PORTC ist Ausgang DDRF=0x00; //PORTF ist Eingang PORTF=0xff; //pullups aktivieren für Eingang => 5V an den PINS, zum while(1) { PORTC = 0xAA; } } Jetzt müsste am C
abwechselnd 1 Led brennen und 1 aus sein. (mal schauen, ob dein Prozessor überhaupt arbeitet). Wenn das geht: Probier mal anstelle des F Ports den B Port void main(void) { DDRC = 0xff; //PORTC ist Ausgang DDRB = 0x00; //PORTB ist Eingang PORTB = 0xff; while(1) { PORTC =
-
Thread
Einsteigerfrage: Pin Toggeln in Assembler - PIC
Das PORTC Register lässt sich nur in der Bank 0 ansprechen, wenn eine andere Bank aktiv ist geht der Zugriff ins Leere.
genau was es soll - ohne die BSF/BCF Krücke ;-) main BANKSEL ANSELC clrf ANSELC BANKSEL PORTC clrf PORTC BANKSEL TRISC clrf TRISC BANKSEL PORTC endlos movlw b'00000001' xorwf PORTC,F goto endlos END (deinen Denkfehler habe ich oben schon erklärt)
-
Thread
LED mit einaem Taster andimmen, mit anderem ausdimmen.
Ja geht nur bis 255. Hab mir den Wert von Pwm1a auf ein LCD ausgeben lassen und da konnte ich sehen, das es nur bis 255 geht. Wegen 8 Bit... Also der Folgende Code funktioniert einwandfrei: ---------
OK, ich hab nun endlich alles hinbekommen. Dimmen geht... Überlauf-Abfangen geht... Alles geht :-) Und das mit dem Elko: Also die LCD-Hintergrundbeleuchtung lässt sich auch ohne Elko wunderbar auf und abdimmen, es gibt keine Störungen oder flackern
-
Thread
Tastenenprellung Deluxe P. Dannegger
Das geht schon, aber für das toggeln geht es einfacher und schneller so beim xmega: PORTE.OUTTGL = 0x01;
Clock auf 32Mhz einstellen*/ CLK.CTRL = CLK_SCLKSEL_RC32M_gc; /* Pullup für alle Taster */ PORTC.PIN3CTRL |= PORT_OPC_PULLUP_gc; PORTC.PIN2CTRL |= PORT_OPC_PULLUP_gc; PORTC.PIN0CTRL |= PORT_OPC_PULLUP_gc; PMIC.CTRL |= PMIC_LOLVLEN_bm; // Lo Interrupt Enable init_timer(
-
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
Taster Einlesen
hier mein Programm $regfile = "m8def.dat" $crystal = 3690000 Config Portb = Output Config Portc = Input Config Portc = 1 Do If Portc = 0 Then Portb = 1 Else Portb = 0 End If Loop End
. Okay, danke es geht habe es hinbekommen!
-
Thread
[V] Mini GPS Module - SkyTraq Venus 6 (22x22x8mm)
0A Das müsste GPZDA eigentlich aktivieren. Das Modul ist allerdings unbeeindruckt davon. Wie geht man da vor?
PORTC |= (1 << 2); } if ( c & UART_BUFFER_OVERFLOW ) { PORTC |= (1 << 3); } PORTC |= (1 << 4); } } return 0; } [/c]
-
Thread
PWM mit ATMEGA168
[CHANNELS + 1]; uint8_t *ptr_PORTC_main = &pwm_mask_PORTC_A; uint8_t *ptr_PORTD_main = &pwm_mask_PORTD_A; uint8_t *ptr_timing_main = &pwm_timing_A; uint8_t *ptr_PORTC_isr = &pwm_mask_PORTC_B; uint8_t *ptr_PORTD_isr = &pwm_mask_PORTD_B
, PC2, PC3, PC4, PD0, PD1, PD2, PD3, PD4, PD6, PD7 }; uint8_t **pwm_port[CHANNELS] = { &ptr_PORTC_main, &ptr_PORTC_main, &ptr_PORTC_main, &ptr_PORTC_main, &ptr_PORTC_main, &ptr_PORTD_main, &ptr_PORTD_main, &ptr_PORTD_main, &ptr_PORTD_main, &ptr_PORTD_main, &ptr_PORTD_main
-
Thread
Projekt Fußtreter
was ich mti meinen delaysachen hab sieht so aus: z.b. if ((bit_is_clear (PIND,3)) && (PORTC & 1 << 5) && (prog == 1)) { blink_time = 50; // n-mal schnell blinken blinken (10); blink_time = 200; // n-mal langsam blinken blinken (4); PORTC &= ~(1
: > >> Alles per Funk. > > Wer Funk kennt nimmt Kabel. :-) > Gruss > Harald Aber sonst gehts noch :) Grüße
-
Thread
ATMEGA32 Einzellne Pins durchgebrannt ?
ldi r16, 0xFF out DDRC, r16 ende: ldi r16, 0x00 out PORTC, r16 rjmp ende [/avrasm] [c] #include <avr/io.h> #include <util/delay.h> int main() { while(1) { DDRC = 0xFF; PORTC = 0x00; } } [/c] Bei beiden Programmierungen
einmal versemmelt hat, dann ist ist etwas schwieriger, sie wieder gerade zu biegen, denn mit ISP geht das ohne Tricks nicht mehr. 16MHz Quarz durch 3-8MHz ersetzen könnte helfen.
-
Thread
Dataflash and MEGA32 geht nicht
Hi also ich hab hier ein problem. Ich hab nen Mega32 der auf 5V laeuft. An den hab ich via spannungsteiler (1.8k und 3k) nen Dataflash geschnallt. Ich benutze das "normale" SPI interface mit dem Unterschied das ich das Slave select mit Hand mache (PortB.2). Ich versuche nun schon seit stunden dem Ding irgendetwas zu entlocken aber es weigert sich beharrlich. Irgendwer vorlschaege? Chip: AT26DF081A Supply Voltage: 3.3V Mega Clock: 8 MHz SPI - Clock: 1 MHz Codeschnipsel fuer das SPI init SPCR=0x51; SPSR=0x00; Codeschnipsel zum lesen der Device ID (erstes Byte) PORTB.2
-
Thread
Anregungen / Fragen / Hinweise zu Wecker
; PORTB.OUTSET=0x81; PORTA.OUTSET=0x80; break; case 0x33: PORTC.OUTSET=0x61; PORTB.OUTSET=0x02; PORTA.OUTSET=0x80; break; case 0x34: PORTC.OUTSET=0x15; PORTB.OUTSET=0xA0; break; case 0x35: PORTC.OUTSET=0x51; PORTB.OUTSET=0x82; PORTA.OUTSET=0x80; break; case 0x36: PORTC.OUTSET=0x51; PORTB.OUTSET=0x83; PORTA.OUTSET=0x80; break; case 0x37: PORTC.OUTSET=0x49; PORTB.OUTSET=0x90; break; case 0x38: PORTC.OUTSET=0x71
-
Thread
Timer Overflow Interrupt behindert Externen Interrupt?
Zeitdifferenz > 65535 then { Zeitdifferenz = Zeitdifferenz - 65535 } so einfach geht das dann wohl nicht, oder?
--> zwei Flanken --> Start s_2_Start = 1; // Startbit Spieler 2 gesetzt PORTC=~PORTC; } } if( !(PINA & (1<<PA3)) ) // Sensor 12 (Drehrichtung) für Spieler1 liegt an { zaehlerS2_Richt = TCNT1; // Richtungswert Spieler 2 setzen } } [/
-
Thread
Problem mit delay.h und Optimierungsstufe v. AVR Studio 4
. Setze ich ohne Bedenken ein, wenn es sich anbietet und Konstrukte deutlich vereinfacht. Ja, es geht ohne. Und es geht auch ohne delay. Und es geht auch mit noch viel weniger. Kurzum - wenn eine fertige Funktion angeboten wird, sollte sie auch funktionieren wie gewollt. Es lässt sich ja leicht testen
. Noch mal zum Verständnis. Muss es anstatt: [c]PORTC &= ~((1<<PC0) | (1<<PC1));// Turn Laser off[/c] so heißen: [c] PORTC &= (~(1<<PC0) | ~(1<<PC1));// Turn Laser off[/c] ? Aber iwie passt das doch nicht. Denn hier ein kleiner Auszug aus dem
-
Thread
3x LED-PWM-Faden
LEDs pro Reihe mit 256 Helligkeitsstufen nur folgendes machen muss PORTA=red0; PORTB=blue0; PORTC=green0; PORTD=1; delay(1); PORTA=red1; PORTB=blue1; PORTC=green1; PORTD=2; delay(2); PORTA=red2; PORTB=blue2; PORTC=green2; PORTD=4; delay(4); PORTA=red3; PORTB=blue3; PORTC=green3; PORTD=8; delay(8); PORTA=red4; PORTB=blue4; PORTC=green4; PORTD=16; delay(16); PORTA=red5; PORTB=blue5; PORTC=green5; PORTD=32; delay(32); PORTA=red6; PORTB=blue6; PORTC=green6; PORTD=64; delay(64); PORTA=red7; PORTB=blue7; PORTC=green7
-
Thread
LCD Display funktioniert nur wenn ich den uC Flashe
ihr habt tipps... Anbei der Schaltplan Hier die Initialisierung [c] #define LCD_RW_1 PORTC |= (1<<PC3) #define LCD_RW_0 PORTC &= ~(1<<PC3) #define LCD_RS_1 PORTC |= (1<<PC2) #define LCD_RS_0 PORTC &= ~(1<<PC2) #define LCD_E_1 PORTB |= (1<<PB4) #define LCD_E_0 PORTB &= ~(1<<
0xB0; void send_char(unsigned char ucData) { LCD_RW_0; //Write LCD_RS_1; //Daten PORTC = (PORTC & 0x0F) | (ucData & 0xF0); //High Nibble _delay_us(100); LCD_E_1; _delay_us(500); LCD_E_0; _delay_us(500); _delay_ms(5); PORTC = (PORTC & 0x0F) | ((ucData << 4) &
-
Thread
Erfahrung wäre nicht schnell
soll einfach nur einen Pin ein und ausschalten. mit ca. 2000 Hz (1000 bis 5000Hz sind OK). Kurz um, geht so noch nicht! Das zweite Problem ist in der main, im while loop. Ich möchte einen sollwert aus dem PORTC einlesen. Und diesen Wert für das Zählen des Interrupt ereignisses nutzen. Das lesen geht
Danke für die Infos, das Program geht jetzt, nur ein fehler war glaub ich in den Hilfen Albert schrieb: DDRC = 0xff; //PORTC auf Input aber ich glaub das muss DDRC = 0x00; sein um C als Eingang zu nutzen. Danke! Liloba
-
Thread
Atmega8 scheint UART zu empfangen
sind. Somit ist 1 gleich 0 und umgekehrt. Schmeiss das hier mal raus DDRC = 0b11111111; PORTC = 0b11111111; und stattdessen: DDRC = 0xFF; PORTC = 0x00;
MYUBRR); unsigned char zeichen; printString("Welcome AVR!\r\n"); DDRC = 0xFF; PORTC = 0xFF; _delay_ms(1000); while (1) { zeichen = receiveByte(); PORTC = PORTC << 1; //PORTC= zeichen; //printString("Test\r\n") _delay_ms(200); }
-
Thread
verschachtelte defines?
einfach nicht. Oft aufgerufene Funktionne lassen sich über Makros definieren, b.B. #define stop PORTC &= ~0xF0 Kann man auch defines über mehrere Operationen definieren, also #define stop PORTC &= ~0xF0 + PORTD &= ~0x0F ?
Ok, Wenn ich Euch recht verstehe, sollte das dann so aussehen? #define stop {PORTC &= ~0xF0, PORTD &= ~0x0F} ?