-
Thread
AVR-Ausgänge abfragen
1000; i++) _delay_ms(1); } } int main(void) { DDRC |= (1<<DDC0) | (1<<DDC1); PORTC |= (1<<PC0); PORTC &= ~(1<<PC1); while (1) { delay_s(1); PORTC ^= (1<<PC0); PORTC &= ~(1<<PC1); PORTC |= ((1 && (PINC & (PINC0)))<<PC1); } return 0; } Eine
> PORTC |= ((1 && (PINC & (PINC0)))<<PC1); Diese Zeile solltest du dir nochmal genauer anschauen.
-
Thread
Midi Stepsequencer controller
' Tasten-Merker Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Dim I As Byte , J As Byte , X As Byte Config Portc.6 = Input 'launch btn Config
.2 = 1 ' internen Pull-Up aktivieren für Taster ' Portc.5 = 1 ' Portc.4 = 1 Portb.2 = 0 Portb.1 = 0 Goto Start_routine Start_routine: 'Welcome-screen Cls I = 0 Locate 1 , 1 Lcd "Welcome :)"
-
Thread
A/D-Wandler ATMega8 funktioniert nicht
// Auswertung der Meßdaten if (value==0) // falls 0 -> PORTC=0b00001000; // schalte rote LED (C3) ein if (value>0 && value<1024)// falls zwischen 0 und 1024 -> PORTC=0b00010000; // schalte gelbe LED (C4) ein if (value>=1024) // falls 1024 -> PORTC=0b00100000; // schaltet grüne LED (C5) ein wartekurz(); PORTC=0x00; // schaltet LED aus wartekurz(); } }
-
Thread
Register erstellen mit vorhandenen Pins
... uint8_t sreg = SREG; cli(); PORTA = (uint8_t) val; if (val & (1 << 8)) PORTC |= (1 << 1) else PORTC &= ~(1 << 1); if (val & (1 << 9)) PORTC |= (1 << 6) else PORTC &= ~(1 << 6); if (val & (1 << 10)) PORTC |= (1 << 3) else PORTC &= ~(1 << 3); if (val & (1 << 11)) PORTC |= (1 << 5) else PORTC &= ~(1 << 5); SREG = sreg; } [/c]
-
Thread
Brauche mal Hilfe bei Mikrobasic programm
= 134 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 2 'else portc =0 end if if ausgabe > 1 then portd = 135 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 1 'else portc =0 end if if ausgabe > 0 then portd
ausgabe > 80 then portd = 128 ' stelle 8 berechnen 80 db ausgabe = ausgabe - 80 'else portc =0 end if [/c] du kannst (und willst) hier nicht den kompletten Port als ganzes mit einer Zahl bestücken, sondern nur EIN EINZIGES BIT daran umstellen. Wie das in Mikrobasic geht, kann
-
Thread
Befehlszusammenfassung in C
eine ziffer und dann eine 0byte für das ende. Damit überschreibst du dir den speicher, vermutlich geht irgendetwas aus diesem grund nicht.
); 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 lcdGoto(2,1); lcdWrite("Wecker: : "); stellen(); if ((h==hr
-
Thread
ATMega8 / BASCOM / Int. Osc. factory setting / LCD
======================== $regfile "m8def.dat" $crystal = 1000000 CONFIG Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 CONFIG Lcd = 16 * 2 Lcd_on ALIAS Portc.7 (Gibt die 2mA Power fur die LCD) DIM I as byte SET Lcd_on 'SCHALTET
initialisiert das LCD über CONFIG Lcdpin und CONFIG Lcd, während das LCD selbst spannungslos ist. Das geht schief. Also VCC des Displays wirklich an +5VDC hängen. Zudem sollte nach der Initialisierung (CONFIG Lcdpin und CONFIG Lcd) noch ein kleines Momentchen gewartet werden, bevor Text ausgegeben wird.
-
Thread
SPI Kopplung von ATmega8 und ATtiny 2313
Servonummer 1-6 ldi R16,0b11110111 and R15,R16 ; Bit 3 löschen Daten_An_Slave2:cbi PORTC,2 ; Slaveselect durch PORTC2 auf low rcall Datentransfer sbi PORTC,2 ; deselektieren ret Daten_An_Slave1:cbi PORTC,1 ; Slaveselect durch PORTC1 auf low rcall Datentransfer sbi PORTC,1 ; deselektieren ret [/avrasm] und jetzt der ATTiny 2313 [avrasm] mainloop: ;wdr sbic PINB,0 ; warten bis Slaveselect, low-Pegel an SS startet den Ablauf rjmp mainloop
-
Thread
Programmoptimierung
raus. Interessant wäre hierzu eine Hysterese. Wert darf sich innerhalb 20 und 30 befinden - Wert geht auf 30,2 - Alarm geht an, Ausrufezeichen kommt - Knopf wird gedrückt, Hupe geht aus, Ausrufezeichen bleibt - jedoch, erst wenn der Wert die 29 erreicht hat, geht auch das Fragezeichen weg. Auch, wenn
[code] [code]geht auch, wie ich es hiermit beweise... [/code]
-
Thread
JTAG deaktivieren ATMega16
konnte ich > den µC leider nicht mehr neu beschreiben. Tja, über welchen Weg denn? Über JTAG geht es dann natürlich nicht mehr, das sollte doch wohl klar sein, oder??? Was bleibt, ist SPI, dafür ist Bit 5 zuständig. Das steht auf 0, was bedeutet: SPI ist enabled. Geht SPI trotzdem nicht, ist
11011001. Also ist Bit 6=1, also ist JTAG disabled, > also genau, was du willst. Komisch den auf PORTC bekomme ich leider keinen Strom mit diesen fusebits. c-hater schrieb im Beitrag #3397475: > Was bleibt, ist SPI, dafür ist Bit 5 zuständig. Das steht auf 0, was > bedeutet: SPI ist enabled. Geht
-
Thread
Problem Bascom Uhr
hwstack = 32 $swstack = 10 $framesize = 40 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcdbus = 4 Cursor Off Ddrb = &B11111111 Ddrd = &B00000000 Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 =
hab baud raus gemacht geht trotzdem nicht. noch jemand ne idee? bin für jede hilfe dankbar.
-
Thread
Led glimmt leicht mit ISP ohne Funktion
>Wenn die LED ausgeht, Wo geht die LED hin, wenn sie ausgeht?
reserviert $framesize = 40 'im Speicher werden für den Frame 40 Byte reserviert Config Portc.0 = Output 'Ein Pin wird als Ausgang konfiguriert PC0 (also Pin0 von Port C) Do Portc.0 = 1 'Pin wird auf High, also 5V geschaltet Waitms 100 Portc.0 = 0
-
Thread
Tutorials zu PIC C Syntax und co.
noch nötigen Compilerspezifischen Befehle sind irgendwo im Compilerhandbuch versteckt. Also auf gehts......
Archived.aspx So nun noch mal ne konkrete Frage: Das Programm läuft im Simulator, d.h. wenn PORTC=0x01 dann geht PORTD auf 0x0F, sonst auf 0xFF. In der Theorie funzts nur auf dem Bread Board nicht. Woran kann das liegen? (ich leg den PIN 0 vom PORT C auf VDD, also +5V)
-
Thread
LCD 8 * 2 Bascom
regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 8 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Hello
geteile zeile ist.. isses aber wohl doch nich... als 16 * 2 kann ich ihn natürlich definieren, dann geht er auch. alleridngs ist das unschoen, weils ja nur nen 8 * 2 is...
-
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
Coundown Timer
ever { number_output (0); cli(); // switch off interrupts for blank display PORTC = 0b00001111; _delay_ms (500); sei(); _delay_ms (200); // switch on interrupts for 00:00 display } return 0; } [/c] hier LED_display.h [c] // 4 x 7 digit LED display
Michael H. schrieb im Beitrag #6801590: > PORTC &= ~(1 << pin); PORTC = ~(1<<pin);
-
Thread
if Verschachtelung
Programm bleibt in der ersten if Abfrage hängen die LED blinkt aber >wenn die Spannung <= 7400 geht es nicht mehr in die andere if Abfrage. Ja, klar! Wie auch? Du hast eine while(1) Schleife programmiert!
aus sein nur die Statusled soll rot schnell blinken. Wie schreiben ich das in C switch / case geht ja auch nicht da dort kein Bereichsüberprüfung gemacht werden kann.
-
Thread
Analog Devices: DDS IC (AD9959) mit ATMega64L ansteuern SPI
wie vor nichts >von sich. Erstmal solltest du auch den Lesevorgang hinbekommen. Wenn das nicht geht ist was grundlegendes faul. MFG Falk
ftemp>>8) & 0xFF ) ); /* Bit15..8 */ send_spi( (uint8_t) ( ftemp & 0xFF ) ); /* Bit7..0 */ PORTC |= (1<<AD9959_nCS); /* Übertragung beendet */ PORTC |= (1<<AD9959_IOUPDATE); /* Werte übernehmen */ for( dummy=0; dummy<10; dummy++ ); PORTC &= ~(1<<AD9959_IOUPDATE); } send_spi macht
-
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
Von Türkisch auf Deutsch (ASM)
LCD_TIZ MOVF LSB,W MOVWF TIZ CALL GOSTER CALL TIZYAZ GOTO TIZTEST TIZYAZ BCF PORTC,0 BCF PORTC,1 BCF PORTC,2 BCF PORTC,3 BTFSC TIZ,0 CALL SET0C BTFSC TIZ,1 CALL SET1C BTFSC TIZ,2 CALL SET2C BTFSC TIZ,3 CALL SET3C RETURN ;***********
************************ SET0C BSF PORTC,0 RETURN SET1C BSF PORTC,1 RETURN SET2C BSF PORTC,2 RETURN SET3C BSF PORTC,3 RETURN SET4C BSF PORTC,4 RETURN SET5C BSF PORTC,5 RETURN SET6C BSF PORTC
-
Thread
Beruflich für ARM CORTEX fit machen
PORTB = PORTB & (~(1 << iPin)) | (((uint8_t) value) << iPin); case 2: PORTC = PORTC & (~(1 << iPin)) | (((uint8_t) value) << iPin); } } int main (void) { setPin (0, 3, 1); setPin (1, 2, 0); }[/c] Auf einem STM32F103 Cortex-M3 könnte man das so ändern: [c]void
: > PORTB = PORTB & (~(1 << iPin)) | (((uint8_t) value) << iPin); > case 2: > PORTC = PORTC & (~(1 << iPin)) | (((uint8_t) value) << iPin); > } > } > > int main (void) { > setPin (0, 3, 1); > setPin (1, 2, 0); > } Alles klar ja das ist gut, da spart man sich dann schon
-
Thread
Ultraschall-Sensor Firmware funktioniert nicht
if(z <= 140) enable_led_portc(1); if(z > 140) enable_led_portc(0); } void enable_led_portc(int y) { DDRC = 0xFF; PORTC = 0x00; //alle LEDs ausschalten zu Beginn switch(y) { case 0 : PORTC
if(z <= 140) enable_led_portc(1); if(z > 140) enable_led_portc(0); } void enable_led_portc(int y) { DDRC = 0xFF; PORTC = 0x00; //alle LEDs ausschalten zu Beginn PORTC = (1<<y); } [/c]
-
Thread
LCD will nicht mit BASCOM und ATmega16
.4 jetzt: Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 ich hab die Ports jetzt schon x mal ueberprueft und finde keinen Fehler mehr im Anschluss. Im µC laeuft eine Schleife
die gleichen. Nachdem ich DB7 wieder angeschlossen habe kommt jetzt der AHA Effekt. Das Display geht. Aber warum? Config LCDBus hab ich wieder aus dem Programm entfernt. Das Programm ist das gleiche wie gestern Abend. Die Anschluesse sind auch 100% identisch. Gestern gings nicht, heute geht es. Es
-
Thread
PORTA RA0 bis RA3 auf input setzen
pin's //**********Define********************************************** #define LEDl PORTC.RC0 //LED low liegt an Port RC0 #define LEDh PORTC.RC2 //Led high liegt an Port RC2 #define SIGNAL PORTA.RA4 //SIGNAL liegt an Port RA4 #define meml PORTC.RC4
wertl; void main(void) { // Hauptprogramm TRISC = 0x30; // set PORTC 0-3=output, 4+5=input PORTC = 0x30; // set PORTC 0-3 0V
-
Thread
TLC5940 mit XMEGA ansteuern
TLC verbunden definiert ist er als Ausgang und initial auf High gesetzt [c]#define GSCLK_PORT PORTC #define GSCLK_PIN 2 //SIN TLC = MOSI #define SIN_PORT PORTC #define SIN_PIN 5 //SCLK TLC = CLK #define SCLK_PORT PORTC #define SCLK_PIN 7 //Blank TLC = SS #define BLANK_PORT PORTC #define BLANK_PIN 4 #define DCPRG_PORT PORTC #define DCPRG_PIN 0 #define VPRG_PORT PORTC #define VPRG_PIN 3 #define XLAT_PORT PORTC #define XLAT_PIN 1 //MISO wird nicht gebraucht #define MISO_PORT PORTC #define MISO_PIN 6 [/c]
-
Thread
LED Ansteuerung
Genau das ist falsch beschaltet. Das geht nur mit PNP oder P-Channle Fet
auch wenn ich sie aufteile....es geht nicht
-
Thread
AVR Studio Zahlenschloss Programm Problem
nicht - da gibts probleme... erstmal zur Funktion selbst: Es gibt 2 Leds, Rot und Grün. Rot an PORTC 0x02; grün an PORTC 0x01; dann ein Relais an 0x04. als "Tastatur" habe ich erstmal einen BCD-Dekodierschalter genommen, welcher mit einem druck auf einen Taster an PINC 0x08 bestätigt wird.
} if (PINC==0x00) i++; } if (code=='1990') { PORTC=0x05; _delay_ms(3000); PORTC=0x00; i=0; } else { PORTC=0x02; _delay_ms(3000); i=0; } } }
-
Thread
ATMega88 und INT0
(PORTC,4); } Bin für jede Hilfe dankbar Gruß Ben
PORTC &= ~(1<<PC4); delay_ms(100); PORTC |= (1<<PC4); } Bin für jede Hilfe dankbar
-
Thread
Timerinterrupt und Pointer in gcc
Werte; //Die ausgelesenen Werte mittels Pointer dem array zuweisen } Nun erstmal die Hauptfrage: Geht das einfach so? Ich habe es natürlich schon probiert und es geht bei mir nicht. Ich weiß aber nicht woran es liegt. Zeitkritisch ist es nicht, da der Interrupt nur alle 30ms aufgerufen wird. Wenn ich
(pdata ==&dataraw[SIZE]) { PORTC &= ~(1<<PC5); anzahl=0; pdata=&dataraw[0]; PORTC |=(1<<PC5); } } } [/c]
-
Thread
Countdown ATMega8
var = 0; digit++; if (digit > 4) { digit = 1; } } PORTC |= 0x1E; PORTC &= ~(1 << digit); PORTD = damn[counts[digit - 1]]; } [/c]
data[0] = zahl % 10; } // Multiplexansteuerung der Anzeige ISR(TIMER0_OVF_vect) { PORTC |= 0x1E; // alles aus digit++; if (digit > 3) digit = 0; PORTD = damn[data[digit]]; // Muster für neues Digit PORTC &= ~(1 << (digit+1)); // Digit einschalten }
-
Thread
Arduino Leonardo stellt sich tot
Hallo, sorry wegen den fehlenden Infos. Ich versuch alles so gut es geht zu vervollständigen. Der Reset Taster geht überhaupt nicht mehr(keine Reaktion). An Fuses in Atmel Studio sind eingestellt: BODLEVEL: 2V6 ISPEN ist ausgewählt BOOTSZ: 2048W_3800 SUT_CKSEL:
Main/arduino-leonardo-schematic_3b.pdf. Die Onboard-LED hängt am Arduino-Pin IO13, also an PC7 von PORTC!
-
Thread
ATmega16 IO-Pins Konfiguration
[Pre] $regfile = "m16def.dat" $crystal = 8000000 ';;;;LCD-Initialisierung Rw Alias Portc.5 'Alias für den RW pin am LCD Helligkeit Alias Portc.7 'Alias für den Pin zur Steuerung der Helligkeit der LCD-HIntergrundbeleuchtung
Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.6 , Rs = Portc.4 Config Lcd = 20 * 2 Initlcd 'Cursor Off Cls ';;;; ';;;;Encoder-Initialisierung Config Portb.2
-
Thread
SPI Geschwindigkeit XMega
void) // SPI an PORTC einstellen { cli(); // Interrupts deaktivieren SPI_PORT.CTRL = 0b01010000; // SPI master, clock idle low, data setup on trailing edge, data sampled on leading edge, Geschw
taktzyklengenaue) Ansteuerung, erst dann ergibt so ein Burst-Betrieb irgendeinen Sinn. Ja, das geht nicht mit C, but who cares... In C geht es immerhin, wenn man DMA dafür benutzen kann. Aber am Ende jeder DMA-Sequenz steht dann doch wieder eine ISR... Und wie wenig effizient in C implementierte
-
Thread
LCD an ATmega644 (später ATmega8) mittels TWI/I2C (Anfängergerecht)
Bits als Steuerleitungen ebenfalls möglich. Das hilft mir zwar weiter, aber die Frage warum es mit PORTC oder PORTD nicht funktioniert bleibt bestehen. Danke.
lcd_gotolc(); geht bei 1,1 los, nicht 0,0. Wenn sonst die Textausgabe funktioniert, sollte diese Funktion auch laufen.
-
Thread
GLCD DG12864-12 / Bascom
'3 +5V +5V '4 -9V -9V potmeter '5 /WR PORTC.0 '6 /RD PORTC.1 '7 /CE PORTC.2 '8 C/D PORTC.3 '9 NC not conneted '10 RESET PORTC.4 '11-18 D0-
'3 +5V +5V '4 -9V -9V potmeter '5 /WR PORTC.0 '6 /RD PORTC.1 '7 /CE PORTC.2 '8 C/D PORTC.3 '9 NC not conneted '10 RESET PORTC.4 '11-18 D0-
-
Thread
40x4 LCD Modul Probleme
gibt das dann an den oberen controller weiter") Wenn ich "LCD_Command_TOP(0x38)" dazuschreibe geht es perfekt! Was lerne ich daraus: Datenblätter sind nicht perfekt und enthalten auch Fehler! Danke!
. Das > Ding dürfte nicht ohne Warnings compilieren. Was? Erste Zeile in den Funktionen: PORTC = i; Das ist nicht "nichts damit machen" ...
-
Thread
Digitalpoti, Dimensionierung Widerstandsarray 8bit 10-500Ohm
an Port C0 4Ohm an Port C1 8Ohm an Port C2 .. hänge funktioniert es nicht. Aber auch wenn ich Portc := XOR n; //na zählt von 0..255 mache funktioniert es nicht
> 4Ohm an Port C1 > 8Ohm an Port C2 > .. > hänge funktioniert es nicht. > Aber auch wenn ich Portc := XOR n; //na zählt von 0..255 > mache funktioniert es nicht ??? Was zum... willst du denn machen und wo kommt auf einmal PortC her? Die Schaltung von WIRO funktioniert nur mit niederohmigen
-
Thread
ATtiny24A, Power-down
er wieder in den Tiefschlaf gehen. Am Besten, daß unter anderem kein Oszillator mehr an ist. Geht das überhaupt und wenn ja, wie? Danke Mathias
Mathias H. schrieb im Beitrag #5992270: > Geht das überhaupt und wenn ja, wie? Das geht. Schau dir dazu die Library #include <avr/sleep.h> an. Du brauchst im Code [c]set_sleep_mode(SLEEP_MODE_PWR_DOWN);[/c] und aktiviert wird der Sleepmode
-
Thread
Atmega8 und I2C-Display startet nicht
<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); } void Port_init() { DDRB |=(1<<PB0);// PB0 Ausgang (LED) PORTC |=(1<<PC4);//PC4 Pullup (SDA) PORTC |=(1<<PC5);//PC5 Pullup (SCL) } void I2C_init() // (100KHz) { TWSR = 0; TWBR = 12; } void uart_send_string(const char *s) { while(!(UCSRA&(1<<UDRE
ausgegeben, das hat wohl zuviel Verzögerung gebracht. Hab alles UART-Anzeigezeugs rausgenommen und ES GEHT. Ich hab den NoBlinkCursor nach rechts verschoben und XY anpeilen geht auch. :-p Ich frag mich jetzt nur, warum eine FOR-Schleife nicht geht?! for(i=0;i<10;i++) CursorMoveRight In Kurzform geschrieben
-
Thread
IO-Pins als Bitfeld zusammenfügen und maskieren (AVR)
//welche Ports werden für die Motoren verwendet volatile uint8_t * Port_Mask[ARRAY_LENGTH] = { &PORTC, &PORTC, &PORTC, &PORTC, &PORTA, &PORTA, &PORTA, &PORTA, &PORTB }; //mit welchen Pins sind die Motoren verbunden uint8_t Pin_Mask[ARRAY_LENGTH] = {PC7, PC6, PC5, PC4, PA7, PA6, PA5, PA4, PB0};
pin) //»a->b« Kurzform für »(*a).b« #define SBIT(x,y) SBIT_(x,y) #define MOTOR1 SBIT( PORTC, 7 ) #define MOTOR1_DDR SBIT( DDRC, 7 ) #define MOTOR2 SBIT( PORTC, 6 ) #define MOTOR2_DDR SBIT( DDRC, 6 ) #define MOTOR3 SBIT( PORTC, 5 ) #define MOTOR3_DDR SBIT( DDRC, 5 ) #define
-
Thread
Problem mit UART
Hallo, ich bin ein Anfänger und habe dieses Programm für meinen atmega32 geschrieben: Config Portc.7 = Output Dim I As Byte Do I = Inkey() If I = 0 Then Portc.7 = 1 Exit Do else Portc.7 = 0 Print "1" End If Loop Dieses Programm soll den UART auslesen
danke, aber leider funktioniert es immer noch nicht. Mein Code sieht jetzt so aus: Config Portc.7 = Output Dim I As Byte Do If Ischarwaiting() <> 0 Then I = Inkey() If I = 1 Then Portc.7 = 1 Print "0" else Portc.7 = 0 Print "1" End If End If Loop
-
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
LCD an Atmel - ENable-Pin auf anderen Port
Machen die nicht sichtbaren Codeteile (insbesondere die PWM Initialisierung) noch was mit DDRC oder PORTC? Vielleicht machen die die lcd_int() für die EN Leitung unwirksam.
Nachfrage oder Schweigen. [aufreg aus] Wie sieht Messung() aus? Beim Atmega88 ist der ADC an *PORTC* und du hast dein LCD RS an *PORTC*. Beeinflusst die Initialisierung des ADC den Pin PC5? Der/die Pin(s) an PORTC werden ja von IO-Pins auf ADC-Pins umgeschaltet. Wird PC5 davon auch ausgenommen?
-
Thread
Hardware PWM Timer1 funktioniert nicht
PINA0))) { PORTC &=~ (1<<PB0); } if(PINA &(1<<PINA0)) { PORTC |= (1<<PB0); } if(!(PINA &(1<<PINA1))) { PORTC &=~ (1<<PB1); } if(PINA &(1<<PINA1)) { PORTC
Karl Heinz hat doch geschrieben, wie es schneller geht: Indem Du den Wert nicht nur um eins erhöhst sondern einen größeren Wert (STEP).
-
Thread
Atmega 2560 zu wenig Spannung am Ausgang
ATMega Pin: 59 Stiftleiste2:13 #define portIN2_13 PORTJ #define portIN1_13 PORTB #define portEN_13 PORTC #define portOCD_13 PORTC #define ddrIN2_13 DDRJ #define ddrIN1_13 DDRB #define ddrEN_13 DDRC #define ddrOCD_13 DDRC Und dann im main: portEN_13 |= (1<<EN_13); // Ich denke der Code ist in
PortC R.I.P.
-
Thread
problem: led blinken (über timer interrupt)
Entwicklungsumgebung AVRStudio folgendes problem mit nachfolgendem Code: Nach reset wird auf PortC 0b?1111111 ausgegeben. Wenn der Timer Interrupt kommt, wird PortC eingelesen, invertiert und wieder auf PortC ausgegeben. (sollte dann etwa auf 0V ausgegeben werden). An den Ports liegt allerdings
hi stefan, hast du es schon probiert? geht es ? grüsse
-
Thread
"genaue" Frequenz mit Timer ISR erzeugen
//limit counter for 12,5kHz if (counter==8) counter=0; if (counter<=1) PORTC|=(1<<PC0); if (counter>1) PORTC&=~(1<<PC0); } [/c] Das Ausgangssignal an PC0 müsste ja jetzt 12,5kHz sein. Wie erwähnt, möchte ich diese Frequenz sehr genau realisieren. Assemblerkenntnisse
&=~(1<<PC0); [/C] -> [C] if (counter < 1) PORTC|=(1<<PC0); else PORTC&=~(1<<PC0); [/C] Das geht erstens schneller und verhindert zweitens einen Fehler, wenn du das Länge des Highpulses anpasst. Der Highpuls wird nur noch an 1
-
Thread
[F] 7-Segment multipl.
int einer = (zahl-(hunderter*100) - (zehner*10)); if(Merker == 0) { PORTC &= ~(1<<PC5); PORTC &= ~(1<<PC3); PORTC |= (1<<PC4); Display(einer); Merker ++; _delay_ms(2); } if(Merker == 1) { PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC3); PORTC |= (1<<PC5); Display(zehner); Merker ++; _delay_ms(2); } if(Merker == 2) { PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); PORTC |= (1<<PC3); Display(hunderter); Merker = 0; _delay_ms(2); } } [/c] Dieser Code wird über ein Interrupt regelmäßig ausgelöst! PORTC3
-
Thread
atmega32: Inputverhalten PORTB
main() { DDRB = 0x00; DDRC = 0xFF; while( 1 ) { if( PINB & ( 1 << PB0 ) ) PORTC |= ( 1 << PC5 ); if( PINB & ( 1 << PB1 ) ) PORTC &= ~( 1 << PC5 ); } } [/C] das wär mein Hardware-Testprogramm. Die LED muss mit PB0 ein und mit PB1 ausschaltbar sein. Geht
mit dem Einfachst-Testprogramm? Auch beim Minimalprogramm gibts keinen Unterschied. An PORTB gehts nicht an PORTA gehts.
-
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