-
Thread
Problem mit gosub in Bascom
die routine "gosub a", "gosub a0" sowie ddra und porta weg, geht alles wie nach plan. kann das jemand erklären? portc und portd spinnen eh etwas auffällig rum. sie blinken in anderen programmen herum, auch wenn sie nur auf high und als ausgang konfiguiert werden
hoffe, dass euch das Buch mit meinen Fragen entlassten wird. Ahja: Ich habe den Zeilen bereits den PortC verpasst und angelötet. Auf PortB geht das nicht, denn er kann ja bekanntlich nur 6 Pins ausgeben. Für die Spalten werde ich PortA, PortD und von PortB die Bits 0-3 verwenden. Geht das so klar?
-
Thread
Neuling sucht Antworten :)
wird sehr wahrscheinlich für 24V DC ausgelegt sein. Da MC mit Spannungen von 3,3...5V arbeiten, geht da nix.
F_CPU 8000000U #include <util/delay.h> int main (void){ DDRD=0xFF; DDRC=0x00; PORTC=0x00; PORTC |= (1<<PC7); while(1){ if(PINC & (1<<7)){ PORTD=0x00; }else{ PORTD=0xFF; } } return 0; } [/c] Wenn ich durch den durchflussmesser
-
Thread
Wie kann ich folgenden C-Code mit einer Schleife kürzer machen?
BIT PD1 #define LED_2_PORT PORTB #define LED_2_BIT PB6 #define LED_3_PORT PORTC #define LED_3_BIT PC3 #define LED_4_PORT PORTC #define LED_4_BIT PC4 #define LED_5_PORT PORTC #define LED_5_BIT PC5 #define LED_6_PORT PORTD #define LED_6_BIT
möchte speziell in die for-schleife etwas einbauen, dass dem gerecht wird, wenn ich einige leds an portc, und einige an portd habe. mir gehts darum zu verstehen wie ich veränderbare variablen, statt "PD5, PD6, usw..." verwende.
-
Thread
Drehgeber auf Atmega 88 wandeln
Schreib mal ne Mainloop: PORTC = PIND und dreh mal langsam, ob die 4 Phasen zu sehen sind. Peter
richt = encode_read2(); if (richt != 0){ _delay_ms(50); } } } Nichts geht mehr, was habe ich jetzt schon wieder falsch gemacht?
-
Thread
PINC.0 Geht ständig kaputt
Da der PIN von außen kaputt geht, ist die Schaltung wichtig.
Als Eingang geht er aber als Ausgang ist er kaputt? Einmal bitte die komplette Beschaltung zeigen.
-
Thread
Frage zu Compare Timer des ATTiny 25
Hallo, also es geht um folgendes: Ich bin gerade dabei mich in die Ansteuerung von Servos ein zu arbeiten. Bis jetzt ist mir, das auch ganz klar so weit. Ich hänge ein wenig beim Erzeugen des Impules (H-Pegel für 1
( ++ServoId >= SERVO_ANZAHL ) ServoId = 0; if( ServoId == 0 ) { PORTF = 0x01; PORTC = 0x00; } else if( ServoId < 6 ) PORTF <<= 1; else if( ServoId == 6 ) { PORTF = 0x00; PORTC = 0x01; } else PORTC <<= 1; OCR2 = 57 + value[ServoId];
-
Thread
PIC 16F84A - Speichern und Ausgeben gleichzeitig
die Daten holen. Das ändern des Programmspeicher ist aber auch gefährlich, denn wenn etwas schief geht ist wenn es ganz dumm läuft das Programm gecrasht. Geht auch nicht mit allen PICs. Zum Zugriff auf das EEPROM (und dem Programmspeicher) findest du die vorgehensweise im jeweiligen Datenblatt und
getroffen (rote LEDs / Koordinate 1-8) den PORTB und für Wasser (grüne LEDs / Koordinate 1-8) den PORTC. Von PORTA benutze ich nur Bit 0 und 1 für die Cursor-LEDs. Die Idee mit den Tabellen finde ich super, allerdings wüsste ich nicht genau wie ich das zu programmieren habe. Es wäre sehr nett, wenn
-
Thread
7 Segment Anzeige?!
Config Portc = Output Config Portb = Output Config Portd = Output Segment_1 Alias Portc.0 'Änderung der Portnamen für Schalt Segmente Segment_2 Alias Portc.1 Segment_3 Alias Portc.2 Segment_4 Alias Portc.3 Segment_5 Alias Portc.4 Segment_6 Alias Portc.5 Segment_a Alias Portd.0 'Anderung der Portnamen für Anzeige Segmente Segment_b Alias
-
Thread
ATmega uart via oszillator 1.8 geht irgendwie nicht
zeichen, 0 rcall serout rcall sync sbi ddrc,3 sbi portc,3 ende: rcall Warten cbi portc,3 rcall Warten sbi portc,3 rjmp ende serout: sbis UCSRA,UDRE ; Warten bis UDR für das nächste
@ Spess53 Tja geht irgendwie auch nicht ....mist... hab dir nen Bild dazu gelegt Auf dem Atmega steht Atmega8a-pu, ich hatte gedacht ich hätte den atmega8, das setzen der fusebits geht im myAVR_ProgTool auch nur mit
-
Thread
Kann mir einer Start Hilfe geben?
1000000 Config Portb.0 = Output Config Pind.7 = Input Portd.7 = 1 Config Pinc.1 = Input Portc.1 = 1 Do Loop End Ich komm einfach nicht weiter. Ich will doch blos das die LED leuchtet, wenn ich 1 Taster drücke und dann aus geht wenn ich beide zusammen drücke. Danke erstmal
positive Flanke erzeuge. Ich möchte das die LED nur beim Wechsel eines Tasters von 0 auf 1, an geht. grazie
-
Thread
PIC16F690 PWM Ansteuerung Drehzahl abhängig
einen Interrupt-On-Change macht, am besten INT0 (da spart man weitere Arbeit). Wenn das Signal High geht, wird ein IRQ ausgelöst. Timer 1 stoppen. In dem IRQ wird den Inhalt von Timer1 als Länge der Periode gespeichert. Ist allerdings Timer1IF gesetzt, ist Timer1 übergelaufen - Periode=65535! Anschließend
da oft schon, dann ist das Banking nicht ganz so schwierig. Den Rest schreibe ich in Basic, das geht am schnellsten.
-
Thread
_delay_ms() Atmega8 C
1000000 #include <avr/io.h> #include <util/delay.h> void Initialisieren() { DDRC = 0xff; PORTC = 0xff; } void Status (unsigned char state) { switch (state) { case 1: PORTC = 0xff; PORTC = ~(1<<PC3); break; case 2: PORTC &= ~(1<<PC2); break; case 3: PORTC = ~(1<<PC1); break; case 4: PORTC = ~(1<<PC2); break; } } int main() { Initialisieren(); while(1) { Status(1); _delay_ms(10000);
-
Thread
ICP mit ATmega88 und Multiplexer
(" "); } while(!(PINC&(1 << PC3))); } if (kanal == 1) { PORTC &= ~((1<<PC0) | (1<<PC1) | (1<<PC2)); // Alle Adressleitungen auf 0 } else if(kanal == 2) { PORTC |= (1<<PC0); PORTC &= ~((1<<PC1) | (1<<PC2)); // A auf 1 B
Kanal wählen if (kanal == 4) { kanal = 1; } if (kanal == 1) { PORTC &= ~((1<<PC0) | (1<<PC1) | (1<<PC2)); // Alle Adressleitungen auf 0 } else if(kanal == 2) { PORTC |= (1<<PC0); PORTC &= ~((1<<PC1) | (1<<PC2)); // A auf 1 B
-
Thread
poti messen mit adc
= 2,8) // vierte LED leuchtet { DDRC = 16; PORTC=PORTC &238; } if(ADCW = 3,5) // fünfte LED leuchtet { DDRC = 32; PORTC=PORTC &222; } } [/c]
PORTC &246; } else if(ADC_Read(0) <= 120) // vierte LED leuchtet { DDRC = 16; PORTC=PORTC &238; } else if(ADC_Read(0) <= 150) // fünfte LED leuchtet { DDRC = 32; PORTC=PORTC
-
Thread
AVR wird resetet
****************** MainLoop: SBIC UCSRA, RXC IN MachineState, UDR OUT PORTC, MachineState Mainloop_Exit: RJMP MainLoop ;******************************************************************************************************************************************************* Ich sehe auch das Byte empfangen wird, jedoch geht MachineState sofort wieder auf MachineStopped, so gibt es die Initialisierungsroutine(Reset) vor. Danke für jede Hilfe -- Gruß Karsten
-
Thread
Problem mit Eingang abfragen :(
den Eingang auf D7 gelegt und es funktioniert. Guck mal, welchen AVR Du hast, manche haben auf PORTC das JTAG. Peter
Danke für deine schnelle Hilfe. Habe mein Programm entsprechend deinen Vorschlägen geändert. Jetzt geht es endlich.
-
Thread
RS232 unter C auf Atmega8 konfiguriren
PortB alle Bits ON"); uartPutString("\n pb = PortB alle Bits OFF"); uartPutString("\n PC = PortC alle Bits ON"); uartPutString("\n pc = PortC alle Bits OFF"); uartPutString("\n PD = PortD alle Bits ON"); uartPutString("\n Bx = PortB Bit X ON (X = 0..5)"); uartPutString("\n bx = PortB Bit X OFF (X = 0..5)"); uartPutString("\n Cx = PortC Bit X ON (X = 0..5)"); uartPutString("\n cx = PortC Bit X OFF (X = 0..5)"); uartPutString("\n Dx = PortD Bit X ON (X = 2..7)"); uartPutString("\n dx = PortD Bit X OFF (X = 2..7)"); uartPutString
-
Thread
HD44780 (Pollin DV20208) Zeichenbreite stimmt nicht
define PIN_D7 PINC #define DDR_D7 DDRC #define BIT_D7 PC3 #define PORT_E PORTC #define DDR_E DDRB #define BIT_E PB2 #define PORT_RW PORTC #define DDR_RW DDRB #define BIT_RW PB3 #define PORT_RS PORTC #define DDR_RS DDRB #define BIT_RS
angeschlossen ist. Einschub: OK. Wie legt man fest, dass ein Pin, sagen wir mal der Pin 6 vom PORTC auf Ausgag geschaltet werden soll, und wie wird dieser Pin dann auf 1 gesetzt? Na das geht offenbar so: Weil es sich um den PORTC handelt, findet sich das zugehörige Konfigurationsbit im DDRC. PORTC
-
Thread
Voltmeter Software!
m88def.dat" $hwstack = 32 $swstack = 10 $framesize = 40 Config Portb = Output Config Portc.0 = Input Config Portd = Output Config Adc = Single , Prescaler = Auto Config Timer0 = Timer , Prescale = 256 Enable Timer0 Enable Interrupts On Timer0 Displayinterrupt Dim Disp(4) As
du bei der jeweils nächsten Ziffer die vorhergehende Ziffernanzeige abschalten würdest. ( Das geht in BASCOM? Set Portb.help2 Interessant. Wusste ich gar nicht ) [code] Displayinterrupt: Set Portb.help2 ' jetzige Anzeige ausschalten help2 = help2 + 1
-
Thread
Allgemeine fragen zum ansteuern von Dot-Matrixanzeigen.
= 1 : Return Zeile6: Portd. 5 = 1 : Return Zeile7: Portd. 6 = 1 : Return Spalte1: Portc. 0 = 1 : Return Spalte2: Portc. 1 = 1 : Return Spalte3: Portc. 2 = 1 : Return Spalte4: Portc. 3 = 1 : Return Spalte5: Portc. 4 = 1 : Return End[/code] hier würde praktisch
bestimmte zeilen und spalten auf high bzw auf low setzen. das muss ja > sowieso gemacht werden. > geht das denn nicht einfach alles einzeln? OK. Du willst ein H anzeigen. (Es geht hier nur ums Prinzip wie das H entsteht, im Rechner machst du das anders) Das ist die Matrix 0 . . . .
-
Thread
LEDs leuchten leicht bei 8x8 Register PWM
Portb.1 = 1 Waitus 50 Portb = 0 Portc = 0 Portc.0 = 0 Porta.0 = 1 Porta.0 = 0 Portb.2 = 1 Waitus 50 Portb = 0 Portc = 0 Portc.0 = 0 Porta.0 = 1 Porta.0 = 0
Portb.5 = 1 Waitus 50 Portc = 0 Portc.0 = 0 Porta.0 = 1 Porta.0 = 0 Portb.6 = 1 Waitus 50 Portb = 0 Portc = 0 Portc.0 = 0 Porta.0 = 1 Porta.0 = 0
-
Thread
PIC4550 - Anfänger Problem
Danke, genau das war es ;) Nun geht es.
Die LCD8 Routine gibt es im aktuellen Compiler nicht mehr. Nimm doch die 4Bit Routine, dann geht es auch.
-
Thread
Viele Fragen und ein kleiner Blog
Bist du einer der Kandidaten, in dem es hier http://www.mikrocontroller.net/topic/206951#new geht? MfG Spess
Es geht, es geht Juuuhhhuuuuuuu Ich muss wie hier getippt 63 angeben nicht 32 wie ich es gemacht habe. Hier zählt das Byte nicht das Word. Somit sieht meine Routine nun so aus: [avrasm] ; *****
-
Thread
Timer und Resetprobleme mit Mega16
= 0 ; // rot } erfrischung_an = 1; PORTC |= ( 1 << MAGNET_KALT ); //Magnetventile anschalten PORTC &= ~ ( (1 << MAGNET_TEIL) | (1 << MAGNET_WARM) ) ; } else if (erfrischung_an == 1 & pressed
Hier ist eine Sackgasse. Dort geht es weiter: http://www.mikrocontroller.net/topic/196664
-
Thread
Status abfragen, bevor es ins Hauptprogramm geht / BASCOM
auswerten kann. Dann wollte ich es mit einer Do-Loop Until Schleife im Programm versuchen, das geht auch nicht, da er auch dort nicht in die Routine springt.(?) also wie kann ich es geschickt lösen, dass das Programm erst richtig los geht, wenn der Schalter aud AUS ist? ist sicherlich kinderleicht
0 Config Lcdpin = Pin , Db4 = Portd.7 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portc.0 , Rs = Portc.1 Config Lcd = 20 * 2 Cursor Off Config Timer1 = Timer , Prescale = 1 Config Int0 = Change Dim Reading As Bit Dim Rc_value As Word Dim Value As Single Dim Signal As String
-
Thread
Starten eines Programmes Atmega8
Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portc.0 Led8 Alias Portc.1 Led9 Alias Portc.2 Led10 Alias Portc.3 Taster Alias Portc.4 'Einlesen des Tasters Do If Taster = 1 Then
Led5 Alias Portb.4 Led6 Alias Portb.5 Led7 Alias Portc.0 Led8 Alias Portc.1 Led9 Alias Portc.2 Led10 Alias Portc.3 Taster Alias Portc.4 'Einlesen des Tasters Do If Taster = 1 Then Led10 = 0 End
-
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
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
Gaswarnanlage Tiefgarage
> PORTC = 0b00000001 ich wüsste nicht, dass es in C geht (Binäre schreibweise)..
pcb schrieb im Beitrag #1919832: >> PORTC = 0b00000001 > > ich wüsste nicht, dass es in C geht (Binäre schreibweise).. Tja, dann hast du wohl gerade wieder was gelernt... (Es geht beim avr-gcc, auch wenn das eine Nicht-Standard-Erweiterung
-
Thread
String-Array löschen
die Array's, input und serienr, komplett löschen könnte, würde es sicher funktionieren!! aber wie geht dies?? Vielen Dank im voraus für eure Hilfe!! Hier mein Codeauschnitt: //Variablen definieren uint8_t input[1]; uint8_t serienr[4]; //Codeausschnitt zahler2=0; do { USART_Receive(
USART_Transmit(clear); USART_Transmit("\r\n 2.Ist ein AM2AMP angeschlossen\r\n"); PORTC=0x00; delay_ms(20); if (!Mot_an) { PORTC=0x40; delay_ms(20); if (Mot_an) { USART_Transmit("\r\n Ein
-
Thread
Übelste Anfängerfrage zum AVR GCC Tutorial -> Taster
Falls Taster an PIN PB0 gedrueckt */ /* LED an Port PC5 an- bzw. ausschalten: */ PORTC |= (1<<PC5); } return 0; } [/c]
ich nicht zu doof für die Schaltung war. Mit dieser Lösung (wahrscheinlich nicht wirklich elegant) geht es jedenfalls. Danke für eure Hilfe! [c]while(1){ if (!(PIND & (1<<PINC7))) { PORTC |= (1<<PC5); _delay_ms(1000); PORTC &= ~ (1<<PC5); } } [/c]
-
Thread
Assemler PIN-Nummer an Subroutine übergeben
... toggle: ld r17,Z eor r17,r16 st Z,r17 ret [/avrasm] Geht auch mit X und Y. MfG Spess
toggle_end toggle_6: cpi r18, PORTB brne toggle_7 out PORTB, r17 rjmp toggle_end toggle_7: cpi r18, PORTC brne toggle_8 out PORTC, r17 rjmp toggle_end toggle_8: cpi r18, PORTD brne toggle_error out PORTD, r17 rjmp toggle_end toggle_error: toggle_end: ret [/avrasm]
-
Thread
RFM70-Funkmodul funkt nicht!
[c] void main(void) { CS_high(3000); // CS = high DDRC = 0xFF; // PORTC = Output SPI_Master_Init(); // Init SPI Init_RF_Settings(); // RF Settings while(1) { CS_low(50); // CS = low 50us SPDR = 0x20; // Command
falsh verstehe? Darf der ggf. nur gepulst werden und wenn ich den HIGH lasse, so wie ich es tue, dann gehts nicht? Leider habe ich auch keine Idee, wie ich nun testen kann, weil ich habe kein Equip um zu messen ob da was "on air" passiert. Gruß Odo
-
Thread
atmega8 einzelnen Pin schalten C
ganz easy: BSF PORTC, 1
bingo schrieb: > ganz easy: BSF PORTC, 1 Das muß ein seltsamer C-Compiler sein... bingo schrieb im Beitrag #1914231: > ich vergass zu ergänzen: das geht nur bei den PICs Ach so. Na dann hast du das Thema ja eh schon verfehlt.
-
Thread
USART Mega8 funktioniert, ich verzweifele noch
USART_RX_BUFFER_SIZE]) { if (strncmp(temp, "DL", 2)==0) // Gültiges Zeichen { SETBIT(PORTC,PC0); if (temp[2] == (DIP + 48)) // Ja, richrtige Platine { //CLEARBIT (PORTC,PC0); set_chanel((temp[3]*10)+temp[4]); // Ja, Kanal aus String lesen set_supply
******************* // Byte empfangen SIGNAL (SIG_UART_RECV) { //if (PINC & (1 << PC0)) {PORTC &= ~(1 << PC0);} // LED an? Wenn ja, dan aus machen //else {PORTC |= (1 << PC0);} // Wenn nicht an, dann an machen unsigned char data; data = UDR; // Daten auslesen
-
Thread
PIC24FJ64 ADC Problem
soll. Bei deim ersten Beispiel hängt der PIC dann vor dem "while (TMR1< 100); // 6.25 us" und geht an dort nicht weiter. Muss der Timer noch besonders initialisiert werden? Beim 2ten Beispiel bekomme ich wieder den Wert "0" raus. Ich hab auch die Beispiele von Microchip selbst versucht aber
PORTB = 0b0000000000000000; TRISB = 0b1111111111111001; //RB1-2 = Output, RB0/3-15 = Input PORTC = 0x0000; TRISC = 0xFFFF; PORTD = 0x0000; TRISD = 0xFFFF; PORTE = 0x0000; TRISE = 0xFFFF; PORTF = 0x0000; TRISF = 0xFFFF; PORTG = 0x0000; TRISG = 0xFFFF; T1CON = 0b0000000000110000;
-
Thread
Hum. Roboterhand Part II: codeeffektive kontinuierliche Servoansteuerung
eine position vorgebe, fährt der servo ja mit maximaler geschwindigkeit an seine position - wie (geht das?) kann ich die geschwindigkeit verringern? Beste Grüße Alex
( ++ServoId >= SERVO_ANZAHL ) ServoId = 0; if( ServoId == 0 ) { PORTF = 0x01; PORTC = 0x00; } else if( ServoId < 6 ) PORTF <<= 1; else if( ServoId == 6 ) { PORTF = 0x00; PORTC = 0x01; } else PORTC <<= 1; OCR2 = 57 + value[ServoId];
-
Thread
Steuerung von EA DOGM163 mit einem ATMega32
lcd_init(LCD_DISP_ON); lcd_clrscr(); lcd_puts("LCD Test Line"); while(1) { PORTC |= 2; delayMS(1000); PORTC &= ~2; delayMS(1000); } return(0); } [/c] Was ich mich erwartet habe war, daß ich "LCD Test Line" schreibe, und dann der Display in Sekundentakt
angeschlossen hast. Wenn dein Schaltplan stimmt, dann nicht so wie du es hier beschrieben hast. PORTC ... die JTAGEN Fuse hast du schon abgeschaltet?
-
Thread
C-Biroperationen
if ( PINC & (1<<7) ) PORTD |= _BV(0) ; else PORTD &=~_BV(0) so geht es (Abfrage Bit 7)
falschrum Interpretiert, die Maske baust du dir mit (1<<PINC1), PINC selbst besteht aus dem was an PortC anliegt. Also wenn z.B. High an Pin3 und Pin1 anliegt wäre PINC = 00001010.
-
Thread
Anforderungssammlung CAN Hausbus mit PIC µC
node IDs Rx_ID as longint ' Hauptprogramm initialisieren main: TRISB.7=0 TrisB.6=0 PORTC = 0 ' clear PORTC TRISC = 255 ' set PORTC as input PortB.6=0 ' CAN CS Can_Init_Flags = 0
das so anordne, > dass ich das abflexen kann wenn der Platz mal ned reicht ;-) Klar. wenns net geht gehts hal net, au net schlim... Bis dann, ich geh jetzt schlafen! Timo
-
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
mit Ponny Prog brennen
Mfg Vorsichtshalber mein Programm: $regfile = "m8535.dat" $crystal = 4000000 Config Portc = Output Config Portb = Input Main: Portd.5 = 1 End Also die LED glimmt! Mein Board wo ich das Teste, ist der Programmer von Pollin.
Oh ich habe nen Fehler gefunden^^. PORTD = Output muss das heißen! denke dann geht das! aber trotzdem die Frage muss man da iwas einstellen bei der cfg? oder kann man das ales un angekreuzt lassen?
-
Thread
Frequenzmessung mit Timer0 ohne ICP
Geht der CompareB überhaupt wenn FastPWM eingeschaltet ist? Ist komisch das die Frequenz nur bis 35Hz geht, liegt des am Überlauf?
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
JTAG abstellen bei ATmega16 notwendig, um Port C als IO zu nutzen?
Forumsteilnehmer, ich habe hier ein kleines Problem mit einem ATmega16. [c] DDRC = 0x0f; PORTC = 0x0f; [/c] Das sollte jetzt die unteren vier Pins an Port C auf high schalten, also PC0..3. PC2 und PC3 bleiben aber auf low, und ich nehme jetzt an, dass das mit der Zweitfunktion als JTAG-Pins
Hi >Aber man muss JTAG doch explizit via Fuse-Bit aktivieren, oder? Geht auch per Software. Siehe im Datenblatt: JTAG Interface and On-chip Debug System MfG Spess
-
Thread
ATmega8 Frequenz stimmt nicht
int); void USART_Transmit( unsigned char); void main( void ){ unsigned char a = 'U'; PORTC = (0<<PC3); PORTC = (0<<PC2); USART_Init (MYUBRR); do{ USART_Transmit(a); }while(1); } void USART_Init( unsigned int ubrr){ /* Set baud rate
int); void USART_Transmit( unsigned char); void main( void ){ unsigned char a = 'U'; PORTC = (0<<PC3); PORTC = (0<<PC2); USART_Init (MYUBRR); do{ USART_Transmit(a); }while(1); } void USART_Init( unsigned int ubrr){ /* Set baud rate */ UBRRH = (unsigned
-
Thread
Einzelne Bits mit WinAvr
eigenes Byte: [c] uint8_t schalter, taster, licht; schalter = PORTB&(1<<PORTB1); taster = PORTC&(1<<PORTC2); if (schalter) licht = 1; if (taster) licht = 0; : [/c] Jetzt könnte ein Hacker drauf kommen und alles zusammen in ein Bitfeld hacken, das dann natürlich statt 3 Bytes nur
C-Compiler sowas in seinen Headerfiles bereit stellt. Dass man soetwas selber erstellen kann und wie das geht weiß ich selber Nur für jedes einzelne SFR mir meine eigene Union zu schreiben fände ich etwas aufwändig.
-
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
SED1520 - Pollinkompatibel und flink
Ich musste sogar eine Lupe davorstellen. Aber so kann man wenigstens einigermaßen erkennen worum es geht. Zu dem PS: Ich nehme an damit ist eine bestimmte Sektion auf dieser Webseite gemeint. Wo genau ist diese denn?
sed1520.h" unter dem Kommentar "// port settings": [c]// port settings #define SED1520_DATAPORT PORTC #define SED1520_DATAPIN PINC #define SED1520_DATADDR DDRC #define SED1520_CTRLPORT PORTD #define SED1520_CTRLDDR DDRD #define SED1520_RES 0 #define SED1520_RW (1 << 0
-
Thread
Takterzeugung in Assembler sinnvol?
nicht, der ATM8 könnte dazugehören. Außerdem muss das DDRx Register auf Ausgang gesetzt werden, sonst geht auch nix.
soll er das tun. Für den Rest ist [C] void Burst( unsigned int Ctr ) { while(Ctr) { PORTC |= ( 1 << PC1 ); Ctr--; PORTC &= ~( 1 << PC1 ); } } [/C] perfekt und spielt alle Stückchen die man braucht.