-
Thread
V : Basic-Compiler FAST-AVR
(temp1) temp1= temp1 And &b00001111 PORTC=temp1 lcd_enable() temp2=temp2 And &b00001111 PORTC=temp2 lcd_enable() WaitUs 5 End Sub Sub lcd_init() WaitMs 250 PORTC=&b00000011 lcd_enable() WaitMs 5 lcd_enable
() WaitMs 5 End Sub Sub lcd_enable() PORTC.4=1 Nop 3 PORTC.4=0 End Sub
-
Thread
xmega timer mit AND verbinden
Clear Bit in I/O Register I/O(A, b) ← 0 1 Clocks Ein Beispiel mit einem ATmega Anfang: cbi PORTC, 6 ;1Takt LOW sbi PORTC, 6 ;1Takt HIGH cbi PORTC, 6 ;1Takt LOW sbi PORTC, 6 ;1Takt HIGH cbi PORTC, 6 ;1Takt LOW sbi PORTC, 6 ;1Takt HIGH cbi PORTC, 6 ;1Takt LOW nop ;1Takt nop
Carsten-Peter C. schrieb im Beitrag #7724890: > Ein Beispiel mit einem ATmega > Anfang: > cbi PORTC, 6 ;1Takt LOW > sbi PORTC, 6 ;1Takt HIGH Atmega musst du schon näher spezifizieren. Die Classic-ATmegas brauchen für cbi und sbi je zwei Takte.
-
Thread
TIPP: Atxmega DFU-Bootloader auf eigenen "Boot-Pin" verbiegen (direkt im Hex-File)
Offset von 0x20 zum nächsten hat ist es recht einfach. Für den Atxmega32a4u bei dem der Default-Port PORTC.3 und man ihn auf PORTA.2 ändern will sieht das so aus: [pre] Vorher Adresse | Nachher Adresse PORTC_DIR 0x640 | PORTA_DIR 0x600 PORTC_IN 0x648 | PORTA_IN
020000020000FC :1080000000C00091780005FD6AC0F092400608E1CA ^^^^-> PORTC_DIR = 0x0640 :10801000009353060FEF0A950023E9F700914806F5 ^^^^-> PORTC_PIN3CTRL ^^^^-> PORTC_IN = 0x0648 :1080200003FFECC0E0E0F0E0079116910F3F19F478 ^^-> PIN3 [/pre] und
-
Thread
PIC16F886 Interupt on Change RB7 läuft nicht
swapf STATUS,W bcf STATUS, RP0 movwf Status_save MOVFW PORTC XORLW B'00000001' MOVWF PORTC MOVFW PORTB Intende_ BCF INTCON,RBIF bcf INTCON, T0IF swapf Status_save, w movwf STATUS swapf W_save
movwf W_save swapf STATUS,W bcf STATUS, RP0 movwf Status_save MOVFW PORTC XORLW B'00000001' MOVWF PORTC nop MOVFW PORTB MOVLW B'10000000' MOVWF PORTB nop nop Intende_ BCF INTCON,RBIF bcf INTCON, T0IF bcf
-
Thread
ATMega 16 Probleme mit PortC als Output
Das wär was für Andreas: Ein Automat, der bei jedem Posting, in dem die Begriffe PortC und Mega16 oder Mega32 vorkommen, mit "JTAG Fuse" antwortet. Ich glaub das würde sich lohnen.
Naja.. fast ;) http://www.mikrocontroller.net/forum/list-1-1.html?filter=portc
-
Thread
ATMEGA8 Binäruhr Problem
PORTC, 4 rcall leuchten rjmp rm4 sek32: cbi PORTC, 5 rcall leuchten rjmp rm5 min1: cbi PORTC, 0 rcall leuchten rjmp rm0 min2
PORTC, 4 rcall leuchten rjmp rm4 min32: cbi PORTC, 5 rcall leuchten rjmp rm5 std1: cbi PORTC, 0 rcall leuchten rjmp rh0 std2
-
Thread
Atmega48 Port C als Ausgang?
den PORT C als Ausgang nutzen. Jedoch messe ich bei den Ausgängen nur sehr geringe Spannungen. PORTC0= 2,8V PORTC1= 1,7V PORTC2= 2,8V PORTC3= 5,0V //so sollte es sein. Ich versuche mit jedem Ausgang einen Transistor zu schalten, welche mir ein Relais durchschalten. Leider funktioniert es nur
) //Motor 2 down on. #define M1_AUF_AUS PORTC &= ~(1<<PC0) //Motor 1 up off. #define M1_AB_AUS PORTC &= ~(1<<PC1) //Motor 1 down off. #define M2_AUF_AUS PORTC &= ~(1<<PC2) //Motor 2 up off. #define M2_AB_AUS PORTC &
-
Thread
Problem bei der Warte-Routine bei der Steuerung eines Schrittmotors
Ein-/Ausgang out DDRC,r16 ldi r16,0b00101010 : Schrittmotor Modus setzen out PORTC,r16 ldi r18,50 : Zahl der Schritte clock: cbi PORTC,3 : Port C als Clock rcall warte sbi PORTC,3 rcall warte dec r18 brne clock loop2
Hi > cbi PORTC,3 : Port C als Clock > rcall warte > sbi PORTC,3 > rcall warte > dec r18 > brne clock Damit wird der Takt für den Treiber erzeugt. Das fehlt in deinem Programm völlig.
-
Thread
BASCOM PORTC.2 not found
Ich habe hier in einem Programm was ich auf einen Atmega 32 übertragen möchte ein Problem mit dem PORTC.2. Der Portc.2 soll einen Alias bekommen über die Codezeilen: 'R6 r6 alias portc.2 config r6 = output Beim compilieren meldet Bascom dann den Fehler: .DEF not found PORTC.2 Ich gehe jetzt mal davon aus das der Portc.2 in meiner .def nicht gelistet ist. Gibt es da eine neuere .def oder was mache ich falsch? Schö mit Ö...
-
Thread
PIC16F57 Initialiesierung
Oh ja entschuldige der PIC hat wirklich nur PORTA, PORTB, PORTC Mein Fehler !!! Weiss nun wer wie man den PIC vernümpftig Initialisiert???
Da fehlte natürlich was... > PORTB EQU H'0006' PORTC EQU H'0007 > loop1 Equ 0x08
-
Thread
#define soll gleichzeitig Setzen und Löschen
Dacht ich auch zuerst, aber der restliche Port wird auch verwendet, es dürfen also nur PORTC0 bis PORTC3 verändert werden.
#1877070: > Dacht ich auch zuerst, aber der restliche Port wird auch verwendet, es > dürfen also nur PORTC0 bis PORTC3 verändert werden. Genau das macht das Makro doch. Zuerst wird 0x07 invertiert, ergibt eine Bitmaske 0b11111000. der PORTC-Zustand wird damit ver-UND-et, d.H. alle bits bis auf die
-
Thread
RS485 Schaltung funktioniert nicht
die anderen Pins auf den Port bleiben high obwohl ich die auf low setze: [c] DDRC = 0xFF; PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); [/c] Alle Pins auf Ausgang und Pin4 und 5 auf low... Edit: PIN3 kann ich schalten, 4 und 5 nicht, wird wohl am Prozessor liegen. Ich nehm mal ein anderen Pin
LED_DDR DDRA #define LED_PORT PORTA #define TR_DDR DDRC #define TR_PORT PORTC #define TR_PIN 3 #define LED1 0 #define LED2 1 //#define TRANSMIT_ON PORTC |= (1<<PC3) //#define TRANSMIT_OFF PORTC &= ~(1<<PC3) //Statusdefinition #define
-
Thread
ATmega8a defekt?
regfile = "m8adef.dat" $crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 Config Portc.5 = Output Do Portc.5 = 1 Wait1 Portc.5 = 0 Wait 1 Loop End Übertragen habe ich die .hex Datein mit Hilfe des AVR Studios 6. Tools -> Device Programming -> ATmega8a
Versorgungsspannung resp. Masse angeschlossen, oder? Johannes A. schrieb im Beitrag #3038075: > Do > > Portc.5 = 1 > > Wait1 > > Portc.5 = 0 > > Wait 1 > > Loop Bin kein Bascom Spezi, aber entweder 'Wait1' oder 'Wait 1' ist falsch.
-
Thread
SNES Controller auslesen mit AVR Atmega88
ldi TEMP, LOW(RAMEND) out SPL,TEMP; Stack für rcall vorbereiten ldi TEMP, 0x00 out DDRC, TEMP; PORTC auf Eingang ldi TEMP, 0xFF out DDRB, TEMP; PORTB auf Ausgang out DDRD, TEMP; PORTD auf Ausgang ldi TEMP, 0b01111111 out PORTC, TEMP; PORTC0 auf Eingang schleife: ldi BUTTONS, 0xFF; Buttons
zB auch so: schreibe in BUTTONS 0x00 ; nur zum Init read_and_shift: lese PORTC ein ;Annahme dass Signal an PORTC0 anliegt. wenn gedrückt 0. schreibe PORTC in Register BUTTON and BUTTON,0x01 ;falls PORTC an anderen Stellen ungewünschte Werte hat or BUTTONS,BUTTON lsl
-
Thread
AVR: Komischer Fehler nach dem Ein- / und Ausschalten
void PortInit(void) { DDRD=0x00; //Eingang LDE;NDG DDRC=0xFF; //Ausgang W1-Zündung PORTC=0xFF; //Anfangszustand; lowactic DDRF=0x00; //Eingang AD-Konverter DDRB=0xFF; //Ausgang PORTB=0x00; } /****************************TIMER1-Initialisierung*****************/ void
COMPA_vect) //Zündung erste Halbwelle { if (gezuendet_A=1) { PORTC &= ~(1<<PC0); //T1 AN W1 Low Aktiv OCR1B = ALPHAnutz + 400; //ALPHAnutz + LAMBDA; zweiteHalbwelle = 1; weiterZuenden = 1; } } ISR (TIMER1_COMPB_vect) /
-
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
ATXMEGA, TWI und die internen pullups
TC_CLKSEL_DIV8_gc; // Activate timer 0 and divide system clock by 8 => f=4MHz, t=250ns // Setup PORTC pin2 & pin3 as output to toggle status LEDS PORTC.DIR = PIN2_bm | PIN3_bm; // Set pins as output PORTC.OUT = PIN3_bm | PIN3_bm; // Switch LEDs off // Setup TWI bus TWIE.MASTER.BAUD
PORTC.OUTSET = PIN3_bm; // Reset TWI-Busy status LED // Send TWI data i = 0; do { // Send one byte to TWI slave PORTC.OUTCLR = PIN3_bm; // Set TWI-Busy status LED
-
Thread
Display Module CFAF320240F-TS Ansteuerung --- ATMEGA 128 ---- STK600
/ Chip Select #define LCD_RES PC2 // RESET // macros for control lines #define CLR_CD PORTC &= ~(1<<LCD_CD); #define SET_CD PORTC |= (1<<LCD_CD); #define CLR_CS PORTC &= ~(1<<LCD_CS); #define SET_CS PORTC |= (1<<LCD_CS); #define CLR_RESET PORTC &= ~(1<<LCD_RES); #define SET_RESET PORTC |= (1<<LCD_RES); #define CLR_WR PORTC &= ~(1 << LCD_WR); #define SET_WR PORTC |= (1 << LCD_WR); #define CLR_RD PORTC &= ~(1 << LCD_RD); #define SET_RD PORTC |= (1 << LCD_RD); // color definitions
-
Thread
Probleme mit AVR Output - Denkanstoß gesucht
anderen bereits erfolgreich getestet hatte). Ich habe einen Atmega1284 und dabei Probleme mit dem PORTC. Initialisiert habe ich den Port mit: DDRC = 0x7F; PORTC |= (1 << 0) | (1 << 1);// SDA + SCL high Ich habe nun allerdings Probleme das ich die PORTC Pins 2 - 7 nicht auf 1 gesetzt bekomme
> PORTC JTAG?
-
Thread
Servo Ansteuerung funktioniert nicht / Bascom
Kanal = 1 Then If Portc.5 = 0 Then Timer1 = Servo(2) Portc.5 = 1 Else Portc.5 = 0 Incr Kanal End If End If If Kanal = 2 Then If Portc.6 = 0 Then Timer1 = Servo(3) Portc
Kanal = 1 Then If Portc.5 = 0 Then Timer1 = Servo(2) Portc.5 = 1 Else Portc.5 = 0 Incr Kanal End If End If If Kanal = 2 Then If Portc.6 = 0 Then Timer1 = Servo(3) Portc
-
Thread
Schieberegister SN54HC595 mit Atmel atmega 88 ansteuern
Taster T */ //Parameterliste: unsigned int zaehler_taster =0; pin_aus(PORTC,PC4);// Ausgangssteuerung bleibt aktiv. pin_ein(PORTC,PC5);// Seriellen Eingang = 1. pin_ein(PORTC,PC1);// SChiftregister nicht reseten. while (1) { /* Ziel1: LED soll entsprechend
PB0))) { zaehler_taster++; if(zaehler_taster==1) { pin_ein(PORTC,PC2);//um 1 bit schieben. pin_aus(PORTC,PC2);//schieben beenden. pin_ein(PORTC,PC3);//speichern beginnen. pin_aus(PORTC,PC3);//speichern beenden. } }
-
Thread
AVR ATMEGA 8
io.h> int main(void) { DDRC = 1; unsigned long i; for(;;) { PORTC = PORTC & 254; i=0; while(i<=1000) { i++; } PORTC = PORTC | 1; i=0; while(i<=5000) { i++; } } return 0;
, ohne die anderen Bits in DDRC zu ändern. Pins Ein/Ausschalten macht man auch eher nicht mit PORTC = PORTC | 1 und PORTC = PORTC & 254. Wenn ein Pin eingeschaltet werden soll: PORTC |= (1 << n), wobei n zwischen 0 und 7 liegt. Zum Ausschalten: PORTC &= ~(1 << n). Macht das ganze etwas übersichtlicher
-
Thread
Assembler-Kode Optimierung
löschen ldi timer, 0x00 ; Timer löschen out PORTD, temp ; PORTD löschen out PORTC, temp ; PORTC löschen anfang: cli ; Globalen Interrupt ausschalten in temp, PINb ; Port B einlesen andi temp, 1 ; mit 1 ver-unden cpi temp, 1 ; Taste1
lschen ldi timer, 0x00 ; Timer lschen out PORTD, temp ; PORTD lschen out PORTC, temp ; PORTC lschen anfang: cli ; Globalen Interrupt ausschalten in temp, PINb ; Port B einlesen sbrc temp,0 ; sbrc = ueberspringe den nächsten Befehl wenn bit 0
-
Thread
Breakpoint im AVR Studio wird nicht gesetzt
(buffer[6] >= 70)) { PORTB &= ~(1 << PB3); PORTB |= (1 << PB2); PORTC |= (1 << PC5); PORTD |= (1 << PD7); PORTC |= (1 << PC3); schedule++; } break; //digital value of 8 case 8: if((buffer[7] <= 180) && (
(buffer[9] >= 70)) { PORTB &= ~(1 << PB3); PORTC &= ~(1 << PC5); PORTD |= (1 << PD7); PORTC |= (1 << PC3); PORTB |= (1 << PB2); schedule++; } break; //digital value of 0 case 11:
-
Thread
Platinen Belichter
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
-
Thread
if Abfrage in main() ignoriert?
_20_ms = 0; if(Second==5) PORTC ^= (1<<PC1); } }[/c] Also so funktioniert es. Jemand eine Idee? Mfg JTR
.also mach lieber if(Second>4) PORTC ^= (1<<PC1);
-
Thread
Intertechno Funksteckdosen per AVR steuern
Porta.5 , Rs = Porta.4 Cursor Off Cls Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 Config Portc.4 = Output Portc.4 = 1 Dim Position As Byte Dim Abfrage As Byte Dim Stu2 As Byte Dim Min2 As Byte Dim Sec2 As Byte Dim Teil_st As String * 2 Dim Teil_min As String * 2 Dim Teil_min1 As String
dritter grupper wäre 1 + 2*4 = 9 = 1001 '######################################### Config Portc.0 = Output Funkpin Alias Portc.0 'datapin Funkcode_complete = "" '========= Anfang Hauptprogramm ==================================== Do If Sec2 <> Zahl
-
Thread
Drehzahlmesser Digital Simson s51 an Zündanlage (Vape)
Elseif A > 6000 Then Portc = &B00111111 Portd.6 = 0 Portd.7 = 0 Elseif A > 5000 Then Portc = &B00011111 Portd.6 = 0 Portd.7 = 0 Elseif A > 4000 Then Portc = &B00001111 Portd.6 = 0 Portd.7 = 0 Elseif A > 3000 Then Portc = &B00000111 Portd.6 = 0 Portd.7 = 0 Elseif A > 2000 Then Portc = &B00000011 Portd.6 = 0 Portd.7 = 0 Elseif A > 1000 Then Portc = &B00000001 Portd.6 = 0 Portd.7 =
-
Thread
SRAM auslesen zu langsam.
: PORTB(PB0 - PB7) = Adresse0 - Adresse7 (SRAM) PORTA(PA1 - PA7) = Adresse8 - Adresse14 (SRAM) PORTC(PC0 - PC7) = Daten DQ0 - DQ7 (SRAM) ich habe ein Problem mit meinem C code und dem auslesen von SRAM Bausteine. Ich befülle diese (4st. à 32Kx8Bit -> 1MB) davor via RS232 mit Daten. Diese Daten
to disable the Write Enable Pin in SRAM (LOW active). _delay_us(0.05); //Time to set Data into PORTC from SRAM. Data = PINC; //Get Data from SRAM, saved in var Data. DDRC = 0xFF; //Set PORTC back to Output. PORTB = 0; //Clear Low Nibble Address. PORTA = 0; //Clear High Nibble Address
-
Thread
Probleme beim Blinklicht
(1000); PORTC = 0x00; _delay_ms(1000); } } [/c] Zuerst lege ich fest - PORTC = Ausgang ---> DDRC = 0xFF; Alle LEDs an PORTC sollen einmal aufleuchten für 2 Sekunden ---> PORTC = 0xFF; alle PINS aus ---> PORTC = 0x00; Die LED an PINC1 soll aufleuchten - PORTC = 0x02; nach der Pause wieder ausgehen ---> PORTC = 0x00; Folgendes Problem tritt auf - alle Lampen bleiben dauerhaft an. Nur die eine LED,
-
Thread
Probleme mit Datenauswerten von HDD mit Atmega
0x00; //PortB auf Eingänge schalten PORTD &=~ (1<<PD2); // DIOR HDD lesepin auf 0 ziehen PORTC &=~ (1<<PC1); // 8bit Latch für D8-15 aktivieren PORTC |= (1<<PC0); // CLK von Latch High8bit *Hig8 = PINB; PORTC &=~ (1<<PC0); PORTC |= (1<<PC1); // 8bit Latch für D8-15 deaktivieren PORTC &=~ (1<<PC3); // 8bit Latch für D0-7 aktivieren PORTC |= (1<<PC5); // CLK von Latch Low8bit *Low8 = PINB; PORTC &=~ (1<<PC5); PORTC |= (1<<PC3); // 8bit Latch für D0-7 deaktivieren
-
Thread
DS1820 und ATmega32 Bascom Temp immer =0
hwstack = 32 $crystal = 14745600 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0 Config 1wire = Portd.6 Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer Dim Halb As Byte Cls
hwstack = 32 $crystal = 14745600 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0 Config 1wire = Portd.6 Dim Ar(2) As Byte , A As Byte , I As Byte , Temperatur As Integer Dim Halb As Byte Cls
-
Thread
LEDs zwischen zwei Ports - Programmfehler?
$crystal = 1000000 Ddrd = &B11111111 Ddrc = &B11111111 Do Portd = &B11111111 Portc = &B00000000 Waitms 500 Portd = &B00000000 Portc = &B11111111 Waitms 500 Loop
m64def.dat" $crystal = 1000000 Ddrd = &B11111111 Ddrc = &B11111111 Portd = &B11111111 Do Portc = &B00000000 'Einschalten Waitms 500 Portc = &B11111111 'Ausschalten Waitms 500 Loop Weniger Tipparbeit wenn Du &HFF bzw. &H00 verwendest.
-
Thread
Drehimpulsgeber entprellen
crystal = 16000000 $swstack = 50 $hwstack = 50 $framesize = 50 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , _ Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 4 Cls Cursor Off Config Pinb.2 = Input Portb.2 = 1 Config Pinb.4 = Input Portb
-
Thread
LCD Dot-Matrix 122x32 - Befehle ok, aber keine Daten
OUT DDRC = 0xFF; //PORTC: OUT PORTC = 0x00; PORTD = 0x00; //Reset PORTC/D PORTC = 0b00010000; //Reset Display _delay_us(100); PORTC = 0b00000000; _delay_us(100); PORTC = 0b00010000; //Reset
PORTD = 0b10101111; En_L; PORTC = 0b00010011; //Write data to controller 1 En_H; PORTD = 0b10101011; //Data En_L; PORTC = 0b00010101; //Write data to controller 2 En_H; PORTD = 0b10101111; //Data
-
Thread
ATmegaXXXP Versionen Portdefinitionen anders?
PORTC0 ist der Namen, der das Bit 0 im Register PORTC beschreibt. Analog beschreibt PINC0 das Bit 0 im PINC-Register. avr-libc bietet noch zusätzliche ,generische' Aliasnamen wie PC0 an, deren Zweck
darauf verzichten, den alten Krempel anzufassen, ungefähr so: [c] #if defined(PC0) && !defined(PORTC0) # define PORTC0 PC0 #elif defined(PORTC0) && !defined(PC0) # define PC0 PORTC0 #endif [/c] Patches are welcome...
-
Thread
Atmega8 zu schnell/ungenau!
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4 Config Lcdbus = 4 Config Portd.7 = Output Config Portc.0 = Input Config Portc.1 = Input Config Portc.2 = Input Config Portc.3 = Input Config Portc.4 = Input Config Portc.5 = Input Cls Locate 1 , 1 Lcd "blub 1" Locate 2 , 1 Lcd
-
Thread
AVR-Port über Funktionswert konfigurieren
aus, dass die Zentrale nichts darüber weiß und auch nicht wissen soll, dass das auf dem AVR zb der PORTC und dort der Pin 0 ist. Die Zentrale arbeitet einfach nur mit abstrakten, virtuellen Nummern. Es sagt dem AVR: schalte den Anschluss 5 auf Ausgang, und der AVR muss dann selbst wissen, dass das PORTC
DDRB, &PORTB, &PINB, 1<<PB4 }, // 4 { &DDRB, &PORTB, &PINB, 1<<PB5 }, // 5 { &DDRC, &PORTC, &PINC, 1<<PC0 }, // 6 { &DDRC, &PORTC, &PINC, 1<<PC1 }, // 7 { &DDRC, &PORTC, &PINC, 1<<PC2 }, // 8 { &DDRC, &PORTC, &PINC, 1<<PC3 }, // 9 { &DDRC, &PORTC, &PINC, 1<<PC4 },
-
Thread
_delay_ms tut garnichts
Natürlich leuchtet die LED dauerhaft, du hast den Scheiss ja auch so programmiert, zwischen PORTC=0xFF; und PORTC=0x00; steht keine Verzögerung.
Probier mal folgenden Code in der While-Schleife [c] PORTC=0xFF; _delay_ms(1000); PORTC=0x00; _delay_ms(1000); [/c]
-
Thread
_delayus funktioniert nicht wie gewünscht
&= ~(1<<DIGIT2); SevenSegment(minute/10); _delay_us(time_off); PORTB |= (1<<DIGIT1); PORTC |= (1<<SIGNAL_ON_LED); _delay_us(time_on); PORTB &= ~(1<<DIGIT1); SevenSegment(minute%10); PORTC &= ~(1<<SIGNAL_ON_LED); _delay_us(time_off); PORTB |= (1<<DIGIT2); _delay_us
nicht, denn dazwischen liegt noch eine Funktion mit einem Argument einer Modulo-Operation. > PORTC |= (1<<SIGNAL_ON_LED); > _delay_us(time_on); > PORTB &= ~(1<<DIGIT1); > SevenSegment(minute%10); > PORTC &= ~(1<<SIGNAL_ON_LED); >Anbei ein Auszug aus der gekürzten mux_display Funktion
-
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
strcmp() gibt immer "true" zurück
initalisieren sei(); //Globale Interrupts zulassen //Hauptschleife while(1){ //PORTC &= ~((1<<OUT_CLOSE) | (1<<OUT_OPEN)); PORTC |= (1<<OUT_STATUS_LED); _delay_ms(1000); PORTC &= ~(1<<OUT_STATUS_LED); _delay_ms(1000); if (usart_RX_Complete == 1){ /*
)){ PORTC &= ~(1<<OUT_OPEN); PORTC |= (1<<OUT_CLOSE); } PORTC &= ~(1<<OUT_CLOSE); sendString("Cage_Closed"); } */ usart_RX_Complete = 0; } }
-
Thread
deklaration mit define,wie richtig, so doch nicht oder?
Könnte sein, dass beim Atmega32 auf PORTC die JTAG-Pins liegen. Mal über die Fuses den JTAG ausschalten.
[/C] und durch Anwenden aller Textersetzungen entsteht für den Compiler dann der Code [C] PORTC &= ( 1<<PC2 ); [/C] welches er in eine "Clear Bit 2 an PORTC"-Assembler-Instruktion übersetzt.
-
Thread
SPI für ADC MCP3204 auf ATXMega256A3 initialisieren
%%%%*/ void PSIBusIni( void ) { /* Init SS pin as output with wired AND and pull-up. */ PORTC.DIRSET = PIN4_bm; PORTC.PIN4CTRL = PORT_OPC_WIREDANDPULL_gc; /* Set SS output to high. (No slave addressed). */ PORTC.OUTSET = PIN4_bm; /* Initialize SPI master on port C. */ SPI_MasterInit
%%%%%%*/ void PSIBusIni(void) { /* Init SS pin as output with wired AND and pull-up. */ PORTC.DIRSET = PIN4_bm; PORTC.PIN4CTRL = PORT_OPC_WIREDANDPULL_gc; /* Set SS output to high. (No slave addressed). */ PORTC.OUTSET = PIN4_bm; /* Initialize SPI master on port C. */ SPI_MasterInit
-
Thread
Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom
deine BIN - danke): 'Fuer Lochrasterplatine - weniger Kreuzungen: Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.0 , E = Portc.3 , Rs = Portc.5 lg, arne
-
Thread
Atmega16 + 75HC595 Problem
probier mal den code von tuxgraphics [c] #ifdef USE_74595 // SER pin 14: #define S74595_0 PORTC&=~(1<<PORTC5) #define S74595_1 PORTC|=(1<<PORTC5) // RCLK pin 12: #define S74595_RCLKDOWN PORTC&=~(1<<PORTC4) #define S74595_RCLKUP PORTC|=(1<<PORTC4) // SRCLK pin 11: #define S74595_CLOCKDOWN PORTC&=~(1<<PORTC3) #define S74595_CLOCKUP PORTC|=(1<<PORTC3) // Inline assembly, nop = do nothing for a clock cycle. //#define nop() asm volatile("nop\n\t" "nop\n\t"::) #define nop() asm volatile(
-
Thread
AVR AtMega8 Preemtive Scheduler
/timer2 match interrupt enable TIFR |= 0b10000000; DDRC = 0b00110000;// set PORTC PIN 5 and 6 to output pt_function1 = &function1;//assign function adress to pointer sei();// enable interrupts main2: PORTC = 0b00100000; asm volatile("nop"); asm volatile("nop"); asm volatile
Nachahmung von: [c]ISR (TIMER2_COMP_vect) { function1(); } void function1 (void) { PORTC = 0b00110000; }[/c]
-
Thread
ATMega8 und Servo völlig merkwürdiges Verhalten
Was soll das werden?: [c] PORTC ^= (0<<CABINLED); [/c] Der Ausdruck in den Klammern ergibt 0, also wird da gar kein Pin getoggelt.
mikrocontroller_buch/index.html In diesem Fall konkret Band1 Kapitel 4.2.20.4, 4.2.20.6 und 6.7.4 PORTC ^= irgendwas ist eine Kurzform von PORTC = PORTC ^ irgendwas. CABINLED ist DDB5, was wiederum 5 ist. (1<<5) ist eine 1 fünf mal nach links geschoben, also 32. PORTC ^= 32 ändert den Wert
-
Thread
Entprellen..schon alles versucht..Atmega zu schnell?
PORTC = ziffer[z2]; PORTB |= (1<<PB1); // Transi2 = 1 _delay_us(500); // ** ANZEIGE 2 PORTB &=~(1<<PB1); //Transi2 = 0 //********************************************************* PORTC = ziffer[z3]; PORTB |= (1<<PB2); // Transi3 = 1 _delay_us(500); // ** ANZEIGE 3 PORTB &=~(1<<PB2); //Transi3 = 0 //*********************************************************
-
Thread
[AVR] Unerwarteter Compilerfehler mit constexpr
PORTH,&PORTH,&PORTD,&PORTD,&PORTD,&PORTD,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTA,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTC,&PORTD,&PORTG,&PORTG,&PORTG,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTL,&PORTB,&PORTB,&PORTB,&PORTB,&PORTF,&PORTF,&PORTF,&PORTF,&PORTF,&
value); } }; static constexpr PortA { 0 }; static constexpr PortB { 1 }; static constexpr PortC { 2 }; static constexpr PortD { 3 }; static constexpr PortE { 4 }; static constexpr PortF { 5 }; static constexpr PortG { 6 }; static constexpr PortH { 7 }; static constexpr PortI { 8 }; static