-
Thread
Problem mit AD7945BN DAC Ansteuerung
){ // PortC0 (MSB) bis PortC3, Rest PortA (PortA0 LSB) PORTC |= (1<<3); } else{ PORTC &= (~(1<<3)); } if(val & (1<<9)){ PORTC |= (1<<2); } else{ PORTC &= (~(1<<2)); } if(val & (1<<10)){ PORTC |= (1<<1); } else
)) PORTC |= (1<<0); PORTA = val; } [/c]
-
Thread
Schrittmotor mit Atmega 8 warum geht PD0 als Eingang nicht?
t i; void rueck_vor_fahrt (void) { while(1) { if ( PIND & (1<<PIND1)) { PORTC = NARANJA; _delay_ms(DELAY); PORTC = GRIS; _delay_ms(DELAY); PORTC = AMARILLO; _delay_ms(DELAY); PORTC = NEGRO; _delay_ms(DELAY); } if ( PIND & (1<<PIND4)) { PORTC = NEGRO; _delay_ms(DELAY); PORTC = AMARILLO; _delay_ms(DELAY); PORTC = GRIS; _delay_ms(DELAY); PORTC = NARANJA; _delay_ms(DELAY);
-
Thread
Abfrage Taster durch USI vom Slave mit zwei AVR
(byte4 == 30) { // Wenn Wert 30 gelesen wurde... PORTC &= ~( (1<<PINC5)); // schalte Port A6 PORTC |=(1<<PINC6); // wenn nicht lösche Port A6 } else { PORTC |=(1<<PINC5); // wenn
(byte4 == 30) { // Wenn Wert 30 gelesen wurde... PORTC &= ~( (1<<PINC5)); // schalte Port A6 PORTC |=(1<<PINC6); // wenn nicht lösche Port A6 } else { PORTC |=(1<<PINC5); // wenn
-
Thread
LED Lauflicht mit Fader Effeckt
Oh hab den Code vergessen :D [pre] Led_1 Alias Portc.0 Config Led_1 = Output Led_1 = 0 Led_2 Alias Portc.1 Config Led_2 = Output Led_2 = 0 Led_3 Alias Portc.2 Config Led_3 = Output Led_3 = 0 Dim Led_1_value As Byte Dim Led_2_value As
dat" $crystal = 16000000 $baud = 19200 $hwstack = 64 $swstack = 64 $framesize = 64 Config Portc = Output Config Timer0 = Timer , Prescale = 1 Enable Timer0 On Timer0 Timer0_isr 'Sternegruppen Gruppe1 Alias Portc.0 Gruppe2 Alias Portc.1 Gruppe3 Alias Portc.2 Gruppe4 Alias Portc.3
-
Thread
Ausgang des Atmega32 definieren
Also neuer Versuch damit: [c]#include <avr/io.h> void main( void ) { DDRC = 0xff; PORTC = 0; while( 1 ) { if( PINA & (1<<PA4) ) // Taste gedrückt? { PORTC = 0xff; // Ja: Leds einschalten } else { PORTC = 0x00; //
> DDRC = 0xff; > PORTC = 0; PORTA |= (1<<PA4); // Pullup einschalten
-
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
Magnetbremse L298 ATmega8?
If Regelwert <= 2 Then Regelwert = 2 End If 'If Portc.3 = 1 And Portc.4 = 0 Then 'Portc.3 = 0 'Waitms 10 'Portc.4 = 1 'Else 'Portc.4 = 0 'Waitms 10 'Portc.3 = 1
End If Regelwert = Regelwert - Gain Opv = Regelwert / 2 'If Portc.3 = 1 And Portc.4 = 0 Then 'Portc.3 = 0 'Waitms 10 'Portc.4 = 1 'Else 'Portc.4 = 0 'Waitms 10 'Portc.3 = 1
-
Thread
entprellen.bekomme es nicht richtig hin.
void) { // **** Einrichten von Ein- und Ausgängen *************** DDRC = 0x01; // PortC 0 Ausgänge PORTC1-6 Eingänge PORTC |=0x02; // Pull Up an PortC0 und 1 aktivieren } char taster(void) { static unsigned char zustand; char rw = 0; if(zustand == 0 && !(TASTERPORT
while(1) { //if((PINC&(1<<PINC1))==0 && zustand_taster==0) if(taster()) { PORTC|=(1<<PC0); } if(taster()) { PORTC&=~(1<<PC0); } } return 0; } [/c] Also ich habe den code für die
-
Thread
Hilfe bei SSD1289 Display Controller
m1284pdef.inc" .equ DatenDDR0 = DDRA .equ DatenDDR1 = DDRC .equ DatenPORT0 = PORTA .equ DatenPORT1 = PORTC .equ DatenPIN0 = PINA .equ DatenPIN1 = PINC .equ D0 = PORTA0 .equ D1 = PORTA1 .equ D2 = PORTA2 .equ D3 = PORTA3 .equ D4 = PORTA4 .equ D5 = PORTA5 .equ D6 = PORTA6 .equ D7 = PORTA7 .equ D8 = PORTC0 .equ D9 = PORTC1 .equ D10 = PORTC2 .equ D11 = PORTC3 .equ D12 = PORTC4 .equ D13 = PORTC5 .equ D14 = PORTC6 .equ D15 = PORTC7 .def temp0 = r16 .def temp1 = r17 .def temp2 = r18 .equ SteuerDDR
-
Thread
Über einen µC Laufzeit messen und über RS232 ausgeben
Kanal 1 Starttaster { kanal[0].start = kanal[0].ticks; kanal[0].show = 1; PORTC |= kanal[0].status_led; } if (PINC &(1<<PINC5)) // Kanal 2 Starttaster { kanal[1].start = kanal[1].ticks; kanal[1].show = 1; PORTC |= kanal[1].status_led;
Kanal 3 Starttaster { kanal[2].start = kanal[2].ticks; kanal[2].show = 1; PORTC |= kanal[2].status_led; } if (PIND &(1<<PIND3)) // Kanal 4 Starttaster { kanal[3].start = kanal[3].ticks; kanal[3].show = 1; PORTC |= kanal[3].status_led;
-
Thread
Mehrere Ausgänge über Alias zuasmmenfügen
D3 Alias Porta.3 E1 Alias Porta.4 E2 Alias Porta.5 E3 Alias Porta.6 F1 Alias Porta.7 F2 Alias Portc.7 F3 Alias Portc.6 G1 Alias Portc.5 G2 Alias Portc.4 G3 Alias Portc.3 H1 Alias Portc.2 H2 Alias Portc.1 H3 Alias Portc.0 I1 Alias Portd.7 I2 Alias Portd.6 I3 Alias Portd.5 Farbe1 Alias
And Porta.2 And Porta.3 Strebe E Alias Porta.4 And Porta.5 And Porta.6 Strebe F Alias Porta.7 And Portc.7 And Portc.6 Strebe G Alias Portc.5 And Portc.4 And Portc.3 Strebe H Alias Portc.2 And Portc.1 And Portc.0 Strebe I Alias Portd.7 And Portd.6 And Portd.5 LG marcel
-
Thread
Anzeige LCD-I2C / Multitasking und Tasterentprellung von Peter
schalten immer zusammen mit long { PORTC &= ~(1<<PC6); // LED an } if(get_key_long(1<<KEY_1)) // Lang schalten immer mit short { PORTC |= (1<<PC6); // LED aus } //////////////////////////////
schalten immer zusammen mit long { PORTC &= ~(1<<PC6); // LED an } if(get_key_long(1<<KEY_1)) // Lang schalten immer mit short { PORTC |= (1<<PC6); // LED aus } anzeige();
-
Thread
8 Kanal Dimmer - Softwarefrage
Cursor Off Licht Alias Portd.7 Brunnen Alias Portd.6 Null_detect Alias Portd.2 Kanal1 Alias Portc.0 Kanal2 Alias Portc.1 Kanal3 Alias Portc.2 Kanal4 Alias Portc.3 Kanal5 Alias Portc.4 Kanal6 Alias Portc.5 Kanal7 Alias Portc.6 Kanal8 Alias Portc.7 Taste_dimmer_dunkler Alias Porta.0 Taste_dimmer_heller
Lcd A Waitms 500 Incr A Next A Loop ' subroutinen Null_durchgang: Portc = 0 Start Timer0 I = 0 Return Dimmer_isr: If I = Zuendwinkel_triac1 Then Kanal1 = 1 Elseif I = Zuendwinkel_triac2 Then Kanal2 = 1
-
Thread
PIC 16F628A - LCD ansteuern
Und das hier: bsf PORTC, LcdRs ; Daten nop bsf PORTC, LcdE ; Enable LcdBus nop bcf PORTC, LcdE ; Disable LcdBus swapf LcdDaten, w andlw H'F0' movwf PORTD ; Lo-teil Daten schreiben bsf PORTC, LcdRs ; Daten nop bsf PORTC, LcdE nop bcf PORTC, LcdE ; Disable LcdBus nop bcf PORTC, LcdRs ;
-
Thread
ATMega16 und PORTC / JTAG Fuse
Hallo ATMega Experten, Ich möchte bei meinem ATMega16 den PortC benutzen. Im Datenblatt und auch im Forum habe ich gefunden, dass man die JTAGEN Fuse abschalten muss um die Ports PORTC2 - 5 als normale Portpins benutzen zu können. Alternativ noch das JTD Flag
theoretisch die Ports A und C jeweils abwechselnd 0 und 1 zeigen. Beide Ports sind auf 0x00, bei PortC sind die JTAG Pins auf 1. Wenn ich nun bei den Fuses das JTAGEN "Häkchen" setze, geht zumindest der PortA wie gewünscht, PortC zeigt das gleiche verhalten. Was habe ich falsch gemacht? (STK500
-
Thread
AtMega16 Bascom PWM. Ist sowas möglich?
also ich habe es so gemacht: $regfile = "M8def.dat" $crystal = 1000000 Drehzahl Alias Portc.5 Config Drehzahl = Output Config Timer0 = Timer , Prescale = 1 On Ovf0 On_ovf0 Enable Ovf0 Enable Interrupts Do Loop End On_ovf0: Toggle Drehzahl Return
erreicht, als einmal pro Sekunde. $regfile = "M8def.dat" $crystal = 1000000 Drehzahl Alias Portc.5 Config Drehzahl = Output Dim Timervorspannung As Long Dim Jederzweite As Byte Timervorspannung = 50 Config Timer0 = Timer , Prescale = 64 Config Timer1 = Timer , Prescale = 8 On Timer1
-
Thread
Atmega mit LED Ausgang (Spannungsproblem zu trivial?)
{ adcval = ADC_Read_Avg(0,5); if(adcval < 140) // Kleiner 684mV { PORTC |= (1<<PC0); PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC2); } if((adcval > 140) && (adcval < 800)) // zwischen 684mV und 3,9V { PORTC |= (1<<PC1); PORTC &= ~(1<<PC0); PORTC &= ~(1<<PC2); } if(adcval > 800) // Größer 3,9V { PORTC |= (1<<PC2); PORTC &= ~(1<<PC0); PORTC &= ~(1<<PC1); }
-
Thread
8Bit Timer/Counter 0
Timer/Counter0 { PORTC=0; //PCO-> wird zu null->LED sollte angehen }
8 Bit Timer/Counter0 { PORTC=1; //PCO-> wird zu null->LED sollte aus gehen }
-
Thread
Hilfe bei Programmierung in Mplab
******************************************************** ;## 7 Segmentanzeige #define A_SEG PORTC,0 #define B_SEG PORTC,1 #define C_SEG PORTC,2 #define D_SEG PORTC,3 #define E_SEG PORTC,4 #define F_SEG PORTC,5 #define G_SEG PORTA,4 #define DP_SEG PORTB,4 #define
;## Taster #define S1 PORTB,5 #define S2 PORTA,3 ;## RS232 #define TX PORTC,6 #define RX PORTC,7 ;************************************************************************************** ;Makros Bank0 MACRO ;macro to select data RAM bank 0 bcf STATUS
-
Thread
Siedle In-Home-Bus Protokoll
PC1: 100 Ohm // 10ms 2,2k // bits mit 100 Ohm DDRC |= _BV( PC0 ) | _BV( PC1 ); PORTC = 0; while (1) { long_delay( 5000 ); PORTC |= _BV( PC0 ); long_delay( 11 ); PORTC &= ~_BV( PC0 ); PORTC |= _BV( PC0 ); PORTC |= _BV( PC1 ); uint8_t bits
&= ~_BV( PC1 ); PORTC |= _BV( PC1 ); PORTC &= ~_BV( PC1 ); PORTC &= ~_BV( PC0 ); } [/c]
-
Thread
PortC Problem mit Mega16
Sebastian, besten Dank für Deine Antwort. Konfigurieren tue ich den Port mit der Zeile: Config Portc = Input Was ist daran falsch ? Gruß Reinhard
-
Thread
Mikrocontroller kommt aus dem Takt ;D
0b00001111; DDRB = 0b00000110; DDRD = 0b00000010; CLEAR_BIT(PORTB,2); //Output Enable SET_BIT(PORTC,3); //SDI //Ebenen CLEAR_BIT(PORTC,2); CLEAR_BIT(PORTC,1); CLEAR_BIT(PORTC,0); /** Hauptschleife **/ for(;;) { for (int i= 0; i<1;i++) { SET_BIT(PORTC,3); //SDI
_delay_ms(1); SET_BIT(PORTB,1); _delay_ms(1); SET_BIT(PORTC,3); //SDI CLEAR_BIT(PORTB,1); _delay_ms(1); SET_BIT(PORTB,1); _delay_ms(1); SET_BIT(PORTC,3); //SDI CLEAR_BIT
-
Thread
Term vereinfachen
((battery_count >= 100)&&(battery_count <= 113)) { PORTB &= ~(1 << PB4); PORTC &= ~(1 << PC4); PORTB &= ~(1 << PB3); } if((battery_count >= 125)&&(battery_count <= 138)) { PORTB &= ~(1 << PB4); PORTC &= ~(1 << PC4); PORTB
void PortOn() { PORTC &= ~(1 << PC4); PORTB &= ~(1 << PB4) | (1 << PB3); } void PortOff() { PORTC |= (1 << PC4); PORTB |= (1 << PB4) | (1 << PB3); } void battery_routine(void) { if(release_battery_cut_off
-
Thread
Problem: AVR m8A/m8535 mit TG12864B-03 in Assembler
LCD ; 0b1111 für PortB ; 0b0011 für PortC sbi PORTB, 0 sbi PORTB, 1 sbi PORTB, 2 sbi PORTB, 3 sbi PORTC, 0 sbi PORTC, 1 cbi PORTC, 2 cbi PORTC, 3 cbi PORTD, TG12864_RW cbi PORTD, TG12864_DI rcall transmit_12 ; set LCD start
to 3 ; 0b[0011] für PORTB ; 0b01[00] für PORTC sbi PORTB, 0 sbi PORTB, 1 cbi PORTB, 2 cbi PORTB, 3 cbi PORTC, 0 cbi PORTC, 1 sbi PORTC, 2 cbi PORTC, 3 cbi PORTD, TG12864_RW cbi PORTD, TG12864_DI rcall transmit_12 ;================
-
Thread
ADC Ansteuerung durch einen Taster an den Atmega32l
Do Sensor = Getadc(1) If Sensor > 500 Then Portc.6 = 1 Else Portc.6 = 0 End If Loop End
'Taster 1 Portc.5 = 1 Portd.6 = 1 Else Portc = 0 Portd = 0 End If Loop End [/code]
-
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
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 = PINB; } }
-
Thread
LCD EA DIP204-4 Initialisieren
= 0 _delay_ms(2000); //++++++++++++++++++ TEST ++++++++++++++++++// PORTC |= (1<<PC0); // Bit setzen PORTC |= (1<<PC1); // Bit setzen PORTC |= (1<<PC2); // Bit setzen _delay_ms(500); // warten PORTC &= ~(1<<PC0); // Bit loeschen PORTC &= ~(1<<PC1); // Bit loeschen PORTC &= ~(1<<PC2); // Bit loeschen //++++++++++++++++++ TEST ++++++++++++++++++// display_init(); // ------------------
-
Thread
CodeVision und die Timers
sorry, muss natürlich: if (PORTC.X) PORTC.X=0; else PORTC.X=1; heissen...
naja PORTC ^= 0x??
-
Thread
Hilfe bei der seriell Port Kommunikation mit Atxmega64a3u
; } 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
stdin = uart_str; printf("Hello World!\n\r"); while(1) { _delay_ms(100); PORTC_OUT &= ~(1<<4); _delay_ms(100); PORTC_OUT |= (1<<4); } return 0; }[/c]
-
Thread
Avr Studio Simulator C Code
sbi(PORTC, 1); _delay_loop_2(18000); cbi(PORTC, 1); _delay_loop_2(9000); txbits(0x82); txbits(0x17); txbits(INDATA); return; } int main(void) { outp (0xFF, DDRC); sbi(PORTC,0); cbi(PORTC,0); for (;;) { /* loop forever */ cbi(PORTC,0); command(0x06); sbi(PORTC,0); } }
-
Thread
Gaswarnanlage Tiefgarage
> PORTC = 0b00000001 ich wüsste nicht, dass es in C geht (Binäre schreibweise)..
logisch 1 am Sensor soll das passieren? Vorschlag zur Verbesserung: statt if (Anzahl >= 2) { PORTC = 0b11111111; //rot; } if (Anzahl <2) { PORTC = 0b00000001; //gruen } schreibst du if (Anzahl >= 2) { PORTC = 0b11111111; //rot; } else { PORTC = 0b00000001; //gruen } Und
-
Thread
Welchen Schieberegister besser geeignet (74HC165 oder 74HCT165)
aus? Vielen Dank! So sieht der Code dazu aus: [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<
=0;i--) { // Mit Clock weiterschieben // Clock auf High PORTC |= (1<<PC4); // Clock auf Low PORTC &= ~(1<<PC4); // Clock auf High PORTC |= (1<<PC4); } // For Ende } [/c]
-
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
int anzahl, unsigned int ms) { int i; // lokale Variable for ( i=0; i<anzahl; i++ ) { PORTC |= (1 << 5); // Schalte LED EIN warten_ms(ms); PORTC &= ~(1 << 5); // Schalte LED AUS warten_ms(ms); } } [/C] Aufrufe: [C] blinken(10, 50); // 10x schnell Zeitbedarf
-
Thread
Kurz Frage zu µC-Pinprogrammierung
Hallo Forumsmember! kurze Fragen...es handelt sich um einen PIC18FXX2. 1) clear_bit(portc,0); set_bit(portc,0); Hier wird doch Port c angesprochen, aber welcher Pin, RC0? Bzw. was macht genau clear_bit und set_bit? 2) Was macht im Gegenzug portc.0=1; Hier wird wird wohl auch
also die Frage zielte eig. auf folgendes ab: in dem mir vorliegen code wird einmal clear_bit(portc,0); verwendet. Ich dachte (bisher) das hier einfach RC0 auf 0 gesetzt wird. Ich dachte also das das ",0" in (portc,0) für den angesprochenen Pin steht. Bzw. bei set_bit(portc,0); RC0 auf 1
-
Thread
Eingang direkt auf Ausgang geben
ich habe ein Problem mit meinen C-code! if (bit_is_set(PINC,Rot_Eingang)) {bit_on(PORTC,Rot_Ausgang);} else {bit_off(PORTC,Rot_Ausgang);} if (bit_is_set(PINC,Gruen_Eingang)) {bit_on(PORTC,Gruen_Ausgang);} else {bit_off(PORTC,Gruen_Ausgang);} if (bit_is_set
else {bit_off(PORTC,PC6);} }
-
Thread
Wer findet den Fehler?
r17, 0x00 loop: sbic PINB, 0 rjmp plus sbic PIND, 0 rjmp minus out PORTC, r17 ende: rjmp loop plus: inc r17 warte1: out PORTC, r17 sbic PINb, 0 rjmp warte1 rjmp loop minus: dec r17 warte2: out PORTC, r17 sbic PIND,
Ausführung plus bei nicht! gedrücktem Taster??? sbic PIND, 0 rjmp minus out PORTC, r17 ende: rjmp loop Wad das beabsichtigt?
-
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
Probleme bei Programmierung von Lichtschranken-Stoppuhr
;zähler erhöhen reti anzeige2: cpi zaehler, 2 brsh anzeige3 out PORTC, ausschalten lds temp, Seg_Code2 out PORTD, temp lsl schalter out PORTC, schalter inc zaehler reti anzeige3: cpi zaehler, 3 brsh anzeige4 out PORTC
PORTC, schalter inc zaehler reti anzeige5: out PORTC, ausschalten lds temp, Seg_Code5 out PORTD ,temp lsl schalter out PORTC, schalter clr zaehler clr
-
Thread
Software PWM Bascom
Toggle Portc.1 If Pwmwertoff = Timer0 And Timerwert = 1 Then Toggle Portc.1 If Timerwert = 1 Then Timerwert = 0 Print Timer0 Lcd Pwmwerton Loop End Ablauf: Incr Timerwert Return [/pre]
funktioniert es immer noch nicht. [pre] Do Pwmwertoff = 255 - Pwmwert If Pwmwert => Timer0 Then Set Portc.1 If Pwmwertoff => Timer0 And Timerwert = 1 Then Reset Portc.1 If Timerwert = 1 Then Timerwert = 0 Loop [/pre]
-
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} ?
-
Thread
lcd will nicht
also so habe ich den lcd beschaltet Db4 -> Portc.3 Db5 -> Portc.2 Db6 -> Portc.1 Db7 -> Portc.0 E -> Portd.6 Rs -> Portd.5 Db0 bis Db3 auf masse pin3(LCD) und pin5(LCD)auf masse pin1 auf masse und pin2 auf 4,5 volt und
Byte $regfile = "m16def.dat" $crystal = 4000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portd.6 , Rs = Portd.5 A = 55 Upperline Lcd "HALLO" Wait 1 Lowerline Wait 1 Lcd Hex(a) End getestet aber es kommt gar nicht warum
-
Thread
C-Programm für ATmega8 läuft ohne PC-Anschluss nicht
sec==tc); DDRB = 0xff; //PORTB als Ausgang für Speaker und LED DDRC = 0x00; //PORTC als Eingang für Taster zum Stellen der Weckzeit PORTC = 0xff; //PullUp-Widerstände an PORTC ein volatile char h, m; lcdGoto(2,1); lcdWrite("Wecker: : "
Wecker zeigt mir -19-39 an. Also stell ich im Programm um: von: [c] DDRB = 0xff; DDRC = 0x00; PORTC = 0xff; volatile char h, m; lcdGoto(2,1); lcdWrite("Wecker: 14:02"); [/c] auf [c] DDRB = 0xff; DDRC = 0x00; PORTC = 0xff; volatile char h=14, m=2;
-
Thread
Atmega48 UART sendet bei TX Abschaltung ein ungültiges Zeichen
Da ich für Inputs (Taster) nur PROTC nutze, wird auch nur dieser von mir konfiguriert. .equ PORTC_DDRC = 0b00001001 ; DDRC (Richtungsregister, 1=Output, 0=Input) .equ PORTC_PORTC = 0b00000000 ; Alle Bits an PORTC0 ausschalten ldi Tmp, PORTC_DDRC ; DDRC (Richtungsregister) setzen out DDRC, Tmp ldi Tmp, PORTC_PORTC ; Bits und Pullup-Widerstände setzen out PORTC, Tmp @Alle anderen: Hmm, nun wenn das Abschalten des TX nicht Usus ist, dann ist das ja in Ordnung. Ich kenne den genauen
-
Thread
AVR INT1 löst bei INT0 aus
sei(); // aktiviert Global Interrupts } ISR(INT0_vect) // ISR für INT0 { PORTC = 0b00001010; } ISR(INT1_vect) // ISR für INT1 { PORTC = 0b00000101; } /******************************************************************/ // main /***************************
Da M. schrieb im Beitrag #4770447: > ISR(INT0_vect) // ISR für INT0 > { > PORTC = 0b00001010; > } > > ISR(INT1_vect) // ISR für INT1 > { > PORTC = 0b00000101; > } Hallo, ich bin nicht unbedingt der Meinung, dass die Taster das ursprüngliche Problem sind..
-
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
Unerklärlicher Reset AtMega16 nach Tastendruck
= 0 ; // rot } erfrischung_an = 1; PORTC |= ( 1 << MAGNET_KALT ); //Magnetventile anschalten PORTC &= ~ ( (1 << MAGNET_TEIL) | (1 << MAGNET_WARM) ) ; } else if ((erfrischung_an == 1) &&
1 . Vielleicht sind die Zugriffe auf den Port auch zu dicht aufeinander ? Zb hier . {c] PORTC |= (1 << MAGNET_WARM) ; PORTC &= ~ ( (1 << MAGNET_KALT) | (1 << MAGNET_TEIL) ) ; [c\] Wieso das aber einen Reset auslösen sollte ?!
-
Thread
einfacher C-Code funzt nicht
= 1; else PORTC = 0; Peter
Test auf einen bestimmten Bit-Wert sowie das Setzen/Löschen nur eines Bits: if (PINC & 2) PORTC |= 1; else PORTC &= ~1;
-
Thread
PWM und AD-Messung Assembler
******************************************************** ;## 7 Segmentanzeige #define A_SEG PORTC,0 #define B_SEG PORTC,1 #define C_SEG PORTC,2 #define D_SEG PORTC,3 #define E_SEG PORTC,4 #define F_SEG PORTC,5 #define G_SEG PORTA,4 #define DP_SEG PORTB,4 #define
;## Taster #define S1 PORTB,5 #define S2 PORTA,3 ;## RS232 #define TX PORTC,6 #define RX PORTC,7 ;************************************************************************************** ;Makros Bank0 MACRO ;macro to select data RAM bank 0 bcf STATUS
-
Thread
2 PINS an dem PORTC besitzen ein dauerhaftes High Signal
programmieren aber das Problem ist, dass der Mikrocontroller an den PINS PC2(TCK)und PC3(TMS) trotz PORTC=0x00; ein High Signal liefert. Weis zufällig jemand an was dies liegen könnte ???
-
Thread
Sieben-Segmentanzeige: Problem mit "6"
Anzeige der Ziffern void displaynumber(int number){ switch (number){ case 1: PORTC = A; break; case 2: PORTC = B; break; case 3: PORTC = A+B; break; case 4: PORTC = C; break; case 5: PORTC = A+C; break; case 6: PORTC = B+C; case 7: PORTC = A+B+C; break; case 8: PORTC = D; break; case 9: PORTC = A+D; break; default: PORTC = 0x00; break;